[{"data":1,"prerenderedAt":6158},["ShallowReactive",2],{"/en-us/blog/categories/company/":3,"navigation-en-us":22,"banner-en-us":437,"footer-en-us":452,"company-category-page-en-us":663},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":11,"config":12,"_id":16,"_type":17,"title":9,"_source":18,"_file":19,"_stem":20,"_extension":21},"/en-us/blog/categories/company","categories",false,"",{"title":9,"description":10},"Company","Browse articles related to Company on the GitLab Blog",{"name":9},{"template":13,"slug":14,"hide":15},"BlogCategory","company",true,"content:en-us:blog:categories:company.yml","yaml","content","en-us/blog/categories/company.yml","en-us/blog/categories/company","yml",{"_path":23,"_dir":24,"_draft":6,"_partial":6,"_locale":7,"data":25,"_id":433,"_type":17,"title":434,"_source":18,"_file":435,"_stem":436,"_extension":21},"/shared/en-us/main-navigation","en-us",{"logo":26,"freeTrial":31,"sales":36,"login":41,"items":46,"search":374,"minimal":405,"duo":424},{"config":27},{"href":28,"dataGaName":29,"dataGaLocation":30},"/","gitlab logo","header",{"text":32,"config":33},"Get free trial",{"href":34,"dataGaName":35,"dataGaLocation":30},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":37,"config":38},"Talk to sales",{"href":39,"dataGaName":40,"dataGaLocation":30},"/sales/","sales",{"text":42,"config":43},"Sign in",{"href":44,"dataGaName":45,"dataGaLocation":30},"https://gitlab.com/users/sign_in/","sign in",[47,91,186,191,297,355],{"text":48,"config":49,"cards":51,"footer":74},"Platform",{"dataNavLevelOne":50},"platform",[52,58,66],{"title":48,"description":53,"link":54},"The most comprehensive AI-powered DevSecOps Platform",{"text":55,"config":56},"Explore our Platform",{"href":57,"dataGaName":50,"dataGaLocation":30},"/platform/",{"title":59,"description":60,"link":61},"GitLab Duo (AI)","Build software faster with AI at every stage of development",{"text":62,"config":63},"Meet GitLab Duo",{"href":64,"dataGaName":65,"dataGaLocation":30},"/gitlab-duo/","gitlab duo ai",{"title":67,"description":68,"link":69},"Why GitLab","10 reasons why Enterprises choose GitLab",{"text":70,"config":71},"Learn more",{"href":72,"dataGaName":73,"dataGaLocation":30},"/why-gitlab/","why gitlab",{"title":75,"items":76},"Get started with",[77,82,87],{"text":78,"config":79},"Platform Engineering",{"href":80,"dataGaName":81,"dataGaLocation":30},"/solutions/platform-engineering/","platform engineering",{"text":83,"config":84},"Developer Experience",{"href":85,"dataGaName":86,"dataGaLocation":30},"/developer-experience/","Developer experience",{"text":88,"config":89},"MLOps",{"href":90,"dataGaName":88,"dataGaLocation":30},"/topics/devops/the-role-of-ai-in-devops/",{"text":92,"left":15,"config":93,"link":95,"lists":99,"footer":168},"Product",{"dataNavLevelOne":94},"solutions",{"text":96,"config":97},"View all Solutions",{"href":98,"dataGaName":94,"dataGaLocation":30},"/solutions/",[100,125,147],{"title":101,"description":102,"link":103,"items":108},"Automation","CI/CD and automation to accelerate deployment",{"config":104},{"icon":105,"href":106,"dataGaName":107,"dataGaLocation":30},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[109,113,117,121],{"text":110,"config":111},"CI/CD",{"href":112,"dataGaLocation":30,"dataGaName":110},"/solutions/continuous-integration/",{"text":114,"config":115},"AI-Assisted Development",{"href":64,"dataGaLocation":30,"dataGaName":116},"AI assisted development",{"text":118,"config":119},"Source Code Management",{"href":120,"dataGaLocation":30,"dataGaName":118},"/solutions/source-code-management/",{"text":122,"config":123},"Automated Software Delivery",{"href":106,"dataGaLocation":30,"dataGaName":124},"Automated software delivery",{"title":126,"description":127,"link":128,"items":133},"Security","Deliver code faster without compromising security",{"config":129},{"href":130,"dataGaName":131,"dataGaLocation":30,"icon":132},"/solutions/security-compliance/","security and compliance","ShieldCheckLight",[134,137,142],{"text":135,"config":136},"Security & Compliance",{"href":130,"dataGaLocation":30,"dataGaName":135},{"text":138,"config":139},"Software Supply Chain Security",{"href":140,"dataGaLocation":30,"dataGaName":141},"/solutions/supply-chain/","Software supply chain security",{"text":143,"config":144},"Compliance & Governance",{"href":145,"dataGaLocation":30,"dataGaName":146},"/solutions/continuous-software-compliance/","Compliance and governance",{"title":148,"link":149,"items":154},"Measurement",{"config":150},{"icon":151,"href":152,"dataGaName":153,"dataGaLocation":30},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[155,159,163],{"text":156,"config":157},"Visibility & Measurement",{"href":152,"dataGaLocation":30,"dataGaName":158},"Visibility and Measurement",{"text":160,"config":161},"Value Stream Management",{"href":162,"dataGaLocation":30,"dataGaName":160},"/solutions/value-stream-management/",{"text":164,"config":165},"Analytics & Insights",{"href":166,"dataGaLocation":30,"dataGaName":167},"/solutions/analytics-and-insights/","Analytics and insights",{"title":169,"items":170},"GitLab for",[171,176,181],{"text":172,"config":173},"Enterprise",{"href":174,"dataGaLocation":30,"dataGaName":175},"/enterprise/","enterprise",{"text":177,"config":178},"Small Business",{"href":179,"dataGaLocation":30,"dataGaName":180},"/small-business/","small business",{"text":182,"config":183},"Public Sector",{"href":184,"dataGaLocation":30,"dataGaName":185},"/solutions/public-sector/","public sector",{"text":187,"config":188},"Pricing",{"href":189,"dataGaName":190,"dataGaLocation":30,"dataNavLevelOne":190},"/pricing/","pricing",{"text":192,"config":193,"link":195,"lists":199,"feature":284},"Resources",{"dataNavLevelOne":194},"resources",{"text":196,"config":197},"View all resources",{"href":198,"dataGaName":194,"dataGaLocation":30},"/resources/",[200,233,256],{"title":201,"items":202},"Getting started",[203,208,213,218,223,228],{"text":204,"config":205},"Install",{"href":206,"dataGaName":207,"dataGaLocation":30},"/install/","install",{"text":209,"config":210},"Quick start guides",{"href":211,"dataGaName":212,"dataGaLocation":30},"/get-started/","quick setup checklists",{"text":214,"config":215},"Learn",{"href":216,"dataGaLocation":30,"dataGaName":217},"https://university.gitlab.com/","learn",{"text":219,"config":220},"Product documentation",{"href":221,"dataGaName":222,"dataGaLocation":30},"https://docs.gitlab.com/","product documentation",{"text":224,"config":225},"Best practice videos",{"href":226,"dataGaName":227,"dataGaLocation":30},"/getting-started-videos/","best practice videos",{"text":229,"config":230},"Integrations",{"href":231,"dataGaName":232,"dataGaLocation":30},"/integrations/","integrations",{"title":234,"items":235},"Discover",[236,241,246,251],{"text":237,"config":238},"Customer success stories",{"href":239,"dataGaName":240,"dataGaLocation":30},"/customers/","customer success stories",{"text":242,"config":243},"Blog",{"href":244,"dataGaName":245,"dataGaLocation":30},"/blog/","blog",{"text":247,"config":248},"Remote",{"href":249,"dataGaName":250,"dataGaLocation":30},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":252,"config":253},"TeamOps",{"href":254,"dataGaName":255,"dataGaLocation":30},"/teamops/","teamops",{"title":257,"items":258},"Connect",[259,264,269,274,279],{"text":260,"config":261},"GitLab Services",{"href":262,"dataGaName":263,"dataGaLocation":30},"/services/","services",{"text":265,"config":266},"Community",{"href":267,"dataGaName":268,"dataGaLocation":30},"/community/","community",{"text":270,"config":271},"Forum",{"href":272,"dataGaName":273,"dataGaLocation":30},"https://forum.gitlab.com/","forum",{"text":275,"config":276},"Events",{"href":277,"dataGaName":278,"dataGaLocation":30},"/events/","events",{"text":280,"config":281},"Partners",{"href":282,"dataGaName":283,"dataGaLocation":30},"/partners/","partners",{"backgroundColor":285,"textColor":286,"text":287,"image":288,"link":292},"#2f2a6b","#fff","Insights for the future of software development",{"altText":289,"config":290},"the source promo card",{"src":291},"/images/navigation/the-source-promo-card.svg",{"text":293,"config":294},"Read the latest",{"href":295,"dataGaName":296,"dataGaLocation":30},"/the-source/","the source",{"text":9,"config":298,"lists":299},{"dataNavLevelOne":14},[300],{"items":301},[302,307,313,315,320,325,330,335,340,345,350],{"text":303,"config":304},"About",{"href":305,"dataGaName":306,"dataGaLocation":30},"/company/","about",{"text":308,"config":309,"footerGa":312},"Jobs",{"href":310,"dataGaName":311,"dataGaLocation":30},"/jobs/","jobs",{"dataGaName":311},{"text":275,"config":314},{"href":277,"dataGaName":278,"dataGaLocation":30},{"text":316,"config":317},"Leadership",{"href":318,"dataGaName":319,"dataGaLocation":30},"/company/team/e-group/","leadership",{"text":321,"config":322},"Team",{"href":323,"dataGaName":324,"dataGaLocation":30},"/company/team/","team",{"text":326,"config":327},"Handbook",{"href":328,"dataGaName":329,"dataGaLocation":30},"https://handbook.gitlab.com/","handbook",{"text":331,"config":332},"Investor relations",{"href":333,"dataGaName":334,"dataGaLocation":30},"https://ir.gitlab.com/","investor relations",{"text":336,"config":337},"Trust Center",{"href":338,"dataGaName":339,"dataGaLocation":30},"/security/","trust center",{"text":341,"config":342},"AI Transparency Center",{"href":343,"dataGaName":344,"dataGaLocation":30},"/ai-transparency-center/","ai transparency center",{"text":346,"config":347},"Newsletter",{"href":348,"dataGaName":349,"dataGaLocation":30},"/company/contact/","newsletter",{"text":351,"config":352},"Press",{"href":353,"dataGaName":354,"dataGaLocation":30},"/press/","press",{"text":356,"config":357,"lists":358},"Contact us",{"dataNavLevelOne":14},[359],{"items":360},[361,364,369],{"text":37,"config":362},{"href":39,"dataGaName":363,"dataGaLocation":30},"talk to sales",{"text":365,"config":366},"Get help",{"href":367,"dataGaName":368,"dataGaLocation":30},"/support/","get help",{"text":370,"config":371},"Customer portal",{"href":372,"dataGaName":373,"dataGaLocation":30},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":375,"login":376,"suggestions":383},"Close",{"text":377,"link":378},"To search repositories and projects, login to",{"text":379,"config":380},"gitlab.com",{"href":44,"dataGaName":381,"dataGaLocation":382},"search login","search",{"text":384,"default":385},"Suggestions",[386,388,392,394,398,402],{"text":59,"config":387},{"href":64,"dataGaName":59,"dataGaLocation":382},{"text":389,"config":390},"Code Suggestions (AI)",{"href":391,"dataGaName":389,"dataGaLocation":382},"/solutions/code-suggestions/",{"text":110,"config":393},{"href":112,"dataGaName":110,"dataGaLocation":382},{"text":395,"config":396},"GitLab on AWS",{"href":397,"dataGaName":395,"dataGaLocation":382},"/partners/technology-partners/aws/",{"text":399,"config":400},"GitLab on Google Cloud",{"href":401,"dataGaName":399,"dataGaLocation":382},"/partners/technology-partners/google-cloud-platform/",{"text":403,"config":404},"Why GitLab?",{"href":72,"dataGaName":403,"dataGaLocation":382},{"freeTrial":406,"mobileIcon":411,"desktopIcon":416,"secondaryButton":419},{"text":407,"config":408},"Start free trial",{"href":409,"dataGaName":35,"dataGaLocation":410},"https://gitlab.com/-/trials/new/","nav",{"altText":412,"config":413},"Gitlab Icon",{"src":414,"dataGaName":415,"dataGaLocation":410},"/images/brand/gitlab-logo-tanuki.svg","gitlab icon",{"altText":412,"config":417},{"src":418,"dataGaName":415,"dataGaLocation":410},"/images/brand/gitlab-logo-type.svg",{"text":420,"config":421},"Get Started",{"href":422,"dataGaName":423,"dataGaLocation":410},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/compare/gitlab-vs-github/","get started",{"freeTrial":425,"mobileIcon":429,"desktopIcon":431},{"text":426,"config":427},"Learn more about GitLab Duo",{"href":64,"dataGaName":428,"dataGaLocation":410},"gitlab duo",{"altText":412,"config":430},{"src":414,"dataGaName":415,"dataGaLocation":410},{"altText":412,"config":432},{"src":418,"dataGaName":415,"dataGaLocation":410},"content:shared:en-us:main-navigation.yml","Main Navigation","shared/en-us/main-navigation.yml","shared/en-us/main-navigation",{"_path":438,"_dir":24,"_draft":6,"_partial":6,"_locale":7,"title":439,"button":440,"image":444,"config":447,"_id":449,"_type":17,"_source":18,"_file":450,"_stem":451,"_extension":21},"/shared/en-us/banner","is now in public beta!",{"text":70,"config":441},{"href":442,"dataGaName":443,"dataGaLocation":30},"/gitlab-duo/agent-platform/","duo banner",{"config":445},{"src":446},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1753720689/somrf9zaunk0xlt7ne4x.svg",{"layout":448},"release","content:shared:en-us:banner.yml","shared/en-us/banner.yml","shared/en-us/banner",{"_path":453,"_dir":24,"_draft":6,"_partial":6,"_locale":7,"data":454,"_id":659,"_type":17,"title":660,"_source":18,"_file":661,"_stem":662,"_extension":21},"/shared/en-us/main-footer",{"text":455,"source":456,"edit":462,"contribute":467,"config":472,"items":477,"minimal":651},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":457,"config":458},"View page source",{"href":459,"dataGaName":460,"dataGaLocation":461},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":463,"config":464},"Edit this page",{"href":465,"dataGaName":466,"dataGaLocation":461},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":468,"config":469},"Please contribute",{"href":470,"dataGaName":471,"dataGaLocation":461},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":473,"facebook":474,"youtube":475,"linkedin":476},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[478,501,558,587,621],{"title":48,"links":479,"subMenu":484},[480],{"text":481,"config":482},"DevSecOps platform",{"href":57,"dataGaName":483,"dataGaLocation":461},"devsecops platform",[485],{"title":187,"links":486},[487,491,496],{"text":488,"config":489},"View plans",{"href":189,"dataGaName":490,"dataGaLocation":461},"view plans",{"text":492,"config":493},"Why Premium?",{"href":494,"dataGaName":495,"dataGaLocation":461},"/pricing/premium/","why premium",{"text":497,"config":498},"Why Ultimate?",{"href":499,"dataGaName":500,"dataGaLocation":461},"/pricing/ultimate/","why ultimate",{"title":502,"links":503},"Solutions",[504,509,512,514,519,524,528,531,535,540,542,545,548,553],{"text":505,"config":506},"Digital transformation",{"href":507,"dataGaName":508,"dataGaLocation":461},"/topics/digital-transformation/","digital transformation",{"text":135,"config":510},{"href":130,"dataGaName":511,"dataGaLocation":461},"security & compliance",{"text":124,"config":513},{"href":106,"dataGaName":107,"dataGaLocation":461},{"text":515,"config":516},"Agile development",{"href":517,"dataGaName":518,"dataGaLocation":461},"/solutions/agile-delivery/","agile delivery",{"text":520,"config":521},"Cloud transformation",{"href":522,"dataGaName":523,"dataGaLocation":461},"/topics/cloud-native/","cloud transformation",{"text":525,"config":526},"SCM",{"href":120,"dataGaName":527,"dataGaLocation":461},"source code management",{"text":110,"config":529},{"href":112,"dataGaName":530,"dataGaLocation":461},"continuous integration & delivery",{"text":532,"config":533},"Value stream management",{"href":162,"dataGaName":534,"dataGaLocation":461},"value stream management",{"text":536,"config":537},"GitOps",{"href":538,"dataGaName":539,"dataGaLocation":461},"/solutions/gitops/","gitops",{"text":172,"config":541},{"href":174,"dataGaName":175,"dataGaLocation":461},{"text":543,"config":544},"Small business",{"href":179,"dataGaName":180,"dataGaLocation":461},{"text":546,"config":547},"Public sector",{"href":184,"dataGaName":185,"dataGaLocation":461},{"text":549,"config":550},"Education",{"href":551,"dataGaName":552,"dataGaLocation":461},"/solutions/education/","education",{"text":554,"config":555},"Financial services",{"href":556,"dataGaName":557,"dataGaLocation":461},"/solutions/finance/","financial services",{"title":192,"links":559},[560,562,564,566,569,571,573,575,577,579,581,583,585],{"text":204,"config":561},{"href":206,"dataGaName":207,"dataGaLocation":461},{"text":209,"config":563},{"href":211,"dataGaName":212,"dataGaLocation":461},{"text":214,"config":565},{"href":216,"dataGaName":217,"dataGaLocation":461},{"text":219,"config":567},{"href":221,"dataGaName":568,"dataGaLocation":461},"docs",{"text":242,"config":570},{"href":244,"dataGaName":245,"dataGaLocation":461},{"text":237,"config":572},{"href":239,"dataGaName":240,"dataGaLocation":461},{"text":247,"config":574},{"href":249,"dataGaName":250,"dataGaLocation":461},{"text":260,"config":576},{"href":262,"dataGaName":263,"dataGaLocation":461},{"text":252,"config":578},{"href":254,"dataGaName":255,"dataGaLocation":461},{"text":265,"config":580},{"href":267,"dataGaName":268,"dataGaLocation":461},{"text":270,"config":582},{"href":272,"dataGaName":273,"dataGaLocation":461},{"text":275,"config":584},{"href":277,"dataGaName":278,"dataGaLocation":461},{"text":280,"config":586},{"href":282,"dataGaName":283,"dataGaLocation":461},{"title":9,"links":588},[589,591,593,595,597,599,601,605,610,612,614,616],{"text":303,"config":590},{"href":305,"dataGaName":14,"dataGaLocation":461},{"text":308,"config":592},{"href":310,"dataGaName":311,"dataGaLocation":461},{"text":316,"config":594},{"href":318,"dataGaName":319,"dataGaLocation":461},{"text":321,"config":596},{"href":323,"dataGaName":324,"dataGaLocation":461},{"text":326,"config":598},{"href":328,"dataGaName":329,"dataGaLocation":461},{"text":331,"config":600},{"href":333,"dataGaName":334,"dataGaLocation":461},{"text":602,"config":603},"Sustainability",{"href":604,"dataGaName":602,"dataGaLocation":461},"/sustainability/",{"text":606,"config":607},"Diversity, inclusion and belonging (DIB)",{"href":608,"dataGaName":609,"dataGaLocation":461},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":336,"config":611},{"href":338,"dataGaName":339,"dataGaLocation":461},{"text":346,"config":613},{"href":348,"dataGaName":349,"dataGaLocation":461},{"text":351,"config":615},{"href":353,"dataGaName":354,"dataGaLocation":461},{"text":617,"config":618},"Modern Slavery Transparency Statement",{"href":619,"dataGaName":620,"dataGaLocation":461},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":622,"links":623},"Contact Us",[624,627,629,631,636,641,646],{"text":625,"config":626},"Contact an expert",{"href":39,"dataGaName":40,"dataGaLocation":461},{"text":365,"config":628},{"href":367,"dataGaName":368,"dataGaLocation":461},{"text":370,"config":630},{"href":372,"dataGaName":373,"dataGaLocation":461},{"text":632,"config":633},"Status",{"href":634,"dataGaName":635,"dataGaLocation":461},"https://status.gitlab.com/","status",{"text":637,"config":638},"Terms of use",{"href":639,"dataGaName":640,"dataGaLocation":461},"/terms/","terms of use",{"text":642,"config":643},"Privacy statement",{"href":644,"dataGaName":645,"dataGaLocation":461},"/privacy/","privacy statement",{"text":647,"config":648},"Cookie preferences",{"dataGaName":649,"dataGaLocation":461,"id":650,"isOneTrustButton":15},"cookie preferences","ot-sdk-btn",{"items":652},[653,655,657],{"text":637,"config":654},{"href":639,"dataGaName":640,"dataGaLocation":461},{"text":642,"config":656},{"href":644,"dataGaName":645,"dataGaLocation":461},{"text":647,"config":658},{"dataGaName":649,"dataGaLocation":461,"id":650,"isOneTrustButton":15},"content:shared:en-us:main-footer.yml","Main Footer","shared/en-us/main-footer.yml","shared/en-us/main-footer",{"featuredPost":664,"allPosts":688,"totalPages":6156,"initialPosts":6157},{"_path":665,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":666,"content":674,"config":681,"_id":684,"_type":17,"title":685,"_source":18,"_file":686,"_stem":687,"_extension":21},"/en-us/blog/gitlab-names-bill-staples-as-new-ceo",{"title":667,"description":668,"ogTitle":667,"ogDescription":668,"noIndex":6,"ogImage":669,"ogUrl":670,"ogSiteName":671,"ogType":672,"canonicalUrls":670,"schema":673},"GitLab names Bill Staples as new CEO","Co-founder Sid Sijbrandij transitions to Executive Chair of the Board.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665388/Blog/Hero%20Images/Revised2.png","https://about.gitlab.com/blog/gitlab-names-bill-staples-as-new-ceo","https://about.gitlab.com","article","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab names Bill Staples as new CEO\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2024-12-05\",\n      }",{"title":667,"description":668,"authors":675,"heroImage":669,"date":677,"body":678,"category":14,"tags":679,"updatedDate":677},[676],"Sid Sijbrandij","2024-12-05","__This message from Sid Sijbrandij and Bill Staples was shared with GitLab team members earlier today.__ \n\n__Sid:__ On today’s earnings call, I announced that I am stepping down as CEO and will remain Executive Chair of the Board. I also introduced GitLab’s new CEO, [Bill Staples](https://www.linkedin.com/in/williamstaples/). \n\nAs a Board, we routinely do succession planning. This includes conversations with a number of top executives. We’ve been having these conversations in greater earnest since my cancer returned. Through these discussions, we identified someone uniquely qualified to lead GitLab. I want more time to focus on my cancer treatment and health. My treatments are going well, my cancer is not metastatic, and I'm working towards making a full recovery. Stepping down from a role that I love is not easy, but I believe that it is the right decision for GitLab.\n\nI couldn't be more excited to introduce you to Bill Staples, who will be leading GitLab into its next chapter. Bill will be GitLab’s CEO, effective today. He will also join the GitLab Board as a Director. Bill was most recently a public company CEO at New Relic. During his time there, he significantly increased the value of the company by accelerating revenue and driving increased profitability. He also brings decades of experience in leadership roles at Adobe and Microsoft. When I began speaking with Bill, I was immediately drawn to his customer-centric approach and deep product expertise. As I got to know him further, I knew that his shared value system made him the right person for this role, for our team members, for our customers, and for our shareholders. I feel fortunate that GitLab has found someone with a great leadership track record and strong DevOps expertise to lead GitLab into the future.\n\nWe have come so far from the early days when we launched GitLab.com. We have created the DevOps category and are the leader in the Gartner Magic Quadrant for both vision and execution. Millions of people now use GitLab to deliver software faster and more efficiently. We have integrated AI, Security, and Compliance into our platform to offer our enterprise customers the strongest AI-powered DevSecOps solution. We have also built GitLab in collaboration with our contributors. Last quarter, we had an all-time high of an estimated 1,800 code contributions from the wider community. It is incredible that as GitLab grew, our contributor community grew with us. We have done all of this while being a values-driven company, leading in all-remote work, championing transparency through our public handbook and culture, and co-creating with the wider community.\n\nI feel many things today, but more than anything else, I am grateful. I want to thank our customers. Driving results for them has been at the core of GitLab’s values, and I greatly appreciate their trust in us. I want to thank the wider GitLab community for their trust and enthusiasm. Their tens of thousands of contributions have greatly enhanced GitLab and its value for all users. Thank you, GitLab team members. Your contributions are at the core of GitLab’s success and the value we drive for our customers. Thank you, E-Group. You are amazing partners and collaborators in leading GitLab and our team members to achieve our very best. Thank you, GitLab Board. I have appreciated your support throughout my time as CEO and look forward to our ongoing partnership as I continue to serve as Executive Chair. And, thank you, Bill. I am excited for you to lead our next phase of growth. I am here to support you and the company in GitLab’s next chapter!\n\nI couldn't be more thrilled about Bill and what's ahead for GitLab with him at the helm. We have an incredible opportunity in front of us. Software has never mattered more, and GitLab is well-positioned to be the platform that best enables folks to create, secure, and operate it. I look forward to staying part of the company and being actively involved wherever Bill can use me. \n\n__Bill:__ Thanks, Sid, for the warm welcome! I greatly admire you and what you have accomplished. Very few people in the world have built a $10B market-cap technology company, taken it public, and scaled it to $750M in run-rate revenue. You have done incredible things with GitLab, and I’m grateful you will continue to play a meaningful role in the company. I appreciate your trust in me and commit to building upon the successes you and others should rightfully celebrate. \n\nI am so excited about GitLab and the opportunity ahead of us. Over the coming decade, we will see software-driven transformation around the world as AI accelerates and transforms the software revolution already in motion. GitLab and our mission are going to be more important than ever. I look forward to working with this team to scale GitLab well beyond where it is today.\n",[680],"news",{"slug":682,"featured":15,"template":683},"gitlab-names-bill-staples-as-new-ceo","BlogPost","content:en-us:blog:gitlab-names-bill-staples-as-new-ceo.yml","Gitlab Names Bill Staples As New Ceo","en-us/blog/gitlab-names-bill-staples-as-new-ceo.yml","en-us/blog/gitlab-names-bill-staples-as-new-ceo",[689,708,730,750,769,790,811,833,855,876,898,919,940,962,980,1002,1023,1046,1067,1086,1107,1128,1147,1167,1188,1207,1226,1246,1266,1285,1304,1323,1342,1363,1383,1404,1423,1444,1465,1486,1506,1525,1543,1564,1584,1603,1623,1643,1662,1679,1698,1717,1737,1756,1775,1794,1814,1832,1852,1870,1890,1909,1928,1948,1969,1989,2010,2031,2050,2070,2090,2109,2127,2148,2166,2186,2207,2227,2247,2268,2287,2306,2325,2346,2363,2382,2402,2421,2440,2460,2479,2499,2518,2537,2557,2575,2594,2612,2631,2648,2667,2686,2705,2725,2745,2764,2783,2802,2821,2839,2858,2877,2897,2917,2935,2953,2971,2991,3009,3029,3049,3069,3086,3106,3123,3141,3161,3180,3199,3219,3237,3256,3275,3294,3311,3329,3348,3366,3384,3402,3422,3441,3460,3480,3499,3517,3537,3555,3574,3592,3611,3631,3649,3667,3686,3705,3724,3743,3762,3781,3800,3819,3838,3858,3876,3895,3914,3932,3950,3969,3988,4007,4028,4048,4068,4085,4104,4122,4141,4159,4177,4196,4215,4233,4249,4268,4287,4306,4324,4341,4359,4378,4396,4416,4434,4452,4470,4488,4506,4522,4541,4560,4579,4595,4612,4630,4648,4666,4685,4702,4720,4739,4758,4777,4794,4813,4831,4849,4867,4886,4904,4922,4940,4959,4977,4995,5013,5031,5049,5066,5085,5103,5119,5137,5155,5174,5193,5210,5227,5245,5263,5282,5299,5317,5335,5353,5370,5388,5406,5424,5442,5459,5476,5492,5509,5527,5545,5563,5580,5598,5616,5633,5651,5669,5688,5707,5724,5741,5760,5778,5795,5812,5829,5846,5864,5882,5899,5916,5934,5952,5969,5986,6003,6020,6037,6054,6071,6088,6105,6122,6139],{"_path":690,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":691,"content":697,"config":702,"_id":704,"_type":17,"title":705,"_source":18,"_file":706,"_stem":707,"_extension":21},"/en-us/blog/our-privacy-policy-has-been-updated",{"title":692,"description":693,"ogTitle":692,"ogDescription":693,"noIndex":6,"ogImage":694,"ogUrl":695,"ogSiteName":671,"ogType":672,"canonicalUrls":695,"schema":696},"Our Privacy Policy has been updated","Our updated Privacy Policy clarifies our existing data processing activities.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664472/Blog/Hero%20Images/gitlabflatlogomap.png","https://about.gitlab.com/blog/our-privacy-policy-has-been-updated","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Our Privacy Policy has been updated\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2023-06-14\",\n      }",{"title":692,"description":693,"authors":698,"heroImage":694,"date":700,"body":701,"category":14},[699],"GitLab","2023-06-14","As part of our commitment to keeping our policies current, we made some updates to our [Privacy Policy](/privacy/) on June 14, 2022.  These updates are intended to clarify our existing data processing activities and to provide information on processing that may derive from new features.  Through this update, we continue to provide transparency to our data processing activities, in line with an evolving privacy landscape.  Specifically, these policy updates include the following:\n\n- Clarification about which processing activities apply to each respective GitLab product;\n- Information about when personal data may be collected to verify someone’s identity to enable certain product features;\n- Clarification about what personal data is collected to provide a license and maintain a subscription; \n- Additional information regarding our Service Usage data collection practices, and the inclusion of certain processing activities, such as Event Analytics and Call Recordings;\n- Additional information regarding the purposes for which personal data is collected;\n- Minor updates regarding our legal basis for processing your personal data in the European Union; \n- Updates to our data retention practices for inactive accounts; \n- Clarification about how to delete your personal data at GitLab and how deletion is effectuated for public projects; \n- An additional notice that details our processing and your rights under the California Consumer Privacy Act, including CCPA metrics reporting;\n\nOverall, we believe that these updates will empower our users to make informed decisions about their personal data.  Please visit the complete text of our Privacy Policy and [Cookie Policy](/privacy/cookies/) to learn more about how GitLab processes personal data and your rights and choices regarding such processing.\n",{"slug":703,"featured":6,"template":683},"our-privacy-policy-has-been-updated","content:en-us:blog:our-privacy-policy-has-been-updated.yml","Our Privacy Policy Has Been Updated","en-us/blog/our-privacy-policy-has-been-updated.yml","en-us/blog/our-privacy-policy-has-been-updated",{"_path":709,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":710,"content":716,"config":724,"_id":726,"_type":17,"title":727,"_source":18,"_file":728,"_stem":729,"_extension":21},"/en-us/blog/rate-limitation-for-unauthorized-users-projects-list-api",{"title":711,"description":712,"ogTitle":711,"ogDescription":712,"noIndex":6,"ogImage":713,"ogUrl":714,"ogSiteName":671,"ogType":672,"canonicalUrls":714,"schema":715},"Rate limitations for unauthorized users of the Projects List API","Learn details about upcoming changes for unauthenticated users of the Projects List API.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664087/Blog/Hero%20Images/tanukicover.jpg","https://about.gitlab.com/blog/rate-limitation-for-unauthorized-users-projects-list-api","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Rate limitations for unauthorized users of the Projects List API\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Christina Lohr\"}],\n        \"datePublished\": \"2023-04-10\",\n      }",{"title":711,"description":712,"authors":717,"heroImage":713,"date":719,"body":720,"category":14,"tags":721},[718],"Christina Lohr","2023-04-10","\n\nStarting on May 22 for self-managed GitLab, and May 8 for GitLab.com, unauthenticated users will be subject to rate limitations when using the Projects List API. This change has been made to ensure the stability and reliability of our platform for all users.\n\n**Note:** Authorized users are not affected by this change.\n\n## What is the the Projects List API?\n\nThe Projects List API provides information about GitLab projects, including name, description, and other metadata. This API is widely used by our community, including researchers, developers, and integrators, to retrieve and analyze information about GitLab projects. We value this usage and aim to support it as much as possible.\n\n## Rate limitation details\n\nIn recent months, we have observed that the frequency and intensity of requests made by unauthenticated, also known as anonymous, users to the Projects List API have increased significantly. This has resulted in an increased load on our servers, which has impacted the performance and stability of our platform for all users. To address this issue, we have decided to introduce rate limitations for unauthenticated users.\n\nAs a consequence of this change, unauthenticated users of the Projects List API will be limited to 400 requests per 10 minutes per unique IP address on GitLab.com. If an unauthenticated user exceeds this limit, the user will receive a \"429 Too Many Requests\" response. On GitLab.com, this limit cannot be changed. Users of self-managed GitLab instances have the same rate limitation set by default, but [admins can change the rate limits](https://docs.gitlab.com/ee/administration/settings/rate_limit_on_projects_api.html#rate-limit-on-projects-api) as they see fit via the UI or the application settings API. They can also set the rate limit to zero, which acts as if there is no rate limitation at all.\n\nWe understand that this change may impact some of our users who rely on the Projects List API, and we apologize for any inconvenience this may cause. We encourage users who need to make more than 400 requests per 10 minutes to the Projects List API to [sign up for a GitLab account](/pricing/), which provides higher rate limits and other benefits, such as access to additional APIs and integrations.\n\nIf you have any questions or concerns about this change, please do not hesitate to [leave feedback in this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/404611).\n",[722,723,680],"product","features",{"slug":725,"featured":6,"template":683},"rate-limitation-for-unauthorized-users-projects-list-api","content:en-us:blog:rate-limitation-for-unauthorized-users-projects-list-api.yml","Rate Limitation For Unauthorized Users Projects List Api","en-us/blog/rate-limitation-for-unauthorized-users-projects-list-api.yml","en-us/blog/rate-limitation-for-unauthorized-users-projects-list-api",{"_path":731,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":732,"content":737,"config":744,"_id":746,"_type":17,"title":747,"_source":18,"_file":748,"_stem":749,"_extension":21},"/en-us/blog/gitlab-community-forks",{"title":733,"description":734,"ogTitle":733,"ogDescription":734,"noIndex":6,"ogImage":713,"ogUrl":735,"ogSiteName":671,"ogType":672,"canonicalUrls":735,"schema":736},"Community forks: A new, easier way to contribute to GitLab","Learn how we tackled a number of pain points and introduced an alternative to personal forks for open-source community contributions.","https://about.gitlab.com/blog/gitlab-community-forks","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Community forks: A new, easier way to contribute to GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Lee Tickett\"}],\n        \"datePublished\": \"2023-04-04\",\n      }",{"title":733,"description":734,"authors":738,"heroImage":713,"date":740,"body":741,"category":14,"tags":742},[739],"Lee Tickett","2023-04-04","\nAt GitLab, we believe [everyone can contribute](/company/mission/#mission).\nIn my role, as a member of GitLab's Contributor Success team, I'm focused on ensuring that contributing to GitLab is as easy and rewarding as possible. In this article, I will share a recent experiment in improving the GitLab contributor experience for community members: community forks.\nI'll explain what they are and, more importantly, the positive impact we've seen community forks have on contirbutions to GitLab.\n\n## What is a community fork?\n\nGitLab team members and wider community members have different levels of access to canonical GitLab projects. GitLab team members can contribute directly to the GitLab codebase; wider community members need to work from forks in order to contribute. This leads to two very different experiences. If you'd previously tried to contribute to GitLab from a personal fork, you probably encountered one of the following frustrations:\n\n* You need to fork the project before you can begin working on a code contribution. (This can take a while for big projects such as\n  [GitLab](https://gitlab.com/gitlab-org/gitlab) and [www-gitlab-com](https://gitlab.com/gitlab-com/www-gitlab-com/).)\n* Collaboration is \"opt-in\". That is, a contributor must manually opt-in to allow maintainers to push commits to their merge requests,\n  and community members cannot push commits to team member branches.\n* Free tier quotas apply to individual contributors' forks. This can create a challenge when frequent contributors use up their free CI minutes allocation.\n* Personal forks need to be regularly updated (rebased) against the canonical projects.\n\nTo address issues like these in the past, we'd developed and introduced solutions like [cost factors](https://docs.gitlab.com/ee/ci/pipelines/cicd_minutes.html#cost-factor-for-community-contributions-to-gitlab-projects). Those worked to alleviate individual pain points, but our team wanted to test another idea, one we thought could address a number of these contribution hurdles at once.\n\nDrawing inspiration from [Moshe Weitzman](https://gitlab.com/weitzman) and a [similar solution from the Drupal project](https://gitlab.com/drupalspoons/webmasters/-/blob/master/docs/onboarding_user.md),\nwe imagined establishing a \"community fork\" of GitLab. Instead of working on innumerable, individual, isolated forks of GitLab,\nwider community members could **all** contribute to a **single, shared fork** of GitLab available to everyone.\n\n## Building the first fork\n\nI spun up an [issue](https://gitlab.com/gitlab-org/gitlab/-/issues/378608) and started to bounce ideas around.\nWe were sure to involve the GitLab security team and the wider community before starting an experiment.\nAfter some conversations, I took a [bias for action](https://handbook.gitlab.com/teamops/decision-velocity/#bias-for-action) and created the first community fork.\nI shared this with a few regular community contributors (thank you, [Marco](https://gitlab.com/zillemarco) and [Niklas](https://gitlab.com/Taucher2003) for beta testing and now also maintaining the forks).\nAfter a few weeks, we didn't encounter any problems, so we started spinning up forks of more GitLab projects, and invited more community members to join us.\n\nWe believe community forks have the following effects (you'll note that these tie back to the contribution challenges outlined above):\n\n* **Promote collaboration**\n  * Community members and team members can work on the same merge request (pushing commits to eachother's branches).\n  * They can also take over stuck/idle merge requests (from each other and from team members).\n* **Remove blockers**\n  * Personal CI minute and storage quotas do not apply to the community forks as they are part of the [GitLab for Open Source Program](https://about.gitlab.com/handbook/marketing/developer-relations/community-programs/opensource-program/#gitlab-for-open-source-program)\n  which provides GitLab Ultimate tier benefits (including larger quotas).\n* **Improve efficiency**\n  * There is no longer a need to create a personal fork to get started contributing.\n  * Danger runs automatically, without the need to configure personal access tokens and CI variables.\n  * Pull mirroring keeps the community forks up to date, without regular manual rebasing.\n\n## What's next for community forks?\n\nThe experiment was considered a success based on the following:\n\n* The problems identified and effects predicted were confirmed.\n* Adoption has been simple. \n* Feedback has been positive (both from community members and GitLab team members).\n* No blocking issues/concerns have been identified.\n\nThus, we are moving from \"experiment\" to \"production\".\n\nThe community forks concept forms part of my team's Q1 (February - April) objectives and key results (OKRs).\nAs such, we have started updating the documentation and contributor guides and looking at opportunities\nfor automation and promotion (for example, via [`@gitlab-bot`](https://gitlab.com/gitlab-org/quality/triage-ops/-/merge_requests/1993)).\n\nWe're also looking for opportunities to handle forks differently in the product.\nFor example, there are several areas (such as the WebIDE) that only check for personal forks and don't consider other types of fork.\nSome backend [pre-requisite work](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112167) has already started to facilitate this.\n\nWe have been working on automating and managing the community forks via Terraform.\nThis will make the process quicker, easier, and less prone to human error.\n\nThe Contributor Success team is already [dogfooding](https://handbook.gitlab.com/handbook/values/#dogfooding) the community forks, and promoting internally,\nhoping that eventually all GitLab team members will use the community forks.\nWe'd love other open source projects to experiment with the concept and it become a new \"norm\" in community-driven open source software development.\n\nYou can read more about the community forks in the [meta project](https://gitlab.com/gitlab-community/meta).\nThere you'll also find instructions for requesting access to community forks.\nIf you have additional questions, why not ask our community members over on [Discord](https://discord.gg/gitlab)?\n",[743,268],"contributors",{"slug":745,"featured":6,"template":683},"gitlab-community-forks","content:en-us:blog:gitlab-community-forks.yml","Gitlab Community Forks","en-us/blog/gitlab-community-forks.yml","en-us/blog/gitlab-community-forks",{"_path":751,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":752,"content":758,"config":763,"_id":765,"_type":17,"title":766,"_source":18,"_file":767,"_stem":768,"_extension":21},"/en-us/blog/gitlab-contributor-days",{"title":753,"description":754,"ogTitle":753,"ogDescription":754,"noIndex":6,"ogImage":755,"ogUrl":756,"ogSiteName":671,"ogType":672,"canonicalUrls":756,"schema":757},"Why we launched GitLab Contributor Days","Inside our decision to create an event where our contributors could gather in person to collaborate.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668213/Blog/Hero%20Images/innersourcing-improves-collaboration-within-an-organization.jpg","https://about.gitlab.com/blog/gitlab-contributor-days","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Why we launched GitLab Contributor Days\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Lee Tickett\"}],\n        \"datePublished\": \"2023-03-29\",\n      }",{"title":753,"description":754,"authors":759,"heroImage":755,"date":760,"body":761,"category":14,"tags":762},[739],"2023-03-29","\n\nGitLab hosted our first Contributor Days event in March as a fringe event of [CfgMgmtCamp](https://cfgmgmtcamp.eu/ghent2023/), which was held at [FOSDEM](https://fosdem.org/).\n\n## What is GitLab Contributor Days?\n\nGitLab Contributor Days is an in-person, unconference-style event geared toward collaboration. Attendees can work on contributions and engage with the wider community and GitLab team members. Mentors are on hand to help answer questions and collaborate on contributions.\n\n## How did GitLab Contributor Days come to be?\nMy role as a member of the GitLab's Contributor Success team is to improve the contributor journey. In the past, as an external GitLab community member, I wrote about [my own contributor journey](https://about.gitlab.com/blog/lee-tickett-my-gitlab-journey/)\nand [how being a GitLab Hero can elevate your company](https://about.gitlab.com/blog/gitlab-heroes-unmasked-elevating-my-company-using-gitlab/). I know how important it is to foster a sense of community among our contributors.\n\n[GitLab's hackathons](https://gitlab.com/gitlab-com/marketing/community-relations/contributor-program/hackathon/-/issues/27) accomplish this virtually, but I missed the in-person interaction. So I explored the idea of community building and contributing at in-person events. I started, as all things do at GitLab, with [an issue outlining the GitLab Contributor Days idea](https://gitlab.com/gitlab-org/quality/contributor-success/team-task/-/issues/63) and my team fully supported me.\n\nWe had a rough date and venue in mind, but after seeing how close it was to FOSDEM, [Nick Veenhof](https://gitlab.com/nick_vh), Director of Contributor Success, suggested tying it in as a fringe event to tap into a pool of potential contributors who could drop in while at the event.\n\n## The GitLab Contributor Days experience\n\nFOSDEM provided a great opportunity for GitLab team members to connect face-to-face – many, for the first time.\nSeeing how much everyone loves GitLab and just enjoyed stopping by, smiling, and taking some stickers, gave me that warm fuzzy feeling – very much the reason I became part of the GitLab community in the first place.\n\nOur fluid format worked well and included:\n* Live pairing with [Marco Zille](/company/team/?department=core-team#zillemarco) from the GitLab Core team\n* [Raimund Hook](https://gitlab.com/stingrayza) working on merge requests at the booth\n* Additional code-pairing throughout the event\n\nWe had a number of contributors spend the whole day with us, and plenty of drop-ins. We also garnered ideas to iterate our next event.\n\n## Collaborating on issues\nThe [curated issue list](https://gitlab.com/gitlab-org/quality/contributor-success/contributor-days/-/issues/1) provided a great starting point for attendees to dig in and collaborate with one another. Next time, we might use Post-It notes so contributors can see the collaboration progress in real time. \n\nHere are the livestreams from some of our collaboration sessions:\n\n* [Live stream 1: Frontend form field validation](https://youtu.be/_smqyD2I5UI)\n* [Live stream 2: Issue triaging](https://youtu.be/LumKxEa32cg)\n* [Live stream 3: Getting started with GDK and GitPod](https://youtu.be/uRJwNLnH_z4)\n\n\nIn addition to those already mentioned above, here are some GitLab team members and community members who participated and their contributions:\n\n* [Felix](https://gitlab.com/l33tname): [improve CSV import docs](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111299)\n* [Marcel](https://gitlab.com/kornegoor): [improve CSV import docs](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111339)\n* [Michael](https://gitlab.com/mikeblum): [fix gitlab/v1 API with database disabled](https://gitlab.com/gitlab-org/container-registry/-/merge_requests/1210)\n* [Laurent](https://gitlab.com/ali_o_kan): [improve devise error message](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111445)\n* [Jon](https://gitlab.com/jdyb): [API to list project uploads](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111444)\n* [Declon](https://gitlab.com/ideclon): [expose Discord via the API](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111342)\n\nI'd like to also thank [Toshaan](https://www.linkedin.com/in/toshaan/) and [Kris](https://www.linkedin.com/in/krisbuytaert/) for hosting us.\n\nStay tuned for an announcement of our next Contributor Days event. Until then, join us on [Discord](https://discord.gg/gitlab) for our weekly livestreams, or for our upcoming [hackathon](/community/hackathon/).\n",[743,268],{"slug":764,"featured":6,"template":683},"gitlab-contributor-days","content:en-us:blog:gitlab-contributor-days.yml","Gitlab Contributor Days","en-us/blog/gitlab-contributor-days.yml","en-us/blog/gitlab-contributor-days",{"_path":770,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":771,"content":777,"config":784,"_id":786,"_type":17,"title":787,"_source":18,"_file":788,"_stem":789,"_extension":21},"/en-us/blog/get-ready-for-new-gitlab-web-ide",{"title":772,"description":773,"ogTitle":772,"ogDescription":773,"noIndex":6,"ogImage":774,"ogUrl":775,"ogSiteName":671,"ogType":672,"canonicalUrls":775,"schema":776},"A first look at the new GitLab Web IDE and remote development experience","The next-generation GitLab Web IDE, available to everyone, will enable faster and more efficient contributions right from your browser.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682545/Blog/Hero%20Images/navin-beta-unsplash.jpg","https://about.gitlab.com/blog/get-ready-for-new-gitlab-web-ide","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"A first look at the new GitLab Web IDE and remote development experience\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Eric Schurter\"}],\n        \"datePublished\": \"2022-12-15\",\n      }",{"title":772,"description":773,"authors":778,"heroImage":774,"date":780,"body":781,"category":14,"tags":782},[779],"Eric Schurter","2022-12-15","\n\nA little while back I wrote about the [future of the GitLab Web IDE](/blog/the-future-of-the-gitlab-web-ide/) and our decision to [rebuild the Web IDE](https://gitlab.com/groups/gitlab-org/-/epics/7683) on top of the open source VS Code project. Our goal: To make it simple for anyone and everyone to contribute, regardless of their development experience. Today, I am happy to announce that we are preparing to launch the new Web IDE experience as a beta, **available to everyone, and enabled by default on GitLab.com.** \n\nDevelopers and non-developers alike need to be able to contribute from anywhere, across multiple projects, and without context switching or the need to manage a local development environment. The new Web IDE is more user-friendly and efficient, combining VS Code's powerful core features with significantly improved performance and the ability to securely connect to a remote development environment directly from the Web IDE.\n\n## Start using the Web IDE Beta December 19\n\nI know you're excited to try it. We've been using it internally and it's fantastic. If you use GitLab.com, expect to see the Web IDE Beta available on December 19, 2022. There's nothing else you have to do, nothing to install, and no configuration necessary. After the launch, the Web IDE Beta will be the default experience across GitLab.\n\n![Screenshot of welcome screen](https://about.gitlab.com/images/blogimages/web-ide-images/ide-welcome-screen.png){: .shadow}\n\n### Available in 15.7 for self-managed users\nFor self-managed users, you'll get the Web IDE Beta as part of the GitLab 15.7 release, which will be available December 22, 2022. It will be behind a [feature flag](https://docs.gitlab.com/ee/user/project/web_ide_beta/index.html#enable-the-web-ide-beta) that admins can enable on an instance-level. \n\n## What can you expect with the new Web IDE? \n\nThe Web IDE Beta introduces a number of new features and improvements over the previous Web IDE, including the following: \n\n- A flexible and customizable interface with collapsible panels and custom themes\n\n![Screenshot of Web IDE interface](https://about.gitlab.com/images/blogimages/web-ide-images/ide-interface.png){: .shadow}\n\n- Contextual actions and drag & drop support in the file panel\n\n![Screenshot of file panel](https://about.gitlab.com/images/blogimages/web-ide-images/ide-file-panel.png){: .shadow}\n\n- Find and replace across all open files\n\n![Screenshot of find and replace](https://about.gitlab.com/images/blogimages/web-ide-images/ide-find-replace.png){: .shadow}\n\n- An interactive document outline and visual history panel\n- Up to 80% reduction in memory usage over the previous Web IDE\n- Improved reliability of tracking changes to files and directories\n- Better support for touchscreen devices such as tablets and (larger) smartphones\n\nThere's much, much more included in the Web IDE Beta, as you'll soon find out. But there's one more big thing to mention... \n\n## Interactive terminal access with remote development\n\nLast but not least, the beta introduces an entirely new category to GitLab by making it possible to securely connect to a remote development environment, run commands in an interactive terminal panel, and get real-time feedback from right inside the Web IDE. See it in action in this short video: \n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/q_xzzY9GT9c\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\nThis is the first feature released as part of our new Remote Development category, with much more planned in the near future. By connecting the Web IDE to a cloud runtime environment, you can unlock the full potential of a web-based IDE without having to manage your own local environment. More information about configuring your remote development environment can be found in our [documentation](https://docs.gitlab.com/ee/user/project/remote_development/) and more details about the Remote Development roadmap can be found on our [direction page](/direction/create/ide/remote_development/). Be on the lookout for a lot more about remote development in the coming months.\n\n## What about the previous Web IDE? \n\nThe Web IDE Beta is ready to handle many of the most frequently performed tasks you could tackle in the existing Web IDE, like committing changes to multiple files and reviewing merge request diffs, but in a much more powerful and familiar interface. We hope you'll enjoy working in the Web IDE Beta as much as we do. \n\nIf there's something missing, or for whatever reason you need to use the previous Web IDE experience, don't worry: We've included a [user preference](https://gitlab.com/-/profile/preferences) that allows you to switch back and forth between the two whenever you want. We'll keep both around until we're out of beta, something we have planned for GitLab 16.0 in May 2023, so you can maximize your efficiency while you adopt the new features. \n\n![Screenshot of user preference](https://about.gitlab.com/images/blogimages/web-ide-images/ide-user-preference.png){: .shadow}\n\n## What's next for the GitLab Web IDE? \n\nOf course, we're not done yet! We will be improving the features you see today and introducing some exciting new features before we come out of beta. We're working on adding support for [VS Code extensions](https://gitlab.com/groups/gitlab-org/-/epics/7685) and [enabling project-wide search](https://gitlab.com/groups/gitlab-org/-/epics/9466), but we are making this beta available to everyone because we want to hear from you. What's the most important missing piece for you? How can we make you more productive in the Web IDE? Let us know in the [feedback issue](https://gitlab.com/gitlab-org/gitlab/-/issues/385787) and we'll keep iterating!\n\nCover image by [Navin Rai](lhttps://unsplash.com/@nicque) on [Unsplash](https://unsplash.com/photos/EgyIbEB7n8Y?utm_source=unsplash&utm_medium=referral&utm_content=creditShareLink)\n{: .note}\n",[723,680,722,783],"workflow",{"slug":785,"featured":6,"template":683},"get-ready-for-new-gitlab-web-ide","content:en-us:blog:get-ready-for-new-gitlab-web-ide.yml","Get Ready For New Gitlab Web Ide","en-us/blog/get-ready-for-new-gitlab-web-ide.yml","en-us/blog/get-ready-for-new-gitlab-web-ide",{"_path":791,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":792,"content":798,"config":805,"_id":807,"_type":17,"title":808,"_source":18,"_file":809,"_stem":810,"_extension":21},"/en-us/blog/introducing-the-gitlab-cli",{"title":793,"description":794,"ogTitle":793,"ogDescription":794,"noIndex":6,"ogImage":795,"ogUrl":796,"ogSiteName":671,"ogType":672,"canonicalUrls":796,"schema":797},"Put `glab` at your fingertips with the GitLab CLI","We just adopted the `glab` project. Here's what's next and how to contribute!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682539/Blog/Hero%20Images/newcli.png","https://about.gitlab.com/blog/introducing-the-gitlab-cli","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Put `glab` at your fingertips with the GitLab CLI\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Kai Armstrong\"}],\n        \"datePublished\": \"2022-12-07\",\n      }",{"title":793,"description":794,"authors":799,"heroImage":795,"date":801,"body":802,"category":14,"tags":803},[800],"Kai Armstrong","2022-12-07","\n\nWe want to integrate GitLab with the tools our developers already use and love. This mission drove us to [adopt GitLab Workflow for VS Code](/blog/use-gitlab-with-vscode/) two years ago and we’ve been iterating on it ever since (spoiler alert: it is an integral part of our [future Web IDE](/blog/the-future-of-the-gitlab-web-ide/)). As we thought about potential next projects, we considered that the common denominator for developers, regardless of their choice of editor, is their terminal.\n\nThis led us to our next charter: to bring GitLab to the CLI to continue streamlining workflows for developers between their most used technologies.\n\nSimilar to our work with VS Code, we wanted to integrate the GitLab DevSecOps platform into all stages of the code writing process. At GitLab, we’re [dedicated to open source](/handbook/engineering/open-source/#we-believe-in-open-source) and we value building in public. It's this commitment to open source and collaboration that helped us take the first step in this project: looking to our community to see if we could partner with them on an existing open source project to bring the CLI to developers faster.\n\n## Improving GitLab’s native CLI experience\n\nI’m happy to share that we’ve adopted the open source project [`glab`](https://gitlab.com/gitlab-org/cli), which will form the foundation of GitLab’s native CLI experience. The GitLab CLI brings GitLab to your terminal, next to [where you’re already working](https://about.gitlab.com/direction/create/editor_extension/#where-we-are-headed) with Git and your code, without switching between applications and browser tabs.\n\n![glab issue list](https://about.gitlab.com/images/blogimages/glabgettingstarted.gif)\n\n### Efficiency at your fingertips\n\nThis integration means developers can now achieve the following tasks without ever leaving the terminal:\n\n- Review issues assigned to you.\n- Create branches and merge requests for those issues.\n- Check the status of pipelines.\n- Approve and merge work.\n\nToo excited? Need a tl;dr RIGHT NOW? We have [GitLab CLI installation](https://gitlab.com/gitlab-org/cli#installation) instructions waiting for you! When setting up [authentication](https://gitlab.com/gitlab-org/cli#authentication), we’ve partnered with 1Password to support their new [Shell Plugins](https://blog.1password.com/shell-plugins/) making it even easier to authenticate your session and keep your credentials secure.\n\n## How did we get here?\n\nMore than two years ago, [Clement Sam](https://gitlab.com/profclems) (a [GitLab Hero](/community/heroes/)) began work on `glab` because he wanted a tool that made his workflow easier and saved time by avoiding the need to switch between browser tabs, IDE and terminal. He initially shared the script with some of his colleagues who also found it helpful. Ultimately, Clement made the decision to open source it and since then over 80 other [contributors](https://github.com/profclems/glab/graphs/contributors) have continued to build on the tool, adding commands to interact with merge requests, issues, pipelines, and more.\n\nWe heard about  `glab` from Clement back in 2020, when the project was still early in its life cycle. We were excited about the area, but couldn’t commit at the time to giving it the long-term support it deserved. Fast forward to 2022. We felt it made sense to check in with Clement to see how the project was progressing. After a few conversations, everyone involved felt that GitLab would be a great home for long-term support and community contributors. We [adopted the project](https://github.com/profclems/glab/issues/983).\n\n## Providing a seamless transition\n\nOver the past several months, we’ve been [transitioning](https://gitlab.com/groups/gitlab-org/-/epics/7514) the project to GitLab. During the transition we’ve learned a lot about what it takes to migrate an active project to new tooling. Our efforts to adapt [GitHub Actions to GitLab CI](https://gitlab.com/groups/gitlab-org/-/epics/7784) have given us great insights into that process as users, and something we’ll be looking to share more about in a future post. We also needed to unwind some previous documentation changes by [converting them back to Markdown](https://gitlab.com/gitlab-org/cli/-/issues/1010), for compatibility with the rest of GitLab’s internal processes.\n\nFurthermore, we knew we needed to provide users with a secure experience. Prior to adoption and launch, our application security team reviewed the project and provided feedback to ensure `glab` was safe, secure, and ready for more users. \n\nWith everything ready to go, we worked across the ecosystem to [update distribution methods](https://gitlab.com/groups/gitlab-org/-/epics/8251) to point to [the new repository](https://gitlab.com/gitlab-org/cli). Our goal was to provide a seamless transition for contributors to continue working, and for users to continue receiving updates.\n\n## Strengthened by community\n\nIt’s taken a small army of people to make the adoption of `glab` complete. A special thanks to [Gary](https://gitlab.com/garyh) who stepped up to lead the engineering efforts on our side. He’s been wonderfully supported by [Kerri](https://gitlab.com/kerrizor), [Tomas](https://gitlab.com/viktomas), and many others inside of GitLab who have had a passion for this project. Our external community has also come along for the ride. We’ve had over [over 35 community contributions](https://gitlab.com/gitlab-org/cli/-/merge_requests?scope=all&state=all&label_name%5B%5D=Community%20contribution), ranging from first-time contributors to seasoned `glab` contributors. (Including Clement, who remains active in the project!).\n\n[GitLab CLI v1.24.1](https://gitlab.com/gitlab-org/cli/-/releases/v1.24.1) contains over 40 new features, bug fixes, security fixes and many more improvements since the last release. You can see the full [changelog](https://gitlab.com/gitlab-org/cli/-/releases/v1.24.1#changelog) on our releases page. Thank you to everyone who’s contributed to make all of this possible.\n\n## Want to get started now?\n\nIf you’re on macOS (and have [Homebrew](https://brew.sh/) installed) the fastest way to get started is by running:\n\n```\nbrew install glab\n```\n\nThis will install the latest version of the GitLab CLI and immediately make it available for you. Not on macOS? We have [installation instructions](https://gitlab.com/gitlab-org/cli#installation) for [Windows](https://gitlab.com/gitlab-org/cli#windows) and [Linux](https://gitlab.com/gitlab-org/cli#linux) too. \n\nAs part of getting things setup, you’ll need to set up the CLI to use a personal access token for [authentication](https://gitlab.com/gitlab-org/cli#authentication). You can do this with the `glab auth login` command and follow the prompts. Alternatively, you can use 1Password Shell Plugins to authenticate your session. With this feature, you can: \n\nSecure your personal access tokens in encrypted 1Password vaults.\nAuthenticate specific terminal sessions to access those tokens by scanning your fingerprint or using other biometrics. \n\nThis approach eliminates the need to type tokens or passwords into the terminal while removing plaintext keys from your disk. Plus, as you work across devices or environments, your key moves with you in 1Password, reducing setup time and simplifying collaboration. [Check out the 1Password documentation to get started.](https://developer.1password.com/docs/cli/shell-plugins/gitlab/).\n\n![1Password documentation](https://about.gitlab.com/images/blogimages/1passworddocumentation.png)\n\n\n## What are we doing next?\n\nNow that we’ve officially released the GitLab CLI, we’re going to spend some time taking a closer look at the issue backlog. We want to learn what the community is looking for in a CLI tool, and where opportunities exist to extend capabilities further into developer workflows. You’ll see the GitLab team more involved in discussing feature proposals and triaging bugs as we continue to ramp up on the project.\n\n## What do you want to see?\n\nThe GitLab CLI was born out of the community, and we want to continue collaborating with all of you in its future direction. If you have ideas for new features or encounter a bug, [open an issue](https://gitlab.com/gitlab-org/cli) and let us know or – in true GitLab form – [everything starts with a merge request](https://gitlab.com/gitlab-org/cli).\n",[722,804,283],"open source",{"slug":806,"featured":6,"template":683},"introducing-the-gitlab-cli","content:en-us:blog:introducing-the-gitlab-cli.yml","Introducing The Gitlab Cli","en-us/blog/introducing-the-gitlab-cli.yml","en-us/blog/introducing-the-gitlab-cli",{"_path":812,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":813,"content":819,"config":827,"_id":829,"_type":17,"title":830,"_source":18,"_file":831,"_stem":832,"_extension":21},"/en-us/blog/gitlab-ci-event-workflows",{"title":814,"description":815,"ogTitle":814,"ogDescription":815,"noIndex":6,"ogImage":816,"ogUrl":817,"ogSiteName":671,"ogType":672,"canonicalUrls":817,"schema":818},"Event-based CI workflows in GitLab","Learn about a proof of concept to automate more with GitLab CI workflows and share your feedback.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669444/Blog/Hero%20Images/kelly-sikkema-lFtttcsx5Vk-unsplash.jpg","https://about.gitlab.com/blog/gitlab-ci-event-workflows","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Event-based CI workflows in GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Grzegorz Bizon\"},{\"@type\":\"Person\",\"name\":\"Jackie Porter\"}],\n        \"datePublished\": \"2022-08-03\",\n      }",{"title":814,"description":815,"authors":820,"heroImage":816,"date":823,"body":824,"category":14,"tags":825},[821,822],"Grzegorz Bizon","Jackie Porter","2022-08-03","\n\nMaybe you have been in a position where there are specific tasks that must kick off in your software development process based on events in the platform or other systems. Perhaps you are even a GitLab CI user and love the flexibility that pipelines offer for project automation and want to be able to extend this to other types of items. Out of the [July 2022 Verify Stage Hackathon](/blog/verify-week-hackathon/), a proof of concept for CI workflows has been released and we are looking for feedback on ways this feature can help make your life easier. \n\n## What are CI worfklows?\n\nThe idea behind the [proof of concept](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91244) is to instrument an event-based service to trigger pipelines. The current instrumentation features a definition of this service in the `.gitlab-ci.yml` and a hook into the existing [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html) GitLab provides today. These components make up the `workflow` definition. \n\n## What can CI workflows do?\n\nThe possibilities for CI workflows are endless. If you wanted to triage issues, a workflow can be set on issue creation. Let’s say you want to automatically run pipelines based on merge request state changes - just use a workflow even in `.gitlab-ci.yml` to start a pipeline when a merge request is made “ready” or someone approved your code in it. \n\nHere is a brief overview of the proof of concept in action: \n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/cwfRI9m3rRs\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## What’s next?\n\nGitLab CI workflows are one component of a broader [GitLab workflow](https://gitlab.com/groups/gitlab-org/-/epics/8349) and automation goals. Up next, we are looking to [formally instrument CI workflows via GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/363384). We also are looking ahead to [Platform Events](https://gitlab.com/gitlab-org/gitlab/-/issues/355658) or [Cloud Events](https://gitlab.com/gitlab-org/gitlab/-/issues/335095), which help extend the number of events to trigger various automations from beyond the existing webhooks/system hooks. \n\nIs this something that you are interested in or have feedback on? Tag `@dhershkovitch` on our [GitLab CI Workflows Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/363384). \n\nCover image by [Kelly Sikkema](https://unsplash.com/photos/lFtttcsx5Vk) on [Unsplash](https://unsplash.com)\n{: .note}\n",[723,722,826],"agile",{"slug":828,"featured":6,"template":683},"gitlab-ci-event-workflows","content:en-us:blog:gitlab-ci-event-workflows.yml","Gitlab Ci Event Workflows","en-us/blog/gitlab-ci-event-workflows.yml","en-us/blog/gitlab-ci-event-workflows",{"_path":834,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":835,"content":841,"config":849,"_id":851,"_type":17,"title":852,"_source":18,"_file":853,"_stem":854,"_extension":21},"/en-us/blog/verify-week-hackathon",{"title":836,"description":837,"ogTitle":836,"ogDescription":837,"noIndex":6,"ogImage":838,"ogUrl":839,"ogSiteName":671,"ogType":672,"canonicalUrls":839,"schema":840},"What we learned during an internal Hackathon Week","The Verify team spent a week on Hackathon projects building new features, Proof of Concepts and cleaning up “dead code”","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682399/Blog/Hero%20Images/marvin-meyer-SYTO3xs06fU-unsplash.jpg","https://about.gitlab.com/blog/verify-week-hackathon","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"What we learned during an internal Hackathon Week\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"James Heimbuck\"}],\n        \"datePublished\": \"2022-07-28\",\n      }",{"title":836,"description":837,"authors":842,"heroImage":838,"date":844,"body":845,"category":14,"tags":846},[843],"James Heimbuck","2022-07-28","\n\nTo inspire the Verify Stage product and engineering teams to solve new problems, we conducted a \"Hackathon Week\" in July 2022. \n\nPrior to the Hackathon, the team spent time brainstorming ideas to solve and enhancements to make. We then collaborated to make those ideas better. For projects with a critical mass of people who wanted to work on them, an engineer took the lead in organizing the work, making sure there was a design (where needed) and doing other unblocking to deliver an outcome. The team also focused on deleting some dead code in the code base to make future development easier. We even offered a prize for the most code/files deleted. Several themes emerged as the team brainstormed, which resulted in some greatly improved Proof of Concepts (POCs) or new features shipped in the product.\n\n## Searching job logs is hard\n\nAt GitLab we use the product to build new features, and we have a very rich build pipeline but not a perfect one. Because of this the team knows how hard it can be to parse through the job logs shown on the job detail page.\n\nOne engineer delivered a POC to make scrolling through failures easier, delivering an MVC for an [open issue](https://gitlab.com/gitlab-org/gitlab/-/issues/343658). Another team worked on adding a simple search and highlight to the job logs page. After seeing the demo we quickly decided that [this](https://gitlab.com/gitlab-org/gitlab/-/issues/367574) was something we could ship and it will roll out during the 15.3 milestone.\n\n## Could this job be faster?\n\nSpeedy and reliable pipelines is something we think a lot about across the stage so it was no wonder we saw several groups thinking about ways to get more job performance data to users.\n\nOn demo day, a POC re-envisioning how the job performance page shows job executions in other pipelines was shown. Before delivering the feature to customers, the team wants to make some improvements and opened [gitlab#367322](https://gitlab.com/gitlab-org/gitlab/-/issues/367322) for a future milestone.\n\nAnother group delivered a POC that took a similar approach on the pipeline editor, which delivers the insights in a context where users can act on data to improve its performance. \n\nWe know failed tests are often the culprit of failed pipelines but debugging the failures can be slowed down simply by the process of finding them. A POC to create a one-click copy of the path of all the failing tests from the Merge Request Test Report widget was developed during our Hackathon Week. This has since been merged and is available on gitlab.com\n\n## Fault Tolerant Runners\n\nThe Runner team recently introduced the GitLab Runner Pod Cleanup as a way to clean up orphaned pods the GitLab Runner Manager has not had a chance to do (like the Runner Manager pod getting evicted). The team delivered a [POC MR](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3512) that lays the foundation for the next iteration toward a Fault Tolerant Runner.\n\n## CI Workflows POC\n\nGitLab has a very flexible way to start a pipeline on any number of events from other pipelines, by schedule and by a commit among other things. Teams may want to run a pipeline on other events, like issue creation, merge request approval, etc. A team headed up by \n[Grzegorz](https://gitlab.com/grzesiek) created an initial concept for GitLab CI workflows. This is a great first step towards the larger goal of creating a full-fledged [GitLab Workflow](https://gitlab.com/groups/gitlab-org/-/epics/8349) solution. Watch the demo:\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/cwfRI9m3rRs\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## Code cleanup\n\nOne of the highest upvoted items from our brainstorming was code cleanup. The team does a great job while working on new features and enhancements in doing what they can to reduce any technical debt and to keep things lean, but \"cruft\" builds up that needs attention from time to time. Over the course of the week, over 1300 lines of code and 4421 MB of database data were deleted by the team.\n\n## Closing thoughts\n\nThis hackathon was an incredible example of iteration, collaboration, and efficiency as individuals worked to deliver new features to solve problems and streamline the codebase. \n\nThese are some of the highlights of the work completed over the course of the week. We would love to hear your thoughts on the pending issues, proof of concept merge requests, and in new issues about features we should build. You can also contribute code to these projects or many others in the next [GitLab Hackathon](https://about.gitlab.com/community/hackathon/) that runs August 2 through August 9 2022.\n\nCover image by [Marvin Meyer](https://unsplash.com/@marvelous) on [Unsplash](https://unsplash.com/photos/SYTO3xs06fU-unspalsh.jpg)\n{: .note}\n\n\n",[847,848,722],"CI","collaboration",{"slug":850,"featured":6,"template":683},"verify-week-hackathon","content:en-us:blog:verify-week-hackathon.yml","Verify Week Hackathon","en-us/blog/verify-week-hackathon.yml","en-us/blog/verify-week-hackathon",{"_path":856,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":857,"content":863,"config":870,"_id":872,"_type":17,"title":873,"_source":18,"_file":874,"_stem":875,"_extension":21},"/en-us/blog/external-postgresql-servers-should-be-upgraded-to-latest-version",{"title":858,"description":859,"ogTitle":858,"ogDescription":859,"noIndex":6,"ogImage":860,"ogUrl":861,"ogSiteName":671,"ogType":672,"canonicalUrls":861,"schema":862},"Upgrade your external PostgreSQL 12 & 13 servers now","External PostgreSQL 12.7- and 13.3- servers used with GitLab should be upgraded to the latest minor version.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669673/Blog/Hero%20Images/engineering.png","https://about.gitlab.com/blog/external-postgresql-servers-should-be-upgraded-to-latest-version","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"External PostgreSQL 12 and 13 servers should be upgraded to the latest minor version\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Yannis Roussos\"}],\n        \"datePublished\": \"2022-06-23\",\n      }",{"title":864,"description":859,"authors":865,"heroImage":860,"date":867,"body":868,"category":14,"tags":869},"External PostgreSQL 12 and 13 servers should be upgraded to the latest minor version",[866],"Yannis Roussos","2022-06-23","\n\nA bug in certain versions of PostgreSQL, called the `use-after-free bug`, can cause segmentation faults. If you are affected, you should upgrade. The affected PostgreSQL versions are:\n\n- PostgreSQL 12 versions earlier than 12.7. The bug was patched in [PostgreSQL 12.7](https://www.postgresql.org/docs/release/12.7/).\n- PostgreSQL 13 versions earlier than 13.3. The bug was patched in [PostgreSQL 13.3](https://www.postgresql.org/docs/release/13.3/).\n\nWhich versions of GitLab could be affected?\n\n- GitLab EE versions 14.9 and later are affected, if your version of PostgreSQL is an affected version.\n- GitLab CE versions 15.1 and later are affected, if your version of PostgreSQL is an affected version.\n- Omnibus GitLab instances using a bundled PostgreSQL server are not affected as they ship with [patched versions of PostgreSQL](https://docs.gitlab.com/ee/administration/package_information/postgresql_versions.html), and no further action is needed.\n\nWe strongly recommend all instances using an affected PostgreSQL version to upgrade to the latest minor version for PostgreSQL version 12 or 13.\n\nFor more detailed information, review our [issue on this problem](https://gitlab.com/gitlab-org/gitlab/-/issues/364763).\n",[826,743],{"slug":871,"featured":6,"template":683},"external-postgresql-servers-should-be-upgraded-to-latest-version","content:en-us:blog:external-postgresql-servers-should-be-upgraded-to-latest-version.yml","External Postgresql Servers Should Be Upgraded To Latest Version","en-us/blog/external-postgresql-servers-should-be-upgraded-to-latest-version.yml","en-us/blog/external-postgresql-servers-should-be-upgraded-to-latest-version",{"_path":877,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":878,"content":884,"config":892,"_id":894,"_type":17,"title":895,"_source":18,"_file":896,"_stem":897,"_extension":21},"/en-us/blog/best-life-best-work",{"title":879,"description":880,"ogTitle":879,"ogDescription":880,"noIndex":6,"ogImage":881,"ogUrl":882,"ogSiteName":671,"ogType":672,"canonicalUrls":882,"schema":883},"Ski first, work later - How to win the burnout battle","How I truly achieved work/life balance with an all-remote async working style.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682336/Blog/Hero%20Images/taylor-peak.jpg","https://about.gitlab.com/blog/best-life-best-work","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Ski first, work later - How to win the burnout battle\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Taylor McCaslin\"}],\n        \"datePublished\": \"2022-06-07\",\n      }",{"title":879,"description":880,"authors":885,"heroImage":881,"date":887,"body":888,"category":14,"tags":889},[886],"Taylor McCaslin","2022-06-07","\n\nIt's 9:13 am and 20 degrees outside in Big Sky, Montana. I'm bundled up in my warm rainbow pride ski suit. Dangling 30 feet in the crisp air, perched on a ski lift, I'm on my way up to a double black diamond run 9,382 feet above sea level. There are few people out this early on a Wednesday morning. I ski off the top of the lift and enjoy a beautifully untracked run of champagne powder snow, fresh from last night's snowstorm. This is a normal start to the workday for me. And I have a bit of a secret to admit, this is exactly why I joined GitLab.\n\n![Taylor on a chair lift at Big Sky Resort](https://about.gitlab.com/images/blogimages/2022-06-04-best-life-best-work/chair-lift.jpg)\n\n## Something's gotta give\n\nRewind two years to January 2020, before I joined GitLab. Before I had materialized my daily skiing routine. Before I moved to Big Sky. Before the global Covid-19 pandemic. I had decided I needed to make a change in my life. I had spent the past decade of my life climbing the startup tech career ladder. Along the way I had sacrificed my health, happiness, and my mental and emotional well-being. I was burnt out. While I don't think I'd change anything going back, I knew the next decade wouldn't sustain that lack of work and life balance. I needed to get back to being the person my friends and family knew: a slim guy with a smile always on his face and a hopeful outlook for the future.\n\n> You’re invited! Join us on June 23rd for the [GitLab 15 launch event](https://page.gitlab.com/fifteen) with DevOps guru Gene Kim and several GitLab leaders. They’ll show you what they see for the future of DevOps and The One DevOps Platform.\n\n## A remote change\n\nGitLab had been on my radar for a number of years as many of my tech friends had become DevOps engineers, but I had not used it myself. What I did know was at the time they were one of the few [truly remote companies with no offices and a global team embracing an async work style](/company/culture/all-remote/tips/#how-it-works-at-gitlab). \n\nWhile I hadn't ever worked remotely before, I knew I liked the idea of not being stuck in a bland office of noisy and distracting open floor layout workspaces surrounded by silly ping pong tables and unlimited snacks. My previous employers thought these things made for a 'supportive environment and 'great work culture'. I couldn't disagree more. It was a scary thought to have less structure, but my previous decade had shown me those offices weren't conducive to my sanity, happiness, or productivity. So I decided, let's go all in.\n\nI knew I wanted to make a big change, so I tested GitLab when I was interviewing. I gauged reactions from my interview panel as I described my desire to move to a ski mountain and balance working and skiing. I was caught by surprise. Every person I interviewed with loved this idea and encouraged me that GitLab's remote and async working style would be supportive of this plan. Just about everyone had a story of how they themselves had adjusted their schedule to add flexibility to their lives. I was convinced. This was the future. \n\n## A global pandemic \n\nTwo months after joining GitLab in January 2020, the pandemic ruined my plans to relocate to a wintry wonderland. I delayed my move, diving into work like many of us did, mainly because there wasn't anything better to do. Fast-forward to December 2020 – it was clear Covid wasn't going away anytime soon. I had gained the Covid 15 lbs. from sheltering in place in my Austin, Texas, apartment for the past nine months. It was time for a change. I needed to prioritize my sanity and health. An outdoor sport like skiing seemed like a relatively low-risk activity. The move was back on. \n\nBy February 2021, I had relocated to Big Sky, 1,600 miles away from the state I had lived in for my entire life. With zero friends and only two bags to a town of 3,000 people. I had visited Big Sky a number of times on ski trips with friends in the years before, and each time the three-to-four day trip never seemed long enough. Now I would be able to call this place my home. \n\n![Welcome sign to Big Sky, Montana](https://about.gitlab.com/images/blogimages/2022-06-04-best-life-best-work/welcome-to-bigsky.jpg)\n\n## A new chapter\n\n2021 was the year of me. I was turning 30, exploring a new life living in a mountain town. It's hard to believe how fast your life can completely change. I went from being depressed and unhappy living a sedentary life in Texas to being out and about on a beautiful mountain nearly daily with a new sense of self. \n\nI've done things I never thought I would, or could, do. I took up hiking. I learned to enjoy the outdoors by visiting Yellowstone National Park, just 30 minutes from my house. I also explored 13 other national and state parks. I learned downhill mountain biking. I rode over 1,000 miles downhill on my mountain bike. I've explored mountains in five states and two countries, and I've skied and biked in the shadow of the Grand Tetons. I skied 186 days at 20 resorts across the last two ski seasons. I went on a combination ski and biking trip to the mountains of Salt Lake City and Moab, Utah, and to the mountains of Canada. Along the way I lost 25 lbs., getting me back to a healthy weight I felt good about. \n\n![Collage of Taylor's adventures while at Gitlab](https://about.gitlab.com/images/blogimages/2022-06-04-best-life-best-work/collage.jpg)\n\n## Happy people do their best work\n\nAnd you know what else is crazy? I've been doing my best work since all this. [GitLab went public](/blog/gitlab-inc-takes-the-devops-platform-public/) last October. I am now establishing and leading [a new machine learning team](/direction/modelops/) at a public company, all from rural Montana. This also presented me with an opportunity to even further embrace remote async life. \n\nWith my new ModelOps team at GitLab, I have a number of team members in APAC, so I decided this past winter to switch to working evenings, embracing some of my favorite GitLab values: [Measure results not hours](https://handbook.gitlab.com/handbook/values/#measure-results-not-hours) and [shifting working hours for a cause](https://handbook.gitlab.com/handbook/values/#shift-working-hours-for-a-cause). This change allows me to ski and mountain bike during the day and, as a night owl, leverage my most productive hours overlapping with more of my colleagues in APAC. \n\n![Taylor biking in Glacier National Park](https://about.gitlab.com/images/blogimages/2022-06-04-best-life-best-work/glacier.jpg)\n\nNow I can join my evening team meetings in person rather than relying on a recording and notes. I always enjoy when I meet with my team members as they always want to know: \"What mountain are you on today?\" It's a simple small talk question, but it's just another way we connect virtually and get to know each other better as people. And, of course, at GitLab we have a Slack channel for everything. I frequently post and share my adventures in #DevSkiOps and #mountainbiking and enjoy swapping photos, tips, and articles with my fellow GitLab skiers and bikers. But let's have the numbers speak for themselves. Here are my '21/'22 ski season metrics, and I can't wait for this summer's mountain biking adventures.  \n\n![Taylor's 2021/22 Ski metrics](https://about.gitlab.com/images/blogimages/2022-06-04-best-life-best-work/slopesapp.jpg)\n\nMy journey to the mountains and switching up my working schedule all showcase my favorite value at GitLab: [Don't wait](https://handbook.gitlab.com/handbook/values/#dont-wait). I think this value applies to our personal lives as much as it does to our professional ones. Life is short, and the pandemic has made that even more real as we've lost so many friends and family so early. Gone are the days of sacrificing your life for 9-5 dead-end jobs. We're realizing life has so much more to offer and employers are increasingly recognizing that happy employees do their best work. \n\nHad you asked me two years ago if I'd see myself living in a small mountain town skiing and biking nearly daily while working at a public company, living my best personal life, and doing the best work of my career, I would have thought you were crazy. But now it's my life. All thanks to the [remote and async lifestyle](/company/culture/all-remote/guide/#the-remote-manifesto) GitLab empowers. And the best part, [we're hiring](/jobs/).\n\n![GitLab Remote Work Promo with Taylor](https://about.gitlab.com/images/blogimages/2022-06-04-best-life-best-work/ski-promo.png)\n",[890,891],"inside GitLab","remote work",{"slug":893,"featured":6,"template":683},"best-life-best-work","content:en-us:blog:best-life-best-work.yml","Best Life Best Work","en-us/blog/best-life-best-work.yml","en-us/blog/best-life-best-work",{"_path":899,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":900,"content":905,"config":913,"_id":915,"_type":17,"title":916,"_source":18,"_file":917,"_stem":918,"_extension":21},"/en-us/blog/splitting-database-into-main-and-ci",{"title":901,"description":902,"ogTitle":901,"ogDescription":902,"noIndex":6,"ogImage":860,"ogUrl":903,"ogSiteName":671,"ogType":672,"canonicalUrls":903,"schema":904},"We are splitting our database into Main and CI","We are splitting our database into Main and CI to improve the scalability and reliability of GitLab.com.","https://about.gitlab.com/blog/splitting-database-into-main-and-ci","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"We are splitting our database into Main and CI\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Fabian Zimmer\"},{\"@type\":\"Person\",\"name\":\"Douglas Alexandre\"}],\n        \"datePublished\": \"2022-06-02\",\n      }",{"title":901,"description":902,"authors":906,"heroImage":860,"date":909,"body":910,"category":14,"tags":911},[907,908],"Fabian Zimmer","Douglas Alexandre","2022-06-02","\nImproving the performance and reliability of GitLab.com has always been a top priority for GitLab. While we continuously make iterative improvements to GitLab and our production architecture, we anticipate making a larger change to improve the scalability and reliability of GitLab.com: We are splitting our single PostgreSQL database into a `main` and a `ci` database.\n\nWe believe this process, also known as [functional decomposition](/company/team/structure/working-groups/database-scalability/#functional-decomposition-split), will increase GitLab's database capacity by roughly 2x and allows GitLab.com to continue to scale.\n\n## When will the split take place and what does this mean for users of GitLab.com?\n\nThis change is planned to take place between Saturday, 2022-07-02, 05:00am UTC and Saturday, 2022-07-02, 09:00am UTC. The implementation of this change is anticipated to include a **service downtime of up to 120 minutes** between Saturday, 2022-07-02, 06:00am to 08:00am UTC. During this time you will experience complete service disruption of GitLab.com.\n\nWe are taking downtime to ensure that the application works as expected following the split and to minimize the risk of any data integrity issues.\n\n## Background\n\nGitLab.com's [database architecture](/handbook/engineering/infrastructure/production/architecture/#database-architecture) uses a single PostgreSQL database cluster. This single cluster (let's call it `main`), consists of a single primary and multiple read-only replicas and stores the data generated by all GitLab features. Database reads can be scaled horizontally through read-only replicas, but writes cannot because PostgreSQL does not support active-active replication natively.\n\nA large portion of all writes are generated by features related to Continuous Integration (CI). So, to scale GitLab.com's database capacity, we are splitting the single PostgreSQL main cluster into two clusters:\n\n1. A Continuous Integration database cluster for all CI-related features (`ci`).\n1. A database cluster for all other features (`main`).\n\nAt a high level, GitLab.com's database architecture is changing like this:\n\n![Illustration of splitting into Main and CI](https://about.gitlab.com/images/blogimages/decomposition-illustration-blog.png){: .center}\n\nYou can learn more by visiting our public epic: [Decompose GitLab.com's database to improve scalability](https://gitlab.com/groups/gitlab-org/-/epics/6168).\n\n## Impact\n\nSplitting our database into `main` and `ci` initially will only impact GitLab.com. To ensure consistency, we plan to enable [decomposition for self-managed GitLab instances](https://gitlab.com/groups/gitlab-org/-/epics/7509) later. While this split is a significant architectural change that we believe will increase GitLab's database capacity by roughly 2x, there are other benefits as well.  \n\n### Increased performance\n\nBy running two separate database clusters, we believe we will increase the overall count of available database connections. This means we can serve more traffic. It also means that during peak hours there is more buffer, which reduces the likelihood of congestion that may cause performance and UX degradations.\n\nAnother significant advantage is that we anticipate we will be able to tune the `main` and `ci` databases independently, allowing us to optimize these different workloads.\n\n### Increased stability\n\nSplitting the database cluster into `main` and `ci` means that `ci` writes are shifting to the `ci` database cluster. We anticipate this will lead to reduced database saturation, which is a major cause of incidents. Consequently, we believe that the overall stability of GitLab.com may increase following the split.\n\nWe believe increased stability means that development teams can spend more time working on generating value through new features and other improvements and less time guarding against potential issues.\n\n### Shipping as fast as ever\n\nA primary objective of this project was to provide tooling to our development teams so that they can continue to develop features that use multiple databases. All of these tools, for example [loose foreign keys](https://docs.gitlab.com/ee/development/database/loose_foreign_keys.html) or new [data migrations for multiple databases](https://docs.gitlab.com/ee/development/database/migrations_for_multiple_databases.html), are available already and used in production.\n\nWith these tools in place, we expect that teams will be able to ship features as fast as before.\n\n### Tools and dashboards re-use\n\nThis change does introduce additional complexity. After all, we will run another database cluster. Given that the `ci` cluster is almost identical to the existing `main` cluster, our DBREs and SREs are able to re-use almost all tools (for example for backups) and dashboards. This reduces the overall risk introduced by this change.\n\n## How we are preparing for the split\n\nOver the last year, many teams at GitLab have worked to support running GitLab using multiple databases. In total, more than 600 merge requests made it into the product. Because we chose a [phased rollout approach](https://gitlab.com/groups/gitlab-org/-/epics/6160#roll-out-plan), almost all developed capabilities are already running on our production systems.\n\n- We've already provisioned a standby-cluster that [serves CI read-only data](https://gitlab.com/groups/gitlab-org/-/epics/6160#phase-3-serve-ci-reads-from-ci-standby-cluster) but, crucially, **not** writes on GitLab.com. This increases our confidence that this cluster is correctly provisioned and fully functional.\n- We've also split out all [CI write traffic into a separate connection](https://gitlab.com/groups/gitlab-org/-/epics/6160#phase-3-serve-ci-reads-from-ci-standby-cluster). From an application standpoint, it appears as if we are already using a `ci` and a `main` database. This gives us confidence that the application changes are working correctly.\n- Our CI pipelines also fully support running against multiple databases and all tests are passing.\n\nWhat is left is promoting the `ci` standby cluster so that all CI **reads and writes** are accepted on that cluster.\n\n## How we're working to ensure a smooth split\n\nThe [Pods group](/handbook/engineering/development/enablement/data_stores/pods/) is working closely with our SREs, DBREs and Quality to rehearse for the production change. These rehearsals include dry runs, executing the promotion of the `ci` database cluster, and testing our rollback strategies. All of these steps are tracked as part of a CI decomposition change template. This template is continuously improved to ensure that we capture all learnings from the rehearsals. The template is mirrored onto our Ops GitLab instance, which will remain available during the downtime window and forms the basis for executing the change.\n\nThe general process of the split can be described as follows:\n\n1. Running health checks\n1. Stopping all incoming traffic\n1. Promoting the CI database cluster to take reads and writes\n1. Running QA\n1. Allowing incoming traffic\n\nWe have developed and are extensively testing rollback plans.\n\nA [detailed timeline](https://gitlab.com/groups/gitlab-org/-/epics/7791#proposed-timeline) is available and we publish [daily asynchronous technical updates](https://gitlab.com/groups/gitlab-org/-/epics/7791#last-async-update) of our progress.\n",[723,723,912,268],"releases",{"slug":914,"featured":6,"template":683},"splitting-database-into-main-and-ci","content:en-us:blog:splitting-database-into-main-and-ci.yml","Splitting Database Into Main And Ci","en-us/blog/splitting-database-into-main-and-ci.yml","en-us/blog/splitting-database-into-main-and-ci",{"_path":920,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":921,"content":927,"config":934,"_id":936,"_type":17,"title":937,"_source":18,"_file":938,"_stem":939,"_extension":21},"/en-us/blog/gitlab-releases-15-breaking-changes",{"title":922,"description":923,"ogTitle":922,"ogDescription":923,"noIndex":6,"ogImage":924,"ogUrl":925,"ogSiteName":671,"ogType":672,"canonicalUrls":925,"schema":926},"GitLab.com is moving to 15.0 with a few breaking changes","These are the features that will be removed in GitLab 15.0.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667351/Blog/Hero%20Images/14_0_breaking_changes.jpg","https://about.gitlab.com/blog/gitlab-releases-15-breaking-changes","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab.com is moving to 15.0 with a few breaking changes\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Brian Rhea\"}],\n        \"datePublished\": \"2022-04-18\",\n      }",{"title":922,"description":923,"authors":928,"heroImage":924,"date":930,"body":931,"category":14,"tags":932},[929],"Brian Rhea","2022-04-18","\nNote: This post was updated on May 20, 2022, to reflect the release of GitLab 15.0.\n{: .note}\n\nGitLab 15.0 has arrived! Along with the [exciting new features](https://youtu.be/1a6-yv6UXsY), it also includes planned removals of [previously deprecated features](https://docs.gitlab.com/ee/update/deprecations.html). Some of these removals are [breaking changes](https://about.gitlab.com/handbook/product/gitlab-the-product/#breaking-changes-deprecations-and-removing-features), because this release is a major version release. We try to minimize such breaking changes but sometimes they are needed to improve workflows, performance, scalability, and more. Please keep reading to learn more about these important changes.\n\nTo see all removals in 15.0, visit [GitLab Docs](https://docs.gitlab.com/ee/update/deprecations.html). Jump to the list of breaking changes in each stage by clicking below:\n\n- [Manage](#manage)\n- [Plan](#plan)\n- [Create](#create)\n- [Verify](#verify)\n- [Package](#package)\n- [Secure](#secure)\n- [Configure](#configure)\n- [Monitor](#monitor)\n- [Protect](#protect)\n- [Enablement](#enablement)\n- [Ecosystem](#ecosystem)\n- [Platform](#platform)\n\n## Manage\n\n### Audit events for repository push events\n\nAnnounced in 14.3\n{: .note}\n\nAudit events for [repository events](https://docs.gitlab.com/ee/administration/audit_events.html#removed-events) are removed as of GitLab 15.0.\n\nAudit events for repository events were always disabled by default and had to be manually enabled with a feature flag.\nEnabling them could slow down GitLab instances by generating too many events. Therefore, they are removed.\n\nPlease note that we will add high-volume audit events in the future as part of [streaming audit events](https://docs.gitlab.com/ee/administration/audit_event_streaming.html). An example of this is how we will send [Git fetch actions](https://gitlab.com/gitlab-org/gitlab/-/issues/343984) as a streaming audit event. If you would be interested in seeing repository push events or some other action as a streaming audit event, please reach out to us!\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/337993)\n\n### External status check API breaking changes\n\nAnnounced in 14.8\n{: .note}\n\nThe [external status check API](https://docs.gitlab.com/ee/api/status_checks.html) was originally implemented to\nsupport pass-by-default requests to mark a status check as passing. Pass-by-default requests are now removed.\nSpecifically, the following are removed:\n\n- Requests that do not contain the `status` field.\n- Requests that have the `status` field set to `approved`.\n\nFrom GitLab 15.0, status checks are only set to a passing state if the `status` field is both present\nand set to `passed`. Requests that:\n\n- Do not contain the `status` field will be rejected with a `400` error. For more information, see [the relevant issue](https://gitlab.com/gitlab-org/gitlab/-/issues/338827).\n- Contain any value other than `passed`, such as `approved`, cause the status check to fail. For more information, see [the relevant issue](https://gitlab.com/gitlab-org/gitlab/-/issues/339039).\n\nTo align with this change, API calls to list external status checks also return the value of `passed` rather than\n`approved` for status checks that have passed.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/339039)\n\n### OAuth implicit grant\n\nAnnounced in 14.0\n{: .note}\n\nThe OAuth implicit grant authorization flow is no longer supported. Any applications that use OAuth implicit grant must switch to alternative [supported OAuth flows](https://docs.gitlab.com/ee/api/oauth2.html).\n\n### OAuth tokens without an expiration\n\nAnnounced in 14.3\n{: .note}\n\nGitLab no longer supports OAuth tokens [without an expiration](https://docs.gitlab.com/ee/integration/oauth_provider.html#expiring-access-tokens).\n\nAny existing token without an expiration has one automatically generated and applied.\n\n### Optional enforcement of SSH expiration\n\nAnnounced in 14.8\n{: .note}\n\nDisabling SSH expiration enforcement is unusual from a security perspective and could create unusual situations where an expired\nkey is unintentionally able to be used. Unexpected behavior in a security feature is inherently dangerous and so now we enforce\nexpiration on all SSH keys.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/351963)\n\n### Optional enforcement of personal access token expiration\n\nAnnounced in 14.8\n{: .note}\n\nAllowing expired personal access tokens to be used is unusual from a security perspective and could create unusual situations where an\nexpired key is unintentionally able to be used. Unexpected behavior in a security feature is inherently dangerous and so we now do not let expired personal access tokens be used.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/351962)\n\n### Required pipeline configurations in Premium tier\n\nAnnounced in 14.8\n{: .note}\n\n[Required pipeline configuration](https://docs.gitlab.com/ee/administration/settings/continuous_integration.html#required-pipeline-configuration) helps to define and mandate organization-wide pipeline configurations and is a requirement at an executive and organizational level. To align better with our [pricing philosophy](https://about.gitlab.com/company/pricing/#three-tiers), this feature is removed from the Premium tier in GitLab 15.0. This feature continues to be available in the GitLab Ultimate tier.\n\nWe recommend customers use [Compliance Pipelines](https://docs.gitlab.com/ee/user/project/settings/index.html#compliance-pipeline-configuration), also in GitLab Ultimate, as an alternative as it provides greater flexibility, allowing required pipelines to be assigned to specific compliance framework labels.\n\nThis change also helps GitLab remain consistent in our tiering strategy with the other related Ultimate-tier features:\n\n- [Security policies](https://docs.gitlab.com/ee/user/application_security/policies/).\n- [Compliance framework pipelines](https://docs.gitlab.com/ee/user/project/settings/index.html#compliance-pipeline-configuration).\n\n### `omniauth-kerberos` gem\n\nAnnounced in 14.3\n{: .note}\n\nThe `omniauth-kerberos` gem is no longer supported. This gem has not been maintained and has very little usage. Therefore, we\nremoved support for this authentication method and recommend using [SPNEGO](https://en.wikipedia.org/wiki/SPNEGO) instead. You can\nfollow the [upgrade instructions](https://docs.gitlab.com/ee/integration/kerberos.html#upgrading-from-password-based-to-ticket-based-kerberos-sign-ins)\nto upgrade from the removed integration to the new supported one.\n\nWe are not removing Kerberos SPNEGO integration. We are removing the old password-based Kerberos.\n\n---\n\n## Create\n\n### Feature flag PUSH_RULES_SUPERSEDE_CODE_OWNERS\n\nAnnounced in 14.8\n{: .note}\n\nThe feature flag `PUSH_RULES_SUPERSEDE_CODE_OWNERS` has been removed in GitLab 15.0. From now on, push rules will supersede CODEOWNERS. The CODEOWNERS feature is no longer available for access control.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/262019)\n\n### `defaultMergeCommitMessageWithDescription` GraphQL API field\n\nAnnounced in 14.5\n{: .note}\n\nThe GraphQL API field `defaultMergeCommitMessageWithDescription` has been removed in GitLab 15.0. For projects with a commit message template set, it will ignore the template.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/345451)\n\n---\n\n## Verify\n\n### API: `stale` status returned instead of `offline` or `not_connected`\n\nAnnounced in 14.6\n{: .note}\n\nA breaking change was made to the Runner [API](https://docs.gitlab.com/ee/api/runners.html#runners-api) endpoints\nin 15.0.\n\nInstead of the GitLab Runner API endpoints returning `offline` and `not_connected` for runners that have not\ncontacted the GitLab instance in the past three months, the API endpoints now return the `stale` value,\nwhich was introduced in 14.6.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/347303)\n\n### `artifacts:report:cobertura` keyword\n\nAnnounced in 14.8\n{: .note}\n\nAs of GitLab 15.0, the `artifacts:report:cobertura` keyword has been replaced by\n[`artifacts:reports:coverage_report`](https://gitlab.com/gitlab-org/gitlab/-/issues/344533). Cobertura is the only\nsupported report file, but this is the first step towards GitLab supporting other report types.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/348980)\n\n### Known host required for GitLab Runner SSH executor\n\nAnnounced in 14.5\n{: .note}\n\nIn [GitLab 14.3](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3074), we added a configuration setting in the GitLab Runner `config.toml`. This setting, [`[runners.ssh.disable_strict_host_key_checking]`](https://docs.gitlab.com/runner/executors/ssh.html#security), controls whether or not to use strict host key checking with the SSH executor.\n\nIn GitLab 15.0, the default value for this configuration option has changed from `true` to `false`. This means that strict host key checking will be enforced when using the GitLab Runner SSH executor.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/28192)\n\n### Runner status `not_connected` API value\n\nAnnounced in 14.6\n{: .note}\n\nThe GitLab Runner REST and GraphQL [API](https://docs.gitlab.com/ee/api/runners.html#runners-api) endpoints\ndeprecated the `not_connected` status value in GitLab 14.6 and will start returning `never_contacted` in its place\nstarting in GitLab 15.0.\n\nRunners that have never contacted the GitLab instance will also return `stale` if created more than 3 months ago.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/347305)\n\n### `type` and `types` keyword from CI/CD configuration\n\nAnnounced in 14.6\n{: .note}\n\nThe `type` and `types` CI/CD keywords is removed in GitLab 15.0, so pipelines that use these keywords fail with a syntax error. Switch to `stage` and `stages`, which have the same behavior.\n\n### Test coverage project CI/CD setting\n\nAnnounced in 14.8\n{: .note}\n\nTo specify a test coverage pattern, in GitLab 15.0 the\n[project setting for test coverage parsing](https://docs.gitlab.com/ee/ci/pipelines/settings.html#add-test-coverage-results-to-a-merge-request-removed)\nhas been removed.\n\nTo set test coverage parsing, use the project’s `.gitlab-ci.yml` file by providing a regular expression with the\n[`coverage` keyword](https://docs.gitlab.com/ee/ci/yaml/index.html#coverage).\n\n---\n\n## Package\n\n### Container registry authentication with htpasswd\n\nAnnounced in 14.9\n{: .note}\n\nThe Container Registry supports [authentication](https://gitlab.com/gitlab-org/container-registry/-/blob/master/docs/configuration.md#auth) with `htpasswd`. It relies on an [Apache `htpasswd` file](https://httpd.apache.org/docs/2.4/programs/htpasswd.html), with passwords hashed using `bcrypt`.\n\nSince it isn't used in the context of GitLab (the product), `htpasswd` authentication will be deprecated in GitLab 14.9 and removed in GitLab 15.0.\n\n### GraphQL permissions change for Package settings\n\nAnnounced in 14.9\n{: .note}\n\nThe GitLab Package stage offers a Package Registry, Container Registry, and Dependency Proxy to help you manage all of your dependencies using GitLab. Each of these product categories has a variety of settings that can be adjusted using the API.\n\nThe permissions model for GraphQL is being updated. After 15.0, users with the Guest, Reporter, and Developer role can no longer update these settings:\n\n- [Package Registry settings](https://docs.gitlab.com/ee/api/graphql/reference/#packagesettings)\n- [Container Registry cleanup policy](https://docs.gitlab.com/ee/api/graphql/reference/#containerexpirationpolicy)\n- [Dependency Proxy time-to-live policy](https://docs.gitlab.com/ee/api/graphql/reference/#dependencyproxyimagettlgrouppolicy)\n- [Enabling the Dependency Proxy for your group](https://docs.gitlab.com/ee/api/graphql/reference/#dependencyproxysetting)\n\nThe issue for this removal is [GitLab-#350682](https://gitlab.com/gitlab-org/gitlab/-/issues/350682)\n\n### Versions from PackageType\n\nAnnounced in 14.5\n{: .note}\n\nAs part of the work to create a [Package Registry GraphQL API](https://gitlab.com/groups/gitlab-org/-/epics/6318), the Package group deprecated the `Version` type for the basic `PackageType` type and moved it to [`PackageDetailsType`](https://docs.gitlab.com/ee/api/graphql/reference/index.html#packagedetailstype).\n\nIn GitLab 15.0, we will completely remove `Version` from `PackageType`.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/327453)\n\n### dependency_proxy_for_private_groups feature flag\n\nAnnounced in 14.5\n{: .note}\n\nA feature flag was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11582) in GitLab 13.7 as part of the change to require authentication to use the Dependency Proxy. Before GitLab 13.7, you could use the Dependency Proxy without authentication.\n\nIn GitLab 15.0, we will remove the feature flag, and you must always authenticate when you use the Dependency Proxy.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/276777)\n\n### Pipelines field from the version field\n\nAnnounced in 14.5\n{: .note}\n\nIn GraphQL, there are two `pipelines` fields that you can use in a [`PackageDetailsType`](https://docs.gitlab.com/ee/api/graphql/reference/#packagedetailstype) to get the pipelines for package versions:\n\n- The `versions` field's `pipelines` field. This returns all the pipelines associated with all the package's versions, which can pull an unbounded number of objects in memory and create performance concerns.\n- The `pipelines` field of a specific `version`. This returns only the pipelines associated with that single package version.\n\nTo mitigate possible performance problems, we will remove the `versions` field's `pipelines` field in GitLab 15.0. Although you will no longer be able to get all pipelines for all versions of a package, you can still get the pipelines of a single version through the remaining `pipelines` field for that version.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/342882)\n\n### Update to the Container Registry group-level API\n\nAnnounced in 14.5\n{: .note}\n\nIn GitLab 15.0, support for the `tags` and `tags_count` parameters will be removed from the Container Registry API that [gets registry repositories from a group](https://docs.gitlab.com/ee/api/container_registry.html#within-a-group).\n\nThe `GET /groups/:id/registry/repositories` endpoint will remain, but won't return any info about tags. To get the info about tags, you can use the existing `GET /registry/repositories/:id` endpoint, which will continue to support the `tags` and `tag_count` options as it does today. The latter must be called once per image repository.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/336912)\n\n---\n\n## Secure\n\n### DS_DEFAULT_ANALYZERS environment variable\n\nAnnounced in 14.0\n{: .note}\n\nWe are removing the `DS_DEFAULT_ANALYZERS` environment variable from Dependency Scanning on May 22, 2022 in 15.0. After this removal, this variable's value will be ignored. To configure which analyzers to run with the default configuration, you should use the `DS_EXCLUDED_ANALYZERS` variable instead.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/333299)\n\n### Dependency Scanning default Java version changed to 17\n\nAnnounced in 14.10\n{: .note}\n\nFor Dependency Scanning, the default version of Java that the scanner expects will be updated from 11 to 17. Java 17 is [the most up-to-date Long Term Support (LTS) version](https://en.wikipedia.org/wiki/Java_version_history). Dependency Scanning continues to support the same [range of versions (8, 11, 13, 14, 15, 16, 17)](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#supported-languages-and-package-managers), only the default version is changing. If your project uses the previous default of Java 11, be sure to [set the `DS_JAVA_VERSION` variable to match](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#configuring-specific-analyzers-used-by-dependency-scanning). Please note that consequently the default version of Gradle is now 7.3.3.\n\n### End of support for Python 3.6 in Dependency Scanning\n\nAnnounced in 14.8\n{: .note}\n\nFor those using Dependency Scanning for Python projects, we are removing support for the default `gemnasium-python:2` image which uses Python 3.6, as well as the custom `gemnasium-python:2-python-3.9` image which uses Python 3.9. The new default image as of GitLab 15.0 will be for Python 3.9 as it is a [supported version](https://endoflife.date/python) and 3.6 [is no longer supported](https://endoflife.date/python).\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/351503)\n\n### Retire-JS Dependency Scanning tool\n\nAnnounced in 14.8\n{: .note}\n\nWe have removed support for retire.js from Dependency Scanning as of May 22, 2022 in GitLab 15.0. JavaScript scanning functionality will not be affected as it is still being covered by Gemnasium.\n\nIf you have explicitly excluded retire.js using the `DS_EXCLUDED_ANALYZERS` variable, then you will be able to remove the reference to retire.js. If you have customized your pipeline’s Dependency Scanning configuration related to the `retire-js-dependency_scanning` job, then you will want to switch to `gemnasium-dependency_scanning`. If you have not used the `DS_EXCLUDED_ANALYZERS` to reference retire.js, or customized your template specifically for retire.js, you will not need to take any action.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/289830)\n\n### bundler-audit Dependency Scanning tool\n\nAnnounced in 14.8\n{: .note}\n\nWe are removing bundler-audit from Dependency Scanning on May 22, 2022 in 15.0. After this removal, Ruby scanning functionality will not be affected as it is still being covered by Gemnasium.\n\nIf you have explicitly excluded bundler-audit using the `DS_EXCLUDED_ANALYZERS` variable, then you will be able to remove the reference to bundler-audit. If you have customized your pipeline’s Dependency Scanning configuration related to the `bundler-audit-dependency_scanning` job, then you will want to switch to `gemnasium-dependency_scanning`. If you have not used the `DS_EXCLUDED_ANALYZERS` to reference bundler-audit or customized your template specifically for bundler-audit, you will not need to take any action.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/347491)\n\n---\n\n## Configure\n\n### GitLab Serverless\n\nAnnounced in 14.3\n{: .note}\n\nAll functionality related to GitLab Serverless was deprecated in GitLab 14.3 and is scheduled for removal in GitLab 15.0. Users who need a replacement for this functionality are encouraged to explore using the following technologies with GitLab CI/CD:\n\n- [Serverless Framework](https://www.serverless.com)\n- [AWS Serverless Application Model](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/deploying-using-gitlab.html)\n\nFor additional context, or to provide feedback regarding this change, please reference our [deprecation issue](https://gitlab.com/groups/gitlab-org/configure/-/epics/6).\n\n- [Issue](https://gitlab.com/groups/gitlab-org/configure/-/epics/6)\n\n### `Managed-Cluster-Applications.gitlab-ci.yml`\n\nAnnounced in 14.0\n{: .note}\n\nThe `Managed-Cluster-Applications.gitlab-ci.yml` CI/CD template is being removed. If you need an  alternative, try the [Cluster Management project template](https://gitlab.com/gitlab-org/gitlab/-/issues/333610) instead. If your are not ready to move, you can copy the [last released version](https://gitlab.com/gitlab-org/gitlab-foss/-/blob/v14.10.1/lib/gitlab/ci/templates/Managed-Cluster-Applications.gitlab-ci.yml) of the template into your project.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/333610)\n\n### Self-managed certificate-based integration with Kubernetes feature flagged\n\nAnnounced in 14.5\n{: .note}\n\nIn 15.0 the certificate-based integration with Kubernetes will be disabled by default.\n\nAfter 15.0, you should use the [agent for Kubernetes](https://docs.gitlab.com/ee/user/clusters/agent/) to connect Kubernetes clusters with GitLab. The agent for Kubernetes is a more robust, secure, and reliable integration with Kubernetes. [How do I migrate to the agent?](https://docs.gitlab.com/ee/user/infrastructure/clusters/migrate_to_gitlab_agent.html)\n\nIf you need more time to migrate, you can enable the `certificate_based_clusters` [feature flag](https://docs.gitlab.com/ee/administration/feature_flags.html), which re-enables the certificate-based integration.\n\nIn GitLab 16.0, we will [remove the feature, its related code, and the feature flag](https://about.gitlab.com/blog/deprecating-the-cert-based-kubernetes-integration/). GitLab will continue to fix any security or critical issues until 16.0.\n\n- [Epic](https://gitlab.com/groups/gitlab-org/configure/-/epics/8)\n\n---\n\n## Monitor\n\n### ELK stack logging\n\nAnnounced in 14.7\n{: .note}\n\nThe logging features in GitLab allow users to install the ELK stack (Elasticsearch, Logstash, and Kibana) to aggregate and manage application logs. Users could search for relevant logs in GitLab directly. However, since deprecating certificate-based integration with Kubernetes clusters and GitLab Managed Apps, this feature is no longer available. For more information on the future of logging and observability, you can follow the issue for [integrating Opstrace with GitLab](https://gitlab.com/groups/gitlab-org/-/epics/6976).\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/346485)\n\n### Jaeger integration\n\nAnnounced in 14.7\n{: .note}\n\nTracing in GitLab is an integration with Jaeger, an open-source end-to-end distributed tracing system. GitLab users could previously navigate to their Jaeger instance to gain insight into the performance of a deployed application, tracking each function or microservice that handles a given request. Tracing in GitLab was deprecated in GitLab 14.7, and removed in 15.0. To track work on a possible replacement, see the issue for [Opstrace integration with GitLab](https://gitlab.com/groups/gitlab-org/-/epics/6976).\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/346540)\n\n### Request profiling\n\nAnnounced in 14.8\n{: .note}\n\n[Request profiling](https://docs.gitlab.com/ee/administration/monitoring/performance/index.html) has been removed in GitLab 15.0.\n\nWe're working on [consolidating our profiling tools](https://gitlab.com/groups/gitlab-org/-/epics/7327) and making them more easily accessible.\nWe [evaluated](https://gitlab.com/gitlab-org/gitlab/-/issues/350152) the use of this feature and we found that it is not widely used.\nIt also depends on a few third-party gems that are not actively maintained anymore, have not been updated for the latest version of Ruby, or crash frequently when profiling heavy page loads.\n\nFor more information, check the [summary section of the deprecation issue](https://gitlab.com/gitlab-org/gitlab/-/issues/352488#deprecation-summary).\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/352488)\n\n---\n\n## Protect\n\n### Container Network and Host Security\n\nAnnounced in 14.8\n{: .note}\n\nAll functionality related to the Container Network Security and Container Host Security categories was deprecated in GitLab 14.8 and is scheduled for removal in GitLab 15.0. Users who need a replacement for this functionality are encouraged to evaluate the following open source projects as potential solutions that can be installed and managed outside of GitLab: [AppArmor](https://gitlab.com/apparmor/apparmor), [Cilium](https://github.com/cilium/cilium), [Falco](https://github.com/falcosecurity/falco), [FluentD](https://github.com/fluent/fluentd), [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/). To integrate these technologies with GitLab, add the desired Helm charts in your copy of the [Cluster Management Project Template](https://docs.gitlab.com/ee/user/clusters/management_project_template.html). Deploy these Helm charts in production by calling commands through GitLab [CI/CD](https://docs.gitlab.com/ee/user/clusters/agent/ci_cd_workflow.html).\n\nAs part of this change, the following capabilities within GitLab are scheduled for removal in GitLab 15.0:\n\n- The **Security & Compliance > Threat Monitoring** page.\n- The Network Policy security policy type, as found on the **Security & Compliance > Policies** page.\n- The ability to manage integrations with the following technologies through GitLab: AppArmor, Cilium, Falco, FluentD, and Pod Security Policies.\n- All APIs related to the above functionality.\n\nFor additional context, or to provide feedback regarding this change, please reference our [deprecation issue](https://gitlab.com/groups/gitlab-org/-/epics/7476).\n\n- [Issue](https://gitlab.com/groups/gitlab-org/-/epics/7477)\n\n### Vulnerability Check\n\nAnnounced in 14.8\n{: .note}\n\nThe vulnerability check feature was deprecated in GitLab 14.8 and is scheduled for removal in GitLab 15.0. We encourage you to migrate to the new security approvals feature instead. You can do so by navigating to **Security & Compliance > Policies** and creating a new Scan Result Policy.\n\nThe new security approvals feature is similar to vulnerability check. For example, both can require approvals for MRs that contain security vulnerabilities. However, security approvals improve the previous experience in several ways:\n\n- Users can choose who is allowed to edit security approval rules. An independent security or compliance team can therefore manage rules in a way that prevents development project maintainers from modifying the rules.\n- Multiple rules can be created and chained together to allow for filtering on different severity thresholds for each scanner type.\n- A two-step approval process can be enforced for any desired changes to security approval rules.\n- A single set of security policies can be applied to multiple development projects to allow for ease in maintaining a single, centralized ruleset.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/357300)\n\n---\n\n## Enablement\n\n### Background upload for object storage\n\nAnnounced in 14.9\n{: .note}\n\nTo reduce the overall complexity and maintenance burden of GitLab's [object storage feature](https://docs.gitlab.com/ee/administration/object_storage.html), support for using `background_upload` has been removed in GitLab 15.0.\n\nThis impacts a small subset of object storage providers, including but not limited to:\n\n- **OpenStack** Customers using OpenStack need to change their configuration to use the S3 API instead of Swift.\n- **RackSpace** Customers using RackSpace-based object storage need to migrate data to a different provider.\n\nIf your object storage provider does not support `background_upload`, please [migrate objects to a supported object storage provider](https://docs.gitlab.com/ee/administration/object_storage.html#migrate-objects-to-a-different-object-storage-provider).\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/26600)\n\n### Elasticsearch 6.8.x in GitLab 15.0\n\nAnnounced in 14.8\n{: .note}\n\nElasticsearch 6.8 support has been removed in GitLab 15.0. Elasticsearch 6.8 has reached [end of life](https://www.elastic.co/support/eol).\nIf you use Elasticsearch 6.8, **you must upgrade your Elasticsearch version to 7.x** prior to upgrading to GitLab 15.0.\nYou should not upgrade to Elasticsearch 8 until you have completed the GitLab 15.0 upgrade.\n\nView the [version requirements](https://docs.gitlab.com/ee/integration/advanced_search/elasticsearch.html) for details.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/350275)\n\n### Gitaly nodes in virtual storage\n\nAnnounced in 13.12\n{: .note}\n\nConfiguring the Gitaly nodes directly in the virtual storage's root configuration object has been deprecated in GitLab 13.12 and is no longer supported in GitLab 15.0. You must move the Gitaly nodes under the `'nodes'` key as described in [the Praefect configuration](https://docs.gitlab.com/ee/administration/gitaly/praefect.html#praefect).\n\n### Move Gitaly Cluster Praefect `database_host_no_proxy` and `database_port_no_proxy configs`\n\nAnnounced in 14.0\n{: .note}\n\nThe Gitaly Cluster configuration keys for `praefect['database_host_no_proxy']` and `praefect['database_port_no_proxy']` are replaced with `praefect['database_direct_host']` and `praefect['database_direct_port']`.\n\n- [Issue](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6150)\n\n### Move `custom_hooks_dir` setting from GitLab Shell to Gitaly\n\nAnnounced in 14.9\n{: .note}\n\nThe [`custom_hooks_dir`](https://docs.gitlab.com/ee/administration/server_hooks.html#create-a-global-server-hook-for-all-repositories) setting is now configured in Gitaly, and is removed from GitLab Shell in GitLab 15.0.\n\n- [Issue](https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/4208)\n\n### Pseudonymizer\n\nAnnounced in 14.7\n{: .note}\n\nThe Pseudonymizer feature is generally unused, can cause production issues with large databases, and can interfere with object storage development.\nIt was removed in GitLab 15.0.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/219952)\n\n### `promote-to-primary-node` command from `gitlab-ctl`\n\nAnnounced in 14.5\n{: .note}\n\nIn GitLab 14.5, we introduced the command `gitlab-ctl promote` to promote any Geo secondary node to a primary during a failover. This command replaces `gitlab-ctl promote-to-primary-node` which was only usable for single-node Geo sites. `gitlab-ctl promote-to-primary-node` has been removed in GitLab 15.0.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/345207)\n\n### SUSE Linux Enterprise Server 12 SP2\n\nAnnounced in 14.5\n{: .note}\n\nLong term service and support (LTSS) for SUSE Linux Enterprise Server (SLES) 12 SP2 [ended on March 31, 2021](https://www.suse.com/lifecycle/). The CA certificates on SP2 include the expired DST root certificate, and it's not getting new CA certificate package updates. We have implemented some [workarounds](https://gitlab.com/gitlab-org/gitlab-omnibus-builder/-/merge_requests/191), but we will not be able to continue to keep the build running properly.\n\n### Sidekiq configuration for metrics and health checks\n\nAnnounced in 14.7\n{: .note}\n\nIn GitLab 15.0, you can no longer serve Sidekiq metrics and health checks over a single address and port.\n\nTo improve stability, availability, and prevent data loss in edge cases, GitLab now serves\n[Sidekiq metrics and health checks from two separate servers](https://gitlab.com/groups/gitlab-org/-/epics/6409).\n\nWhen you use Omnibus or Helm charts, if GitLab is configured for both servers to bind to the same address,\na configuration error occurs.\nTo prevent this error, choose different ports for the metrics and health check servers:\n\n- [Configure Sidekiq health checks](https://docs.gitlab.com/ee/administration/sidekiq/index.html)\n- [Configure the Sidekiq metrics server](https://docs.gitlab.com/ee/administration/sidekiq/index.html)\n\nIf you installed GitLab from source, verify manually that both servers are configured to bind to separate addresses and ports.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/347509)\n\n### Support for `gitaly['internal_socket_dir']`\n\nAnnounced in 14.10\n{: .note}\n\nGitaly introduced a new directory that holds all runtime data Gitaly requires to operate correctly. This new directory replaces the old internal socket directory, and consequentially the usage of `gitaly['internal_socket_dir']` was deprecated in favor of `gitaly['runtime_dir']`.\n\n- [Issue](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6758)\n\n### Support for legacy format of `config/database.yml`\n\nAnnounced in 14.3\n{: .note}\n\nThe syntax of [GitLab's database](https://docs.gitlab.com/omnibus/settings/database.html)\nconfiguration located in `database.yml` has changed and the legacy format has been removed.\nThe legacy format supported a single PostgreSQL adapter, whereas the new format supports multiple databases.\nThe `main:` database needs to be defined as a first configuration item.\n\nThis change only impacts users compiling GitLab from source, all the other installation methods handle this configuration automatically.\nInstructions are available [in the source update documentation](https://docs.gitlab.com/ee/update/upgrading_from_source.html#new-configuration-options-for-databaseyml).\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/338182)\n\n### The `promote-db` command is no longer available from `gitlab-ctl`\n\nAnnounced in 14.5\n{: .note}\n\nIn GitLab 14.5, we introduced the command `gitlab-ctl promote` to promote any Geo secondary node to a primary during a failover. This command replaces `gitlab-ctl promote-db` which is used to promote database nodes in multi-node Geo secondary sites. The `gitlab-ctl promote-db` command has been removed in GitLab 15.0.\n\n- [Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/345207)\n\n---\n",[680,912,933],"production",{"slug":935,"featured":6,"template":683},"gitlab-releases-15-breaking-changes","content:en-us:blog:gitlab-releases-15-breaking-changes.yml","Gitlab Releases 15 Breaking Changes","en-us/blog/gitlab-releases-15-breaking-changes.yml","en-us/blog/gitlab-releases-15-breaking-changes",{"_path":941,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":942,"content":948,"config":956,"_id":958,"_type":17,"title":959,"_source":18,"_file":960,"_stem":961,"_extension":21},"/en-us/blog/engineering-director-shadow",{"title":943,"description":944,"ogTitle":943,"ogDescription":944,"noIndex":6,"ogImage":945,"ogUrl":946,"ogSiteName":671,"ogType":672,"canonicalUrls":946,"schema":947},"The engineering director shadow experience at GitLab","Shadowing an engineering director at GitLab was an immersive, collaborative experience. Here's what you need to know.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667509/Blog/Hero%20Images/continuous-integration-from-jenkins-to-gitlab-using-docker.jpg","https://about.gitlab.com/blog/engineering-director-shadow","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"The engineering director shadow experience at GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"William Arias\"}],\n        \"datePublished\": \"2022-04-01\",\n      }",{"title":943,"description":944,"authors":949,"heroImage":945,"date":951,"body":952,"category":14,"tags":953},[950],"William Arias","2022-04-01","\n\nMy [engineering director shadow](/handbook/engineering/development/shadow/director-shadow-program.html) experience reminded me of a concept that gained relevance during the pandemic:\n\n> \"I am because we are\" set in the context of the actual state of the world: I will be safe when all and each of us is safe.\n\nThe inspiration of these ideas stem from the [Ubuntu Philosophy](https://en.wikipedia.org/wiki/Ubuntu_philosophy) and, if seen from another angle, could mean:\n\n> \"Ubuntu implies that everyone has different skills and strengths; people are not isolated, and through mutual support, [they can help each other to complete themselves](https://www.linkedin.com/pulse/open-source-enlightenment-2015-part-1-audrey-tang/).\"\n\nDuring the shadowing experience, I realized that it is easy to get comfortable with my own world and department-specific view, which can be very foreign to other teams. The reality is that we are all interconnected and each bit of group success is **our** success. Is there an incident? A bug? A delay in hiring? It affects not only the department [DRI](/handbook/people-group/directly-responsible-individuals/) (what we call at GitLab the Directly Responsible Individual), but it can have an impact on all of us, and it can be disguised in different ways. A reliability challenge is not only an engineering problem; if there is an unresolved issue that goes on for too long, it can end up hurting GitLab’s reputation and brand. The issue can impact not only the goals of engineering but also of other teams, including marketing.\n\nTo navigate this interconnectedness, treat all individual efforts as a consolidated unit efficiently and transparently. This is one of my key takeaways from the shadowing program: Having a fair amount of humanity, humbleness, and people-oriented skills is important. I went into this program assuming I was going to experience mostly hard, deterministic skills but the reality was very different.\n\n## A day in the life\n\nShadowing [Wayne Haber](/company/team/#whaber), director of engineering for Growth, Sec, and Data Science, is a unique experience, especially for someone who doesn't spend a lot of time with upper leadership at GitLab. Wayne begins the shadow week with a prep coffee chat where he walks you through what to expect from the week, some tips, and his general criteria for success in the program (take notes and offer feedback!).\n\nAs the week kicks off, you'll first notice you'll be taking part in meetings, a lot of meetings. This is not a bad thing. However, you are going to be treated to a backstage pass to what mission-critical meetings at GitLab look like, how relationships are developed, how KPIs are decided and set, and much more.\n\nDuring my time with Wayne, I attended a variety of meetings from skip levels to a 1:1 with Wayne's boss. In those meetings there were a lot of nuances to observe and an opportunity to soak up how our engineering directors apply [the CREDIT values](https://handbook.gitlab.com/handbook/values/). Wayne encourages people who take part to get involved in the meetings, be vocal, be willing to engage, take notes, and offer feedback. This is an atmosphere that helps to cultivate a sense of \"No Ego\" and promotes collaboration.\n\n## TL;DR\n\nI totally recommend taking one week to enjoy Wayne's adventures. It is an enriching and humbling opportunity to connect with colleagues that you might not come across if you are on another team. As mentioned before, we impact each other more than we might usually think!\n",[954,890,955],"testing","careers",{"slug":957,"featured":6,"template":683},"engineering-director-shadow","content:en-us:blog:engineering-director-shadow.yml","Engineering Director Shadow","en-us/blog/engineering-director-shadow.yml","en-us/blog/engineering-director-shadow",{"_path":963,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":964,"content":970,"config":974,"_id":976,"_type":17,"title":977,"_source":18,"_file":978,"_stem":979,"_extension":21},"/en-us/blog/gitlab-actions-to-date-regarding-russian-invasion-of-ukraine",{"title":965,"description":966,"ogTitle":965,"ogDescription":966,"noIndex":6,"ogImage":967,"ogUrl":968,"ogSiteName":671,"ogType":672,"canonicalUrls":968,"schema":969},"GitLab actions to date regarding Russian invasion of Ukraine","Our actions to date regarding the Russian invasion of Ukraine.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663397/Blog/Hero%20Images/logoforblogpost.jpg","https://about.gitlab.com/blog/gitlab-actions-to-date-regarding-russian-invasion-of-ukraine","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab actions to date regarding Russian invasion of Ukraine\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2022-03-11\",\n      }",{"title":965,"description":966,"authors":971,"heroImage":967,"date":972,"body":973,"category":14},[676],"2022-03-11","\n\nAs a company, we are deeply saddened by the unprovoked and unjustified Russian military invasion of Ukraine, the horrific acts of violence against a sovereign nation and its people, and the terrible impact to all of those in the region, including our GitLab team members, family, and friends.\n \nWe want to extend our sympathy to all those impacted by violence and uncertainty. GitLab condemns the violence and unlawful invasion happening in Ukraine. We condemn the actions of Russia's leadership, not the people who live there.\n \n## GitLab team members\n \nGitLab has been monitoring developments closely and providing support to our team members, impacted by the violence. The health, safety, and well-being of our 13 Ukrainian team members is our first priority. We remain in daily contact with all of our team members in the affected region and have been working directly with those impacted, including their immediate family members, to provide assistance and economic support.\n\n## GitLab customers and partners\n \nGitLab is making every effort possible to ensure security and business continuity with our products. The safety and security of customer data is always a top priority for GitLab. We constantly adapt to changes in the threat environment and have added tooling and increased threat intelligence while increasing staff dedicated to our 24x7 monitoring of threats and risks to our service and environment. No GitLab.com customer data is stored or backed up in Russia or Ukraine. \n \n## Suspending new business in Russia and Belarus\n \nGitLab has suspended new business in Russia and Belarus. We recognize that the situation is dynamic and GitLab is reviewing and updating its business practices accordingly.\n\n## Supporting Ukrainians \n\nThe [Sijbrandij Foundation](https://sijbrandij.org) will match donations from GitLab team members to the following charities: [UNICEF](https://www.unicefusa.org), [Save the Children](https://www.savethechildren.org/us/where-we-work/ukraine), [Médecins Sans Frontières](https://www.msf.org/ukraine), and [Amnesty International](https://donate.amnestyusa.org/page/100216/donate/1?ea.tracking.id=MRPaidSearchFR2022&supporter.appealCode=W22XXADEVR0P&en_og_source=W22XXADEVR0P&gclid=CjwKCAiAvaGRBhBlEiwAiY-yMN5RDp6vOXa2KXZmzFWh2SlqSc3zIdnTkXfiH--g0xomMOODqFZ3VhoCxagQAvD_BwE&gclsrc=aw.ds) to help people affected by the military invasion of Ukraine. \n \nOur thoughts remain with team members, family, and friends in the region. Let's be kind to one another during this tragic period, as we hope for a peaceful resolution.\n",{"slug":975,"featured":6,"template":683},"gitlab-actions-to-date-regarding-russian-invasion-of-ukraine","content:en-us:blog:gitlab-actions-to-date-regarding-russian-invasion-of-ukraine.yml","Gitlab Actions To Date Regarding Russian Invasion Of Ukraine","en-us/blog/gitlab-actions-to-date-regarding-russian-invasion-of-ukraine.yml","en-us/blog/gitlab-actions-to-date-regarding-russian-invasion-of-ukraine",{"_path":981,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":982,"content":988,"config":996,"_id":998,"_type":17,"title":999,"_source":18,"_file":1000,"_stem":1001,"_extension":21},"/en-us/blog/gitlab-supply-chain-security",{"title":983,"description":984,"ogTitle":983,"ogDescription":984,"noIndex":6,"ogImage":985,"ogUrl":986,"ogSiteName":671,"ogType":672,"canonicalUrls":986,"schema":987},"Introducing GitLab’s supply chain security direction and landscape","Learn about software supply chain security at GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667466/Blog/Hero%20Images/GitLab-Sec.png","https://about.gitlab.com/blog/gitlab-supply-chain-security","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Introducing GitLab’s supply chain security direction and landscape\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sam White\"}],\n        \"datePublished\": \"2022-02-15\",\n      }",{"title":983,"description":984,"authors":989,"heroImage":985,"date":991,"body":992,"category":14,"tags":993},[990],"Sam White","2022-02-15","\n\n_This blog post and linked pages contain information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. As with all projects, the items mentioned in the blog post and linked pages are subject to change or delay. The development, release, and timing of products, features, or functionality remain at the sole discretion of GitLab, Inc._ \n\nWe would like to introduce you to our software supply chain security [direction](/direction/supply-chain/) and landscape.\n\nAn emerging concern in the software development space is being able to document the entire supply chain and development progress by creating a chain of custody starting from code creation, build, test, package, and going through deployment. \n\nGitLab's software supply chain security (SSCS) vision includes everything needed to securely deliver and run software with a high degree of confidence that not only your software, but also its surrounding cloud-native infrastructure, has not been compromised. \n\nIn the long-term, our strategy is to become a complete provider for all aspects of SSCS. Providing all of these aspects within a single application not only supports GitLab's broader Single Application Strategy but also provides numerous tangible benefits for users.\n\nAmong other things, using a single application:\n\n1. Minimizes the number of different tools that need to be hardened and monitored.\n1. Reduces the number of potential points of security failure as data is transferred between various tools.\n1. Enables seamless interoperability.\n1. Simplifies visibility and traceability for audits.\n\n## GitLab SSCS Framework\n\nGitLab has put together a framework describing the various aspects that are required to accomplish this based on feedback from customers and inspiration from common standards (such as [SLSA](https://slsa.dev/)), as well as thought leadership from industry analysts. Please note, however, that this framework is not necessarily representative of any other entity's opinion or perspective on the SSCS space.\n\nWe believe that there are five main aspects to consider when providing for a secure, end-to-end software supply chain.\n\n1. **Source** - includes the controls needed to be confident that both internal and external source code is safe from vulnerabilities and has not been compromised in any way.\n1. **Build** - includes rigorous requirements for the security and isolation of build environments as well as the automatic generation of provenance.\n1. **Consumption** - includes the ability to validate authenticity and source of any executed binaries. Supports requirements for securing the underlying host infrastructure itself.\n1. **Management Process** - spans across all other aspects of SSCS and includes both the tools and processes necessary to provide for ongoing visibility into SSCS continuous compliance requirements.\n1. **Tool Security** - spans across all other aspects of SSCS and includes the adoption of best practices for managing the security of the underlying tools themselves.\n\nYou can learn more about the SSCS framework in our [direction](/direction/supply-chain/).\n\n### GitLab helps keep your software supply chain secure\n\nGitLab has [numerous capabilities that support continuous compliance](/blog/gitlabs-newest-continuous-compliance-features-bolster-software/) and a secure software supply chain. Our newly released [“Guide to Software Supply Chain Security”](https://page.gitlab.com/resources-ebook-software-supply-chain-security.html) explains the urgency of protecting the supply chain now and also describes how this can be done while using GitLab.\n\nGitLab is a platform that [plays well with others](/handbook/product/gitlab-the-product/#plays-well-with-others) and can work together with other best-in-class security tools to provide complete end-to-end chain of custody throughout the development and deployment process. GitLab's vision is to partner closely with leading technologies in this space to provide an integrated, turnkey experience for end users.\n\n### What’s next\n\nAs a single DevOps platform, there are many opportunities to rise to the challenge of creating transparency around software components and artifacts. We welcome feedback on our [current position and vision](/direction/supply-chain/#current-position-and-vision) for the long-term direction of GitLab in SSCS. \n\nHere are a few of our near-term projects:\n\n- GitLab's [Runner Core](/direction/verify/runner_core/#strategic-priorities",[994,995,723],"security","DevOps",{"slug":997,"featured":6,"template":683},"gitlab-supply-chain-security","content:en-us:blog:gitlab-supply-chain-security.yml","Gitlab Supply Chain Security","en-us/blog/gitlab-supply-chain-security.yml","en-us/blog/gitlab-supply-chain-security",{"_path":1003,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1004,"content":1010,"config":1017,"_id":1019,"_type":17,"title":1020,"_source":18,"_file":1021,"_stem":1022,"_extension":21},"/en-us/blog/gitlab-com-container-registry-cdn-change",{"title":1005,"description":1006,"ogTitle":1005,"ogDescription":1006,"noIndex":6,"ogImage":1007,"ogUrl":1008,"ogSiteName":671,"ogType":672,"canonicalUrls":1008,"schema":1009},"GitLab.com Container Registry to use Google Cloud CDN","The GitLab.com Container Registry will now interface with the Google Cloud Content Delivery Network","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670766/Blog/Hero%20Images/container-reg-cdn-blog.jpg","https://about.gitlab.com/blog/gitlab-com-container-registry-cdn-change","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab.com Container Registry to use Google Cloud CDN\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Darren Eastman\"}],\n        \"datePublished\": \"2022-01-13\",\n      }",{"title":1005,"description":1006,"authors":1011,"heroImage":1007,"date":1013,"body":1014,"category":14,"tags":1015},[1012],"Darren Eastman","2022-01-13","\n\nIn January 2022, we are working on implementing a change to the Container Registry on GitLab.com. The GitLab Container Registry will now interface with the Google Cloud Content Delivery Network [CDN](https://cloud.google.com/cdn) to optimize costs and improve performance. When implemented, the system will redirect download requests for blobs stored in the GitLab Container Registry to Google Cloud CDN instead of Google Cloud Storage, as is the case today. We expect GitLab CI users to benefit from faster image downloads for those image layers retrieved from edge caches closest to your location.\n\n**Disclaimer** This blog contains information related to upcoming products, features, and functionality. It is important to note that the information in this blog post is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. As with all projects, the items mentioned in this blog and linked pages are subject to change or delay. The development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab.\n\n## How will this work?\n\nAuthorized requests for [downloading a blob](https://docs.docker.com/registry/spec/api/#pulling-a-layer) and [checking if a blob exists](https://docs.docker.com/registry/spec/api/#existing-layers) in the [GitLab.com Container Registry](https://docs.gitlab.com/ee/user/packages/container_registry) will be redirected to the Google Cloud CDN at `cdn.registry.gitlab-static.net`. So far, these requests were redirected to Google Cloud Storage at `storage.googleapis.com`.\n\nThe exception is for requests originating from within the Google Cloud Platform. These will continue to be redirected to Cloud Storage.\n\n## When will this change occur?\n\nWe expect to start the transition in late January 2022. This will be a gradual transition using a percentage-based rollout, so you can expect an increasing number of your requests to be redirected to Google Cloud CDN instead of Google Cloud Storage until all of them are served by the former.\n\nYou can follow along with the progress of this initiative and raise any questions in this [issue](https://gitlab.com/gitlab-org/gitlab/-/issues/350048). We will post more detailed timelines in that issue as we refine the rollout plan.\n\n## How does this change impact you?\n\nSince most client tools, such as the Docker CLI, handle redirections automatically, this change will be imperceptible for most users on GitLab.com.\n\nHowever, if you are allow listing `storage.googleapis.com`, you will need to add `cdn.registry.gitlab-static.net` to the allow list as well. Please keep both endpoints on your allow list for the time being, as the transition will be gradual. There will be another blog post once the transition is complete.\n\n\nCover image by [Pat Kay](https://unsplash.com/photos/3d7DTnuNj6E) on [Unsplash](https://unsplash.com)\n{: .note}\n",[995,890,1016,232],"customers",{"slug":1018,"featured":6,"template":683},"gitlab-com-container-registry-cdn-change","content:en-us:blog:gitlab-com-container-registry-cdn-change.yml","Gitlab Com Container Registry Cdn Change","en-us/blog/gitlab-com-container-registry-cdn-change.yml","en-us/blog/gitlab-com-container-registry-cdn-change",{"_path":1024,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1025,"content":1031,"config":1040,"_id":1042,"_type":17,"title":1043,"_source":18,"_file":1044,"_stem":1045,"_extension":21},"/en-us/blog/hey-icons-lighten-up",{"title":1026,"description":1027,"ogTitle":1026,"ogDescription":1027,"noIndex":6,"ogImage":1028,"ogUrl":1029,"ogSiteName":671,"ogType":672,"canonicalUrls":1029,"schema":1030},"Hey icons, lighten up","Icons can be better, here's how.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663383/Blog/Hero%20Images/tanuki-bg-full.png","https://about.gitlab.com/blog/hey-icons-lighten-up","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Hey icons, lighten up\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jeremy Elder\"}],\n        \"datePublished\": \"2021-12-17\",\n      }",{"title":1026,"description":1027,"authors":1032,"heroImage":1028,"date":1034,"body":1035,"category":14,"tags":1036},[1033],"Jeremy Elder","2021-12-17","\n\nAround this time a few years ago, I had the opportunity to bring more consistency and rigor to GitLab’s product icons, and ever since then I’ve been working through the next iteration. You can read more about the previous effort in this post, [GitLab Iconography: MVC meets visual design](/blog/gitlab-iconography-where-mvc-meets-visual-design/). Today, though, the next iteration is here, and I’d like to briefly share a bit of what went into it.\n\nFirst up, a little housekeeping. Changes to a user interface (UI) can be highly subjective, and while I don’t think preference will or should ever be eliminated, it shouldn’t be the driving factor for change. To that end, we always take a thoughtful approach to any change in the GitLab UI. And in the spirit of iteration, I think my colleague, Tim Noah, put it best when he said that we’re privileged to “work on the ink that never dries.” This isn’t the first iteration, and it certainly won't be the last.\n\n## Icons can be better\n\nWhile there’s more nuance than I can unpack here, at a high level the problem we faced was this: *Icons can be better*. And *better* isn’t that subjective after all; it’s measurable.\n\nTo name a few things, icons can:\n\n- Be more balanced with other UI elements.\n\n- Better align with the brand.\n\n- Be constructed to be more future-proof and available for further iteration.\n\n- Work well in both light and dark UI.\n\n- Better convey abstract concepts and metaphors.\n\n## Choosing what to change\n\nHistorically, our product icons had most commonly used a 16-pixel grid and 2-pixel stroke. In a condensed UI, space is at a premium, and there’s a careful balance to strike between helpfulness and distraction. This isn’t a site where icons are visual anchors and decoration. This is a complex application where icons perform tasks and indicate status and state. They should be available when you need them, but not in the way when you don’t.\n\nSince each icon concept and metaphor can be evaluated on its own, and the grid size was out of scope, I focused on a single shared attribute that relates to all of the ways we determined icons could be better: the stroke weight. Seriously, though, a seemingly trite attribute can have that much impact. Instead of the previous 2-pixel stroke, the icons now use a 1.5-pixel stroke. It turns out that half of a pixel is a big deal.\n\n![Before and after icon comparison in light and dark UI](https://about.gitlab.com/images/blogimages/light-icons/light-icons-before-after.png){: .medium.center}\nBefore (top) and after icon comparison in light and dark UI\n{: .note.text-center}\n\n## Exploring the benefits\n\nHere are some of the benefits we’re starting to experience as a result:\n\n- Because minor icon differences and details are now more distinguishable, our icons have better fidelity. That makes a big difference when a metaphor may fall short with less detail.\n\n- GitLab uses system fonts, and the updated icons match the weight of a regular sans-serif font at body size (the most common font in our UI). Icons don’t compete with the text as much, and there’s a better balance of visual weight.\n\n- For users who experience visual impairments, UI elements can appear blurry. With more negative space in the icons, there’s less opportunity for elements within each icon to blend together and become indistinguishable.\n\n- In a dark UI, the light emitted from an element tends to bleed into surrounding pixels. This creates a ghosting effect and makes the element feel visually heavier than it is. A lighter stroke weight can help offset this effect and make the dark UI as balanced as its light counterpart.\n\n- Previously, we went with a 2-pixel stroke weight, because there was still a significant percentage of users with standard resolution monitors. This meant that we weren’t comfortable with making the leap to aesthetics that favored higher-resolution displays, because a 1.5-pixel stroke could have appeared blurry for many users. Based on current analytics, though, we no longer feel constrained by display resolution and have solved our half-pixel alignment concerns.\n\n- Icons feel more consistent, polished, and on brand than before. They also share more characteristics with the marketing iconography.\n\n- Getting an icon asset ready for production used to mean that we needed an original layered version and another outlined version to export. We create GitLab product icons in Figma, so we can now leverage their boolean unions to keep all icons in an editable state and export a single pathed SVG from the same layers. This is a huge efficiency gain and also makes it easier to create differently sized icon sets, if we need to. We’re also leveraging reusable icon elements as components to help propagate changes.\n\n- Lastly, on a more subjective point, the UI in general feels lighter and more modern, both of which are desirable outcomes and something we’ll continually work towards with other parts of the UI.\n\n![Before and after icon comparison in GitLab's navigation](https://about.gitlab.com/images/blogimages/light-icons/light-icons-nav.png){: .medium.center}\nBefore (left) and after icon comparison in the navigation\n{: .note.text-center}\n\n## What’s trending\n\nDo a quick search, and you’ll find that this road has been traveled before, with product after product making the shift to lighter icons. At first, it might seem like this is another UI trend to chase, but look a little closer and you’ll find that the real trend is to create a better user experience. And that’s a trend we’re happy to chase all day.\n",[1037,1038,1039],"design","UI","UX",{"slug":1041,"featured":6,"template":683},"hey-icons-lighten-up","content:en-us:blog:hey-icons-lighten-up.yml","Hey Icons Lighten Up","en-us/blog/hey-icons-lighten-up.yml","en-us/blog/hey-icons-lighten-up",{"_path":1047,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1048,"content":1054,"config":1061,"_id":1063,"_type":17,"title":1064,"_source":18,"_file":1065,"_stem":1066,"_extension":21},"/en-us/blog/use-gitlab-to-detect-vulnerabilities",{"title":1049,"description":1050,"ogTitle":1049,"ogDescription":1050,"noIndex":6,"ogImage":1051,"ogUrl":1052,"ogSiteName":671,"ogType":672,"canonicalUrls":1052,"schema":1053},"How to use GitLab security features to detect log4j vulnerabilities","Detailed guidance to help customers detect vulnerabilities.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666816/Blog/Hero%20Images/security-cover.png","https://about.gitlab.com/blog/use-gitlab-to-detect-vulnerabilities","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How to use GitLab security features to detect log4j vulnerabilities\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2021-12-15\",\n      }",{"title":1049,"description":1050,"authors":1055,"heroImage":1051,"date":1056,"body":1057,"category":14,"tags":1058},[699],"2021-12-15","\n_Note: Out of an abundance of caution, we encourage users who are using older versions of GitLab SAST and Dependency Scanning to update to the latest versions. You can find more information and recommended actions in [this blog post](/blog/updates-and-actions-to-address-logj-in-gitlab/)._\n\n_Any customer leveraging the [recommended includes](https://docs.gitlab.com/ee/user/application_security/sast/#configure-sast-in-your-cicd-yaml) for GitLab SAST has automatically received the new patched versions released Dec 13, 2021._\n\nIn light of the recently discovered log4j vulnerabilities, we would like to demonstrate how GitLab can be used to assess and remediate the log4j vulnerability as well as other security vulnerabilities that may exist in your projects.\n\nThe solutions shared here are: \n* [Dependency Scanning (Ultimate)](#use-gitlab-dependency-scanning-to-detect-and-mitigate-log4j-vulnerabilities)\n* [Container Scanning (Ultimate)](#detect-log4j-vulnerabilities-with-container-scanning)\n* [Cluster image scanning (Ultimate)](#detect-vulnerable-containers-in-your-kubernetes-cluster)\n* [Advanced Search (Premium)](#search-gitlab-projects-which-use-the-log4j-java-library)\n\nFree users wishing to access Premium and Ultimate features can do so by signing up for a [free trial](https://about.gitlab.com/free-trial/) of GitLab. \n\n### Use GitLab dependency scanning to detect and mitigate log4j vulnerabilities \n\n[Dependency scanning](https://docs.gitlab.com/ee/user/application_security/dependency_scanning) uses Gemnasium, which has been [updated](https://gitlab.com/gitlab-org/security-products/gemnasium-db/-/merge_requests/11381) to detect the log4j vulnerability, to automatically find security vulnerabilities in your software dependencies.\n\nLet’s try dependency scanning with a vulnerable project. Navigate to `Create new project > Import project > from URL` and use `https://github.com/christophetd/log4shell-vulnerable-app.git`. \n\nNext, navigate to `Security & Compliance > Security dashboard` and select to configure `Dependency Scanning`. This will create a new merge request enabling the dependency scanner, and you can immediately see the first [scanning results](https://gitlab.com/gitlab-de/playground/log4shell-vulnerable-app/-/pipelines/427550530/security) in the [merge request](https://gitlab.com/gitlab-de/playground/log4shell-vulnerable-app/-/merge_requests/1). \n\nAlternatively, you can edit the `.gitlab-ci.yml` configuration file and include the Dependency Scanning CI/CD template.\n\n```yaml\ninclude:\n- template: Security/Dependency-Scanning.gitlab-ci.yml\n```\n\nCreate a new merge request and wait for the pipeline to finish. Inspect the security reports. \n\n![GitLab security report](https://about.gitlab.com/images/blogimages/2021-12-15-use-gitlab-to-detect-log4j/image2.png){: .shadow}\n\nTake action on the critical vulnerability, open the details and create a new confidential security issue to follow-up. \n\n![Details of security vulnerability](https://about.gitlab.com/images/blogimages/2021-12-15-use-gitlab-to-detect-log4j/image9.png){: .shadow}\n\nAfter merging the MR to add dependency scanning, future MRs and code changes will detect the log4j vulnerabilities. This helps to avoid accidentally introducing older versions again. Open the `Security report` in `Security & Compliance` to get an overview of the vulnerabilities. \n\n![Panel showing security vulnerabilities](https://about.gitlab.com/images/blogimages/2021-12-15-use-gitlab-to-detect-log4j/image4.png){: .shadow}\n\nYou can customize the default settings using [CI/CD variables](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-the-dependency-scanning-settings), for example increasing the log level to debug with `SECURE_LOG_LEVEL: ‘debug’`. \n\nThe project created in the examples above is located [here](https://gitlab.com/gitlab-de/playground/log4shell-vulnerable-app). \n\n### Detect log4j vulnerabilities with Container Scanning\n\nVulnerabilities in container images can come not only from the source code for the application, but also from packages and libraries that are installed on the base image. Images can inherit packages and vulnerabilities from other container images using the `FROM` keyword in a `Dockerfile`. [Container Scanning](https://docs.gitlab.com/ee/user/application_security/container_scanning/) helps detect these vulnerabilities for the Operating System including packages. The latest release adds language vulnerability scans as a new optional feature to help detect the log4j library vulnerability using the underlying scanners (Trivy as default, Grype optional). You can also use this capability to scan remote images using the `DOCKER_IMAGE` variable.\n\nYou can enable the `CS_DISABLE_LANGUAGE_VULNERABILITY_SCAN` variable to [scan for language specific packages](https://docs.gitlab.com/ee/user/application_security/container_scanning/#report-language-specific-findings). Please note that the additionally detected language dependencies can cause duplicates when you enable Dependency Scanning too. \n\nTo try it, navigate to `CI/CD > Pipeline Editor` and add the following configuration for Container Scanning:\n\n```yaml\ninclude:\n    - template: Security/Container-Scanning.gitlab-ci.yml\n\nvariables:\n    # Use Trivy or Grype as security scanners (Trivy is the default in the included template)\n    # CS_ANALYZER_IMAGE: \"registry.gitlab.com/security-products/container-scanning/trivy:4\"\n    # CS_ANALYZER_IMAGE: \"registry.gitlab.com/security-products/container-scanning/grype:4\"\n    # Detect language libraries as dependencies\n    CS_DISABLE_LANGUAGE_VULNERABILITY_SCAN: \"false\"\n    # Test the vulnerable log4j image \n    DOCKER_IMAGE: registry.gitlab.com/gitlab-de/playground/log4shell-vulnerable-app:latest \n```\n\nCreate a new branch, commit the changes and create a new MR. Once the pipeline has completed, inspect the security report in the MR. \n\n![List of vulnerabilities detected by container scanning](https://about.gitlab.com/images/blogimages/2021-12-15-use-gitlab-to-detect-log4j/image6.png){: .shadow}\n\nAfter merging the MR, you can view the vulnerabilities that exist in your default branch by navigating to `Security & Compliance > Vulnerability Report`. \n\n![Panel showing security vulnerabilities](https://about.gitlab.com/images/blogimages/2021-12-15-use-gitlab-to-detect-log4j/image7.png){: .shadow}\n\nInspect the vulnerability details to take action.\n\n![Detail on vulnerability](https://about.gitlab.com/images/blogimages/2021-12-15-use-gitlab-to-detect-log4j/image8.png){: .shadow}\n\nThis feature is available for customers using the default CI/CD templates, or the tagged `:4` scanner images from  GitLab's Container Registry (registry.gitlab.com). If you are using custom images, please rebuild them based on the latest release.\n\n### Detect vulnerable containers in your Kubernetes cluster\n\nYou can use [cluster image scanning in Kubernetes](https://docs.gitlab.com/ee/user/clusters/agent/vulnerabilities.html) which uses Starboard and [uses Trivy as a security scanner](https://aquasecurity.github.io/starboard/v0.13.1/integrations/vulnerability-scanners/trivy/) under the hood. Trivy’s vulnerability DB is able to detect CVE-2021-44228.\n\nLet’s try it! A quick way to bring up a Kubernetes cluster is in Civo Cloud. Create an account, and follow the documentation on [how to set up the CLI](https://www.civo.com/learn/kubernetes-cluster-administration-using-civo-cli) with an API token. Next, create a k3s cluster. \n\n```shell\n$ civo kubernetes create log4j\n$ civo kubernetes config log4j --save\n$ kubectl config use-context log4j\n$ kubectl get node\n```\n\n`registry.gitlab.com/gitlab-de/playground/log4shell-vulnerable-app:latest` provides a vulnerable container image we can deploy and then scan. \n\n```shell\n$ vim deployment.yaml\n\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: log4j\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: log4j\n  template:\n    metadata:\n      labels:\n        app: log4j\n    spec:\n      containers:\n        - image: registry.gitlab.com/gitlab-de/playground/log4shell-vulnerable-app:latest\n          name: log4j\n\n$ kubectl apply -f deployment.yaml\n```\n\n```shell\n$ vim service.yaml\n\napiVersion: v1\nkind: Service\nmetadata:\n  name: log4j\n  labels:\n    app: log4j\nspec:\n  ports:\n    - name: \"log4j\"\n      port: 8080\n  selector:\n    app: log4j\n\n$ kubectl apply -f service.yaml\n```\n\nTest the application container with port forwarding, and open your browser at http://localhost:80808. You can close the connection with `ctrl+c`. \n\n```\n$ kubectl port-forward service/log4j 8080:8080\n```\n\nAfter the deployment is finished, let’s add the cluster image scanning integration. Follow the [Starboard Operator](https://aquasecurity.github.io/starboard/v0.13.1/operator/installation/kubectl/) installation documentation. Next, configure the [Kubernetes Cluster Image Scanning](https://docs.gitlab.com/ee/user/clusters/agent/vulnerabilities.html) with GitLab. \n\nThe final step is to integrate the CI/CD template and run the pipelines. \n\n```yaml\ninclude:\n  - template: Security/Cluster-Image-Scanning.gitlab-ci.yml\n```\n\nNavigate into `Security & Compliance > Vulnerability report` and select the `Operational vulnerabilities` tab to inspect the vulnerabilities. There you can see that `log4j` was detected in the deployed application running in our Kubernetes cluster 💜. \n\n![Panel showing security vulnerabilities](https://about.gitlab.com/images/blogimages/2021-12-15-use-gitlab-to-detect-log4j/image5.png){: .shadow}\n\nInspect the `log4j` vulnerability to see more details. \n\n![Detail on vulnerability](https://about.gitlab.com/images/blogimages/2021-12-15-use-gitlab-to-detect-log4j/image3.png){: .shadow}\n\nThe full project is located [here](https://gitlab.com/gitlab-de/playground/log4j-kubernetes-container-scanning).\n\n### Search GitLab projects which use the log4j Java library\n\nYou can use the [advanced search with scope blobs](https://docs.gitlab.com/ee/api/search.html#scope-blobs). Let’s try it! Navigate to your profile and add a new personal access token (PAT). Export it into the environment to access it in the next step:\n\n```shell\n$ export GITLAB_TOKEN=xxxxxxxxx\n\n$ curl --header \"PRIVATE-TOKEN: $GITLAB_TOKEN\" \"https://gitlab.com/api/v4/search?scope=blobs&search=log4j\" \n```\n\nTip: Install jq to format the JSON body. More insights in [this blog post](/blog/devops-workflows-json-format-jq-ci-cd-lint/). \n\n```shell\n$ curl --header \"PRIVATE-TOKEN: $GITLAB_TOKEN\" \"https://gitlab.com/api/v4/search?scope=blobs&search=log4j\" | jq\n\n  {\n    \"basename\": \"src/main/resources/log4j\",\n    \"data\": \"log4j.rootLogger=ERROR, stdout\\n \\n# Direct log messages to stdout\\n\",\n    \"path\": \"src/main/resources/log4j.properties\",\n    \"filename\": \"src/main/resources/log4j.properties\",\n    \"id\": null,\n    \"ref\": \"9a1df407e1a5365950a77f715163f6dba915fdf4\",\n    \"startline\": 2,\n    \"project_id\": 12345678\n  },\n\n```\n\nYou can use `jq` to further transform and filter the result set, for example only listing the paths where `log4j` as a string exists.  \n\n```\ncurl --header \"PRIVATE-TOKEN: $GITLAB_TOKEN\" \"https://gitlab.com/api/v4/search?scope=blobs&search=log4j\" | jq -c '.[] | select (.path | contains (\"log4j\"))' | jq\n```\n\n### Next steps \n\nThe GitLab security team is continuing to proactively monitor the situation and ensure our product and customers are secure. We will continue to communicate should we identify additional opportunities to help our customers and community navigate through this situation. Please [subscribe to our security alerts mailing list](https://about.gitlab.com/company/preference-center/).\n\nPlease visit the public [log4j-resources project](https://gitlab.com/gitlab-de/log4j-resources) and visit our [forum](https://forum.gitlab.com/c/devsecops-security/) for additional information.\n",[994,1059,1060],"kubernetes","tutorial",{"slug":1062,"featured":6,"template":683},"use-gitlab-to-detect-vulnerabilities","content:en-us:blog:use-gitlab-to-detect-vulnerabilities.yml","Use Gitlab To Detect Vulnerabilities","en-us/blog/use-gitlab-to-detect-vulnerabilities.yml","en-us/blog/use-gitlab-to-detect-vulnerabilities",{"_path":1068,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1069,"content":1074,"config":1080,"_id":1082,"_type":17,"title":1083,"_source":18,"_file":1084,"_stem":1085,"_extension":21},"/en-us/blog/engineering-managers-automate-their-jobs",{"title":1070,"description":1071,"ogTitle":1070,"ogDescription":1071,"noIndex":6,"ogImage":967,"ogUrl":1072,"ogSiteName":671,"ogType":672,"canonicalUrls":1072,"schema":1073},"How GitLab automates engineering management","At GitLab we know automation is engineering's best friend. Here's a deep dive into three scripts we use regularly to keep big projects on track.","https://about.gitlab.com/blog/engineering-managers-automate-their-jobs","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How GitLab automates engineering management\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Seth Berger\"}],\n        \"datePublished\": \"2021-11-16\",\n      }",{"title":1070,"description":1071,"authors":1075,"heroImage":967,"date":1077,"body":1078,"category":14,"tags":1079},[1076],"Seth Berger","2021-11-16","\n\nAs an engineer, figuring out how to automate your work becomes an important aspect of your job. From writing powerful dotfiles, to customizing bash scripts, to writing robust and rigorous tests, engineers regularly look for ways to automate their repetitive work. \n\nAt GitLab, engineering managers are no different and are constantly looking for ways to automate their work. I asked engineering managers at GitLab to share their automation scripts and their responses were overflowing. \n\nFrom automating their [1:1 document creation](https://www.youtube.com/watch?v=gqFbZi8Hyoc), to integrating [GitLab with Google Sheets](https://gitlab.com/-/snippets/2200407), to writing utilities to [provide executive summaries](https://gitlab.com/gitlab-org/secure/tools/report-scripts), GitLab team members take advantage of the [rich API that GitLab](https://docs.gitlab.com/ee/api/) provides to organize the mountains of information that they sort through on a regular basis. \n\nFor this blog post, I’m sharing a [repo](https://gitlab.com/gitlab-org/secure/tools/epic-issue-summaries) that contains just a few of the many scripts that our team members use. These scripts were originally written by engineering manager [Rachel Nienaber](/company/team/#rnienaber). Rachel’s Infrastructure team is tasked with the exciting work of coordinating large scale infrastructure and code improvements. The work involves coordinating and sequencing lots of issues and epics, and ensuring the work gets done at just the right time and in the right order. Because of the breadth and scale of the work, she has created a handful of scripts that parse issues and epics in order to gain better visibility into the work that needs to be done. \n\nIn the repo, there are three scripts. I’ll provide a quick overview of the first two, and then dive into the code on the last one. \n\n* [Issues not in epics ](https://gitlab.com/gitlab-org/secure/tools/epic-issue-summaries/-/blob/master/issues_not_in_epics.rb)\n* [Epic summary](https://gitlab.com/gitlab-org/secure/tools/epic-issue-summaries/-/blob/master/epic_summary.rb)\n* [Epic/Issue relationship ](https://gitlab.com/gitlab-org/secure/tools/epic-issue-summaries/-/blob/master/epic_issue_relationships.rb)\n\n**Issues not in epics**\n\nSince the Infrastructure team leans on [epics](https://docs.gitlab.com/ee/user/group/epics/) to organize their issues, they also want to be able to organize work that may not be part of an epic. The [`issues_not_in_epics.rb`](https://gitlab.com/gitlab-org/secure/tools/epic-issue-summaries/-/blob/master/issues_not_in_epics.rb) script iterates through issues not in an epic and updates the description of a single hard-coded [issue](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/538) with a table summarizing those issues. The script is run on a daily basis via a scheduled pipeline. This ensures that issues do not slip through the cracks. \n\n**Epic summary**\n\nThis script, [`epic_summary.rb`](https://gitlab.com/gitlab-org/secure/tools/epic-issue-summaries/-/blob/master/epic_summary.rb), was written to solve the problem of having to look in multiple places to understand the status of each project. By grouping all status information into one place it’s easy to see what the team is working on, and what projects will be coming up next. \n\nAs input it takes a designated epic ID and updates the description of that epic by crawling sub-epics and extracting the following data from those epics:\n\n* The person responsible for delivering a sub-epic (at GitLab we use the term [Directly Responsible Individual or DRI](/handbook/people-group/directly-responsible-individuals/))\n* The latest status update for the epic as inputted by an engineer in an epic description\n* The number of sub-epics\n* Links to a board showing the issues constituting that epic\n\nYou can see an example of the output from the script on this [epic](https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/148).\n\nPart of what makes this script simple is that the Infrastructure team always updates the bottom of all their epic descriptions with the following markdown.\n\n```markdown\n## Status {DATE}\n{commentary of the status}\n```\n\nBy consistently using that very simple markdown, the following snippet of code can reliably extract the status for each epic:\n\n```rb\n if description!= nil && description.index(\"## Status\")\n\n    end_location = description.length\n\n    if description.index(\"mermaid\")\n      end_location = description.index(\"mermaid\")-6\n    end\n\n    status = description[description.index(\"## Status\")+10..end_location]\n  end\n```\n\nThe code above certainly won’t win any algorithm challenges, but that’s kind of the point and what we aim to do with [boring solutions](/blog/boring-solutions-faster-iteration/). \n\nYou’ll notice the code above adjusts what is parsed to exclude a mermaid diagram that might appear after the `## Status` markdown.  That diagram gets maintained with the [epic_issue_relationship.rb](https://gitlab.com/gitlab-org/secure/tools/epic-issue-summaries/-/blob/master/epic_issue_relationships.rb) script. \n\n**Epic issue relationship**\n\nThis script updates either a specific epic or all epics, depending on the command line option,  with a [mermaid diagram](https://mermaid-js.github.io/) that shows the relationship between issues and the order that those issues need to be completed by examining how they are related to one another. Adding a mermaid diagram to the description was introduced by [Sean McGivern](/company/team/#smcgivern), a staff engineer on the Scalability team. It creates brilliant diagrams like this one from this [epic](https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/579).\n\n![Mermaid Diagram](https://about.gitlab.com/images/blogimages/2021-11-16-engineering-managers/issue_relation.png)\n\nLet’s walk through the code.\n\nThe script uses the Docopt gem to parse and accept several input parameters. \n\n```rb\noptions = Docopt::docopt(docstring)\ntoken = options.fetch('--token')\ngroup_id = options.fetch('--groupid')\nepic_id = options.fetch('--epicid', nil)\ndry_run = options.fetch('--dry-run', false)\n```\nThen a connection to the GitLab instance is created, taking advantage of the [GitLab gem](https://github.com/NARKOZ/gitlab) which is extended in [`lib/gitlab_client/epics.rb`](https://gitlab.com/gitlab-org/secure/tools/epic-issue-summaries/-/blob/main/lib/gitlab_client/epics.rb) to include a few extra methods. \n\n```rb\nGitlab.configure do |config|\n  config.endpoint = 'https://gitlab.com/api/v4'\n  config.private_token = token\nend\n```\n\nIf an epic id is passed in, then the `update_mermaid` will run only for a specific epic. Otherwise, the code searches for epics that match the two labels, `workflow-infra::In Progress` and `team::Scalability` and are also `opened`. Only when the matching epics do not have child epics,  is `update_mermaid` run. \n\n```rb\nif epic_id\n  update_mermaid(token: token, group_id: group_id, epic_id: epic_id, dry_run: dry_run)\nelse\n  Gitlab.epics(group_id, 'workflow-infra::In Progress,team::Scalability', options: { state: 'opened' }).each do |epic|\n    if Gitlab.epic_epics(epic['group_id'], epic['iid']).count == 0\n      update_mermaid(token: token, group_id: group_id, epic_id: epic['iid'], dry_run: dry_run)\n    end\n  end\nend\n```\nFinally the most exciting part of the script is the method `update_mermaid` method. \n\nBelow the code sets up variables, and looks to see if a mermaid diagram exists in the epic description that it should populate. Note, that if a mermaid diagram does not exist in the epic already, this script will not create one. Each epic should already have a mermaid diagram placeholder inserted after the status header.\n\n```rb\ndef update_mermaid(token:, group_id:, epic_id:, dry_run:)\n  in_epic = Set.new\n  from_relations = Set.new\n  relations = Set.new\n  mermaid = ['graph TD']\n  original_description = Gitlab.epic(group_id, epic_id).description\n\n  unless original_description =~ MERMAID_REGEX\n    puts \"#{epic_id} does not have a Mermaid diagram\"\n    return\n  end\n```\n\nNext the code iterates through each of the issues in the epic and assigns a graph_id for each issue that will be part of the mermaid diagram. It also adds the `key_fields` to the `in_epic` Set. The code assigns `title` along with an emoji so that the mermaid diagram is visually richer. After that the graph nodes are added to the mermaid diagram. \n\n```rb\n Gitlab.epic_issues(group_id, epic_id).each do |issue|\n    iid = issue['iid']\n    graph_id = id(issue)\n\n    in_epic \u003C\u003C key_fields(issue)\n\n    title = \"##{iid}\"\n    title = \"🎯 #{title}\" if issue['labels'].include?('exit criterion')\n    if issue['state'] == 'closed'\n      title = \"✅ #{title}\"\n    elsif issue['assignees'].any?\n      title = \"⏳ #{title}\"\n    end\n\n    mermaid \u003C\u003C \"  #{graph_id}[\\\"#{title}\\\"]\"\n    mermaid \u003C\u003C \"  click #{graph_id} \\\"#{issue['web_url']}\\\" \\\"#{issue['title'].gsub('\"', \"'\")}\\\"\"\n\n```\nAfter adding the graph nodes above, the code iterates through the links associated with each issue. The code determines if the issue is blocked by or blocks another issue. Knowing the direction of this relationship defines which direction the arrow in the mermaid diagram should point.  \n\nThe code also adds both the issue and link to the `from_relations` set, which will automatically deduplicate entries.\n\n```rb\n    Gitlab.issue_links(issue['project_id'], issue['iid']).each do |link|\n      case link['link_type']\n      when 'is_blocked_by'\n        source = id(link)\n        destination = graph_id\n      when 'blocks'\n        source = graph_id\n        destination = id(link)\n      else\n        next\n      end\n\n      from_relations \u003C\u003C key_fields(issue)\n      from_relations \u003C\u003C key_fields(link)\n\n      unless relations.include?([source, destination])\n        mermaid \u003C\u003C \"  #{source} --> #{destination}\"\n        relations \u003C\u003C [source, destination]\n      end\n    end\n```\n\nFinally, the code looks at the “extra” issues, which are issues that are not directly part of the epic, but are related to issues in the epic. These are the most important issues to ensure are on the diagram, since they represent issue dependencies that are outside the epic and would otherwise not show up when viewing an epic page in GitLab. \n\nThe code then updates the epic description by calling the GitLab API and setting the new description. \n\n```rb\n  (from_relations - in_epic).each do |extra_issue|\n    mermaid \u003C\u003C \"  #{id(extra_issue)}[\\\"❌ ##{extra_issue['iid']}\\\"]\"\n    mermaid \u003C\u003C \"  click #{id(extra_issue)} \\\"#{extra_issue['web_url']}\\\" \\\"#{extra_issue['title'].gsub('\"', \"'\")}\\\"\"\n  end\n\n  mermaid_string = mermaid.join(\"\\n\")\n  new_description = original_description\n                        .gsub(MERMAID_REGEX,\n                              \"\\n\\\\1\\n```mermaid\\n#{mermaid_string}\\n```\\n\")\n\n    Gitlab.edit_epic(group_id, epic_id, description: new_description)\nend\n```\n\nThe above scripts help engineering managers efficiently know about all the issues their team members are working on, the status of their team’s epics and how all the work fits together.  \n\nThe scripts only rely on team members doing two things manually: \n\n* Updating an epic’s status on a periodic basis\n* Creating relationships between related issues.  \n\nThe scripts can be run as part of a regular scheduled [pipeline](https://gitlab.com/gitlab-org/secure/tools/epic-issue-summaries/-/blob/main/.gitlab-ci.yml). With the reports generated on a scheduled basis, engineering managers can regularly get summarized information that helps make them and their teams more productive.\n",[783,890,848],{"slug":1081,"featured":6,"template":683},"engineering-managers-automate-their-jobs","content:en-us:blog:engineering-managers-automate-their-jobs.yml","Engineering Managers Automate Their Jobs","en-us/blog/engineering-managers-automate-their-jobs.yml","en-us/blog/engineering-managers-automate-their-jobs",{"_path":1087,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1088,"content":1094,"config":1101,"_id":1103,"_type":17,"title":1104,"_source":18,"_file":1105,"_stem":1106,"_extension":21},"/en-us/blog/gsoc-at-gitlab",{"title":1089,"description":1090,"ogTitle":1089,"ogDescription":1090,"noIndex":6,"ogImage":1091,"ogUrl":1092,"ogSiteName":671,"ogType":672,"canonicalUrls":1092,"schema":1093},"Google Summer of Code at GitLab – some intern highlights","GitLab team members mentored student interns and helped them develop open source projects during Google Summer of Code.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682129/Blog/Hero%20Images/gsoc_cover.jpg","https://about.gitlab.com/blog/gsoc-at-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Google Summer of Code at GitLab – some intern highlights\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Aakriti Gupta\"}],\n        \"datePublished\": \"2021-09-01\",\n      }",{"title":1089,"description":1090,"authors":1095,"heroImage":1091,"date":1097,"body":1098,"category":14,"tags":1099},[1096],"Aakriti Gupta","2021-09-01","\n\nGitLab participated in [Google Summer of Code](https://summerofcode.withgoogle.com/) for the first time this year. We hosted four student interns to work with us on four different projects under the supervision of two or three mentors each.\n\nFor the past 16 years, Google has hosted the Summer of Code to introduce students to the world of open source. Over the summer, student interns work on a project with an open source organization and are closely mentored by the developers of the open source project. More than [200 organizations](https://summerofcode.withgoogle.com/organizations/) participated this year.\n\nWe started off the summer with a two-week long community bonding period to get our students familiar with how we work at GitLab and helped them set-up their local development environments. During the 10-week program we worked through scoped projects with regular check-ins and [a final demo](https://youtu.be/--Neg5pwwnI) to conclude the program.\n\n## Meet the students\n\n### Alejandro Rusi\n[Alejandro](https://gitlab.com/rusi-ruse), a CS student from Argentina, worked on [enabling Courseware as Code](https://gitlab.com/gitlab-com/marketing/community-relations/contributor-program/gitlab-gsoc-2021/-/issues/4) through his project. Check out his [video presentation here](https://youtu.be/qgQQ4MgnKR4) and read [more about the project here](https://alejandro-rusi.gitlab.io/2021/05/31/toward-courseware). Alejandro said:  \n\n> They quickly made me feel welcome and part of Gitlab. All of the topics to choose from were very interesting, and all mentors seemed great.\n>\n> I would like to highlight a moment during GSoC where I wasn't able to do my normal workload due to a personal problem, and my mentors where incredibly supportive and understanding.\n\n### Anshuman Singh\n\n[Anshuman](https://gitlab.com/singhanshuman), a CS student who joined us from India, collaborated with the Static Analysis team to work on [writing vulnerability detection rules  for SAST](https://gitlab.com/groups/gitlab-org/-/epics/6089). Anshuman said: \n\n> For a beginner, it is normal to feel insecure about achieving specified tasks in your group.\n>\n> I am glad that my mentors Julian and Ross were there at every step of the program to provide support and clear my doubts about anything. It was such an enriching experience for me. I am glad to be the part of GitLab for this Google Summer of Code edition. :)\n\n### Cyrine Gamoudi\n\nA computer engineering student from Tunisia, [Cyrine](https://gitlab.com/CyrineG1) worked with the Static Analysis team on [porting SAST and Secret Detection rails platform code to GitLab CE](https://gitlab.com/gitlab-com/marketing/community-relations/contributor-program/gitlab-gsoc-2021/-/issues/6).\n\n> The project went very smoothly. I was able to achieve almost all of the planned milestones and I'm currently still in contact with my mentors, working on what was left. I enjoyed getting an inside look into how open source projects are maintained as well as how they evolve through time. It was also interesting to see the impact of historical architectural decisions on what could and could not be done later on.\n\n### Shubham Kumar\n\nNow in his final year of schooling, [Shubham](https://gitlab.com/imskr) from India helped the Geo team [improve our backup and restore features](https://shubhamkumar.live/blog/Improving-Backup-and-Restore-For-GitLab-GSoC-2021/).\n\n> Mentorship was amazing. Mentors helped me a lot whenever I had problem. Contributing to GitLab is very welcoming. I absolutely loved it.\n\n## GitLab mentors share their thoughts \n\n### What went well?\n\n- External organization\n  - The folks at Google were well organized, the entire schedule was available right at the beginning and the reminder emails were very informative and well timed.\n  - We used it to create our own calendar and that was very helpful.\n- Asynchronous working style\n\n> Having recorded meetings and an agenda doc was really helpful, especially for cases where one mentor went on holidays it was easy to catch up on things. Writing up a planning epic with our student Anshuman was really helpful to make sure that we were on the same page and to clearly define the project deliverables. - [Julian Thome](/company/team/#julianthome), senior vulnerability research engineer at GitLab. \n>\n> Related to this, GitLab's default mode of working that favors asynchronous communication and the written form feels very well-aligned with GSoC and working across time zones. Even without a large amount of overlap between working for myself and our mentee, it felt very effective and like we had a strong foundation in place to support communication and workflows (just point to our existing handbook and docs). - [Lucas Charles](/company/team/#theoretick), staff backend engineer, Secure, at GitLab.\n\n  - It was really useful to have two mentors on the project. This way it was easier sharing responsibilities and managing other priorities, especially when one mentor was out.\n\n### What could be improved? \n\n- We had considerable engagement on the project proposal issues but not as many applications.\n- GitLab is huge and a complex object model for students to hold onto.\n- Running GitLab locally requires a lot of resources.\n- The fork contribution model wasn't efficient for some projects.\n\n\n- Define the required skills for the project better\n> Since GSoC is 10 short weeks, making sure that the student has acquired all the required skills for the project before it starts would have allowed us to reduce the overall mentoring workload and to use mentoring time more efficiently by focusing on the project objectives. Next year, we can make better use of the \"Community Bonding\" period by giving the students more guidance and some time upfront to learn the required technologies/languages so that they are fully prepared before the coding phase begins. -  Julian\n\n- A clear \"victory task,\" possibly in the frontend, would have made some of the projects more \"visible\" and would have felt more complete.\n\n## Wrapping up\n\n[Tetiana Chupryna](/company/team/#brytannia), senior backend engineer, Secure, at GitLab sums up the experience of the mentors really well: \n\n> This program gave me a feeling of deep fulfilment as I was able to look at GitLab through the eyes of a community contributor and I hope that this project was useful for our student in her career, and she will return to GitLab one day as a contributor (we were lucky to have her on this project). So it was a summer well spent 🍎.\n\nWe hope GitLab can be back at Google Summer of Code next year!\n\n[Cover image](https://unsplash.com/photos/7RQf2X6aXXI) by [Raphaël Biscaldi](https://unsplash.com/@les_photos_de_raph)\n{: .note}\n\n",[268,743,1100,804,891],"google",{"slug":1102,"featured":6,"template":683},"gsoc-at-gitlab","content:en-us:blog:gsoc-at-gitlab.yml","Gsoc At Gitlab","en-us/blog/gsoc-at-gitlab.yml","en-us/blog/gsoc-at-gitlab",{"_path":1108,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1109,"content":1115,"config":1122,"_id":1124,"_type":17,"title":1125,"_source":18,"_file":1126,"_stem":1127,"_extension":21},"/en-us/blog/five-great-phabricator-features-inspired-gitlab",{"title":1110,"description":1111,"ogTitle":1110,"ogDescription":1111,"noIndex":6,"ogImage":1112,"ogUrl":1113,"ogSiteName":671,"ogType":672,"canonicalUrls":1113,"schema":1114},"5 Great Phabricator features that inspired GitLab","Take a deep dive into the Phabricator features that prompted GitLab to build new tooling around automation, integrated CI, and better code reviews.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667482/Blog/Hero%20Images/cover-image-unsplash.jpg","https://about.gitlab.com/blog/five-great-phabricator-features-inspired-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"5 Great Phabricator features that inspired GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Michael Friedrich\"}],\n        \"datePublished\": \"2021-08-13\",\n      }",{"title":1110,"description":1111,"authors":1116,"heroImage":1112,"date":1118,"body":1119,"category":14,"tags":1120},[1117],"Michael Friedrich","2021-08-13","\n\nInnovation often happens because competition sparks new ideas. We unpack how Phabricator inspired GitLab to add new features.\n\n## Phabricator explained\n\nTurning back time a bit, what exactly is Phabricator? Built on the concept of web-based applications, Phabricator enables developers to collaborate with code reviews, repository browser, change monitoring, bug tracking and wiki. On May 29, 2021, Phacility, the maintainer and sponsor of Phabricator [announced end-of-life](https://admin.phacility.com/phame/post/view/11/phacility_is_winding_down_operations/) and stopped maintaining Phabricator.\n\n[GitLab co-founder and CEO, Sid Sijbrandij](/company/team/#sytses) gives credit to Phabricator on [HackerNews](https://news.ycombinator.com/item?id=27334636):\n\n> Phabricator was an inspiration to me when starting GitLab. It is shutting down now. [Many of its features were years ahead of its time](https://news.ycombinator.com/item?id=27334511) and there was a lot of humor in the product. As a tribute to it shall we add Clowcoptarize as a way to merge? This would be an [opt in option introduced in GitLab 14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/332215).\n\nIt got me curious: What are these inspirations Sid is referring to? Let's dive into GitLab's history together and see what we can learn.\n\n_Tip: Features in the [GitLab documentation](https://docs.gitlab.com/) often have a `Version History` box. You can use the issue URLs to dive deeper into feature proposals, discussions, etc._\n\n### Review workflows\n\nA typical engineering workflow is as follows: The engineering manager assigns a new issue as a task to a developer. The developer works in their preferred IDE – local in VS Code or in the [Gitpod](/blog/teams-gitpod-integration-gitlab-speed-up-development/) cloud environment. Changes happen in a new feature branch in Git, which gets pushed to the remote Git server for collaboration.\n\nThe Git branch is not ready yet and stays hidden in a potentially long list of branches. To keep better track of their feature branches, developers could copy-paste the branch name or URL into the related issue - which I did 10 years ago. The concept of a \"diff linked to a task for review\" in Phabricator, likewise a \"Git branch with commits linked to Merge Requests\" in GitLab was not invented yet. \n\nPhabricator inspired GitLab to create a [default workflow](https://secure.phabricator.com/phame/post/view/766/write_review_merge_publish_phabricator_review_workflow/) for reviews. The Phabricator workflow makes the review more dominant and squashes all changes into a single commit after the review is approved. There are upsides and downsides to automatically squashing commits. Squashing the commits could mean losing information from review history and create more discussion. Depending on the application architecture, the frequency of changes, and debugging requirements, this can be a good thing or a bad thing. GitLab allows you to choose to [squash commits](https://docs.gitlab.com/ee/user/project/merge_requests/squash_and_merge.html) before merging a MR and/or specifying the default project settings around squashing commits.\n\nPhabricator treated a MR (or what they call \"diff tasks\") as the single source of truth for tracking changes and the review history. We felt this was a great idea, and replicated the process of a \"diff task\" in Phabricator in GitLab MRs. One of the major upsides to GitLab's version is that collaboration and discussion that happened in issues and epics is still available even after the change is merged.\n\n#### Draft MR (or \"diff tasks\")\n\nMany times when a MR is created in GitLab, the branch requires additional work before it is ready to be merged. Phabricator introduced a [formal \"Draft\" / \"Not Yet Ready for Review\" state](https://secure.phabricator.com/T2543) in 2013 for \"diff tasks\", which helped keep track of work in this state. GitLab added [WIP MRs in 2016](/blog/feature-highlight-wip/), which we then renamed to draft merge requests in 2020. While `WIP` may make sense to some people, acronyms can exclude newcomers. We found `Draft` is more recognizable. To avoid confusion, GitLab [deprecated WIP and moved forward with draft merge requests](https://gitlab.com/gitlab-org/gitlab/-/issues/32692).\n\n#### Keep history in MRs for future debugging\n\nThe commit history in GitLab is enriched with links to the MR and the corresponding Git review history. In case of a production emergency, having everything documented allows for faster research and debugging.\n\nGitLab stores the MR short URL with `\u003Cnamespace>/\u003Cproject>!1234` in the merge commit message. Check the history of a [demo project for the Kubernetes agent](https://gitlab.com/everyonecancontribute/kubernetes/k8s-agent/-/commits/main/) to see how the merge commit is rendered.\n\n![GitLab history with MR commit links](https://about.gitlab.com/images/blogimages/phabricator-features-inspired-gitlab/gitlab_history_mr_metadata_link.png)\nGitLab commit history includes link to the MR.\n{: .note.text-center}\n\nThis raw information is stored in the Git repository, whereas the MR itself stays in GitLab's database backend. You can verify this by cloning a repository and inspecting the history with this command:\n\n```sh\n$ git log\n```\n\n![git log MR metadata](https://about.gitlab.com/images/blogimages/phabricator-features-inspired-gitlab/git_log_mr_merge_commit_metadata_link.png)\nMR metadata included in output from `git log` command.\n{: .note.text-center}\n\n### Code coverage in MRs\n\nCode coverage reports provide insight into how many lines of the source code are covered with unit tests. Reaching 100% test coverage is a developer myth - visualizing a decrease or increase can help monitor a trend in code quality. Phabricator implemented support for various languages with unit test engines and parsing the output, for example in [Golang](https://secure.phabricator.com/D12621).\n\nWith many different languages and report output formats, integrating code coverage reports into GitLab MRs was challenging. [GitLab launched the first iteration of code coverage reports in 2016](/blog/publish-code-coverage-report-with-gitlab-pages/), which generated the reports with CI/CD jobs and used GitLab pages to publish the HTML reports.\n\nIn this first iteration, the test coverage is parsed with a regular expression from the CI/CD job output, specified in the project settings or with the [coverage](https://docs.gitlab.com/ee/ci/yaml/#coverage) keyword inside the CI/CD job configuration. We can see this in the job view inside the [MR widget](https://docs.gitlab.com/ee/ci/pipelines/settings.html#add-test-coverage-results-to-a-merge-request) and as a coverage badge for the project. See the test coverage history by navigating into `Analytics > Repository`.\n\n![Test coverage as project badge in GitLab](https://about.gitlab.com/images/blogimages/phabricator-features-inspired-gitlab/gitlab_project_badge_test_coverage.png)\nThe test coverage badge in a GitLab project.\n{: .note.text-center}\n\nJUnit XML test reports were introduced as common format specification and added as an [MR widget in 2018](https://docs.gitlab.com/ee/ci/unit_test_reports.html). The test reports runs in the background, using CI/CD artifacts to upload the XML reports from the runner to the server, where the MR/pipeline view visualizes the coverage reports in a tab.\n\nThe generic JUnit integration also helped with customization requests to unit tests, updated CLI commands, or changed coverage report outputs to parse. GitLab provides [CI/CD template examples](https://docs.gitlab.com/ee/ci/examples/)\n\nThe missing piece for GitLab was having inline code coverage remarks inside MR diffs. It took about five years for [Sid's initial proposal for inline code coverage remarks](https://gitlab.com/gitlab-org/gitlab/-/issues/3708) to be implemented. In 2020, inline code coverage remarks were released in [GitLab 13.5](https://docs.gitlab.com/ee/user/project/merge_requests/test_coverage_visualization.html).\n\n![Test Coverage with Rust in GitLab](https://about.gitlab.com/images/blogimages/phabricator-features-inspired-gitlab/gitlab_mr_diff_inline_test_coverage.png)\nHow inline code coverage works in GitLab.\n{: .note.text-center}\n\nCheck out [this MR to practice verifying the test coverage](https://gitlab.com/everyonecancontribute/dev/rust-code-coverage-llvm/-/merge_requests/1/diffs?view=inline validating some Rust code). Make sure to select the inline diff view.\n\n### Automated workflows and integrated CI\n\nPhabricator provides [Herald](https://secure.phabricator.com/book/phabricator/article/herald/) as an automated task runner and rule engine to listen for changes. Herald can also be used to ensure [protected branches](https://docs.gitlab.com/ee/user/project/protected_branches.html) and [approval rules](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/rules.html#add-multiple-approval-rules) to enforce a strong permission model in development workflows. There are more examples in this [HackerNews post from 2016](https://news.ycombinator.com/item?id=12501025) and somehow, I feel like an explorer seeing many great GitLab features in similar ways. 🦊\n\n[GitLab CI/CD pipeline schedules](https://docs.gitlab.com/ee/ci/pipelines/schedules.html) remind me of the task runner, similarly to [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and the [REST API](https://docs.gitlab.com/ee/api/) being instrumented from CI/CD jobs. The pipeline schedules are also a great way to periodically regenerate caches and rebuild container images for cloud native deployments.\n\n[Harbormaster](https://secure.phabricator.com/book/phabricator/article/harbormaster/) is Phabricator's integration for CI. It's not built from multiple tools in the [DevOps](/topics/devops/) stack, but is instead fully integrated in the product.\n\nThe first version of GitLab CI was created in [November 2012](/company/history/). In 2015, a GitLab team member came up with the idea of combining SCM with CI and [the all-in-one DevOps platform was born](/blog/gitlab-hero-devops-platform/). Built-in CI/CD inspired for more features and fostered a better way to innovate together. The [new pipeline editor](/blog/pipeline-editor-overview/) is just one example of a streamlined way to configure CI/CD pipelines in GitLab.\n\nLet's throwback to 2017 and watch as we demonstrate how to take an idea to production in GitLab, using GKE:\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/39chczWRKws\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C/iframe>\n\n\u003Cbr>\n\n### Work boards for issue management\n\nWork needs to be organized. Phabricator led the way with a board which allowed users to filter tasks and provide a more detailed view into planning and project management.\n\n![Phabricator work boards](https://about.gitlab.com/images/blogimages/phabricator-features-inspired-gitlab/phabricator_work_boards.png)\nInside Phabricator work boards.\n{: .note.text-center}\n\nGitLab users will recognize the similar look between Phabricator's work boards and GitLab [issue boards](https://docs.gitlab.com/ee/user/project/issue_board.html). In GitLab 14.1, we built on existing epic tracking and labeling to create [Epic boards](https://docs.gitlab.com/ee/user/group/epics/epic_boards.html) to keep teams organized and measure progress.\n\nIn Phabricator, users can drag and drop between columns, which automatically changes the work status for a particular task. This feature inspired the boards in GitLab to automatically change the labels in a [defined workflow](/blog/4-ways-to-use-gitlab-issue-boards/) by dragging and dropping between columns. Users can go a level deeper with scoped labels to switch between workflow states:\n\n* `workflow::design`\n* `workflow::planning breakdown`\n* `workflow::ready for development`\n* `workflow::in dev`\n* `workflow::verification`\n\nThe [GitLab engineering handbook](/handbook/engineering/workflow/#basics) documents the different workflows.\n\n![Epic boards in GitLab](https://about.gitlab.com/images/blogimages/phabricator-features-inspired-gitlab/gitlab_epic_boards.png)\nTake a look at the Epic boards in GitLab.\n{: .note.text-center}\n\n### Put it all together\n\nIn Phabricator, a diff task (in GitLab they're MRs) in the \"review\" state is linked to another task specifying the requirements. The UX needs to be clear so the relationship between the diffs can be accessed and understood. Unless necessary, the user shouldn't have to navigate manually. The context of the change review defines possible links to labels, states, dependent issues, diff tasks (MRs), and more.\n\nGitLab links [related issues](https://docs.gitlab.com/ee/user/project/issues/related_issues.html). If an issue is mentioned in a MR, or vice versa, [GitLab automatically links them](https://docs.gitlab.com/ee/user/project/issues/crosslinking_issues.html#from-merge-requests). The user also has the option to have the issue close automatically once a change is merged. Read a blog post from 2016 to learn more about [how issues and MRs can relate to each other in GitLab](/blog/gitlab-tutorial-its-all-connected/).\n\n![Linked issues and MRs in GitLab](https://about.gitlab.com/images/blogimages/phabricator-features-inspired-gitlab/gitlab_linked_issues_mrs.png)\nLinked issues and related MRs in GitLab.\n{: .note.text-center}\n\nUX work is challenging, and we continue to iterate to improve workflows in GitLab. For example, in GitLab 13.8, we reduced the number of clicks it takes to [download a CI/CD job artifact from the MR](https://gitlab.com/gitlab-org/gitlab/-/issues/37346).\n\n\n### Did we miss a feature Phabricator inspired?\n\nWhile writing this blog post, my research revealed more gems. For example, I found a proposal to add [visual graphs for issue dependencies](https://gitlab.com/gitlab-org/gitlab/-/issues/273597) in the [HN thread](https://news.ycombinator.com/item?id=27336818).\n\nWhich features from Phabricator are missing in GitLab? Let us know in the comments, create a new [feature proposal](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Feature%20Proposal%20-%20lean) or start your [contribution journey](/community/contribute/) in a new MR right away! \n\nCover image by [Johannes Plenio](https://unsplash.com/photos/DKix6Un55mw) on [Unsplash](https://unsplash.com)\n{: .note}\n",[847,1121,848],"code review",{"slug":1123,"featured":6,"template":683},"five-great-phabricator-features-inspired-gitlab","content:en-us:blog:five-great-phabricator-features-inspired-gitlab.yml","Five Great Phabricator Features Inspired Gitlab","en-us/blog/five-great-phabricator-features-inspired-gitlab.yml","en-us/blog/five-great-phabricator-features-inspired-gitlab",{"_path":1129,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1130,"content":1135,"config":1141,"_id":1143,"_type":17,"title":1144,"_source":18,"_file":1145,"_stem":1146,"_extension":21},"/en-us/blog/gitlab-moving-to-14-breaking-changes",{"title":1131,"description":1132,"ogTitle":1131,"ogDescription":1132,"noIndex":6,"ogImage":924,"ogUrl":1133,"ogSiteName":671,"ogType":672,"canonicalUrls":1133,"schema":1134},"GitLab.com is moving to 14.0 with a few breaking changes","These are the features that will be deprecated in GitLab 14.0.","https://about.gitlab.com/blog/gitlab-moving-to-14-breaking-changes","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab.com is moving to 14.0 with a few breaking changes\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Orit Golowinski\"}],\n        \"datePublished\": \"2021-06-04\",\n      }",{"title":1131,"description":1132,"authors":1136,"heroImage":924,"date":1138,"body":1139,"category":14,"tags":1140},[1137],"Orit Golowinski","2021-06-04","\n## GitLab 14.0: Our annual major release\n\nGitLab 14.0 is coming to GitLab.com. Along with the [exciting new features](https://www.youtube.com/embed/Z1FqGH0pNvo), it also includes [planned deprecations](/releases/2021/05/22/gitlab-13-12-released/#release-deprecations) because it is the major version release for 2021. We try to minimize breaking changes, but some changes are needed to improve workflows, performance, scalability, and more.\n\nThese changes will go live on GitLab.com sometime between May 23 – June 22, through our [daily deployments](/handbook/engineering/infrastructure/library/scheduled-daily-deployments/), leading up to the official release of 14.0 on June 22. Keep reading to learn more about these important changes.\n\nGitLab 14.0 for self-managed users will also be released on June 22, [read on for more information about deprecations and removals for self-managed instances](/releases/2021/05/22/gitlab-13-12-released/#release-deprecations).\n\n## Plan\n\n### Removed deprecated GraphQL fields\n\nIn accordance with our [GraphQL deprecation process](https://docs.gitlab.com/ee/api/graphql/#deprecation-process), the following fields, enum names, and mutation aliases that were deprecated on or before GitLab version 13.6 are [permanently removed from our GraphQL API in 14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/267966).\n\nFields:\n\n- `Mutations::Todos::MarkAllDone` - `updated_ids`\n- `Mutations::Todos::RestoreMany` - `updated_ids`\n- `Mutations::DastScannerProfiles::Create` - `global_id`\n- `TimeFrameArguments (concern*)` - `start_date`\n- `TimeFrameArguments (concern*)` - `end_date`\n- `Types::SnippetType` - `blob`\n- `Types::DastScannerProfileType` - `global_id`\n- `EE::Types::GroupType` - `vulnerabilities_count_by_day_and_severity`\n- `EE::Types::QueryType` - `vulnerabilities_count_by_day_and_severity`\n\nEnums (each replaced by the upper-case version, such as `updated_desc` -> `UPDATED_DESC`):\n\n- `Types::SortEnum` - `updated_desc`\n- `Types::SortEnum` - `updated_asc`\n- `Types::SortEnum` - `created_desc`\n- `Types::SortEnum` - `updated_asc`\n\nMutation aliases:\n\n- `DeprecatedMutations (concern**)` - `AddAwardEmoji`\n- `DeprecatedMutations (concern**)` - `RemoveAwardEmoji`\n- `DeprecatedMutations (concern**)` - `ToggleAwardEmoji`\n- `EE::Types::DeprecatedMutations (concern***)` - `Mutations::Pipelines::RunDastScan`\n- `EE::Types::DeprecatedMutations (concern***)` - `Mutations::Vulnerabilities::Dismiss`\n- `EE::Types::DeprecatedMutations (concern***)` - `Mutations::Vulnerabilities::RevertToDetected`\n\nFor mutation aliases, the concern name isn't as important as the name of the mutation itself. While you can't use **this particular name** anymore, we provide alternatives in our GraphQL documentation.\n\n## Create\n\n### Name change of default branch in Git\n\nEvery Git repository has an initial branch, which is the first branch that is automatically generated when you create a new repository. By default, this initial branch is named `master`. In Git version 2.31.0 – released [March 15th, 2021](https://www.google.com/calendar/event?eid=NG03dTF0YWU4cnMyMmc5bzJoMjVyYTZwcXEgamZnYmwybXJsaXBwNHBiNmllaWgwcXIzc29AZw&ctz=America/Los_Angeles) – the default Git branch name changed to `main`. In coordination with the Git project and the broader community, GitLab is changing the default branch name for new projects on both our [SaaS](/pricing/feature-comparison/) (GitLab.com) and self-managed offerings, starting with GitLab 14.0.\n\nFor more information, see the related [epic](https://gitlab.com/groups/gitlab-org/-/epics/3600), [documentation](https://docs.gitlab.com/ee/user/project/repository/branches/default.html), and the Git [mailing list discussion](https://lore.kernel.org/git/xmqqa6vf437i.fsf@gitster.c.googlers.com/T/#t).\n\n### Deprecated legacy Gitaly cluster primary electors\n\nNow that Praefect supports a [`per_repository` primary election strategy](https://docs.gitlab.com/ee/administration/gitaly/praefect.html#repository-specific-primary-nodes), GitLab 14.0 removes the legacy strategies deprecated in GitLab 13.12:\n\n- The `local` elector is not supported in production, and should not affect production instances.\n- The `sql` elector is incompatible with the [variable replication factor](https://docs.gitlab.com/ee/administration/gitaly/praefect.html#configure-replication-factor) feature.\n\nIf you use the `local` or `sql` primary electors, we recommend you update to the `per_repository` election strategy as soon as possible. Read the [migration documentation](https://docs.gitlab.com/ee/administration/gitaly/praefect.html#migrate-to-repository-specific-primary-gitaly-nodes) to learn more.\n\n### WIP merge requests renamed \"draft merge requests\"\n\n[WIP (work in progress) status](/blog/feature-highlight-wip/) for merge requests provide a clear signal to reviewers that the merge request in question is not ready to be merged. The WIP feature for merge requests has been renamed to \"Draft\", a more inclusive and self-explanatory term. \"Draft\" clearly communicates the merge request in question isn't ready for review, and makes no assumptions about the progress being made toward it. \"Draft\" also reduces the cognitive load for new users, non-English speakers, and anyone unfamiliar with the WIP acronym.\n\nWIP merge requests were deprecated in favor of **draft** merge requests, and are [removed entirely](https://gitlab.com/gitlab-org/gitlab/-/issues/228685) in GitLab 14.0.\n\n## Manage\n\n### Deprecated GitLab OAuth implicit grants\n\nGitLab 14.0 deprecates the [OAuth 2 implicit grant flow](https://docs.gitlab.com/ee/api/oauth2.html#implicit-grant-flow), as it has been removed for [OAuth 2.1](https://oauth.net/2.1/).\n\nBeginning in GitLab 14.0, you can't create new applications with the OAuth 2 implicit grant flow. Existing OAuth implicit grant flows will become unsupported in GitLab 14.4. Migrate existing applications to other supported [OAuth2 flows](https://docs.gitlab.com/ee/api/oauth2.html#supported-oauth2-flows) before GitLab 14.4.\n\n### Removed `CI_PROJECT_CONFIG_PATH` predefined project variable\n\nThe `CI_PROJECT_CONFIG_PATH` predefined project variable is removed in favor of the `CI_CONFIG_PATH` variable, which is functionally the same. If you are using `CI_PROJECT_CONFIG_PATH` in your pipeline configurations update to use `CI_CONFIG_PATH` instead.\n\n### Expired SSH keys disabled by default\n\nStarting in GitLab 14.0, expired [SSH keys added to GitLab](https://docs.gitlab.com/ee/user/ssh.html) are disabled by default. This changes the current behavior, which allows expired SSH keys to be used unless explicitly disabled by an administrator. Administrators can still allow the use of expired keys in the same way as they can [override expiration settings](https://docs.gitlab.com/ee/administration/settings/account_and_limit_settings.html#optional-non-enforcement-of-personal-access-token-expiration) for personal access tokens.\n\n## Verify\n\n### Changes to Code Quality Rubocop support\n\nCurrently, by default, the Code Quality feature doesn't provide support for Ruby 2.6+ if you're using the Code Quality template.\n\nTo better support the latest versions of Ruby, we are changing the default Rubocop version to add support for Ruby 2.4 through 3.0. Support for Ruby 2.1, 2.2, and 2.3 is dropped as a result of this change. To enable support for older versions, [customize your configuration](https://docs.gitlab.com/ee/ci/testing/code_quality.html). Read the relevant issue [\"Default `codeclimate-rubocop` engine does not support Ruby 2.6+\"\"](https://gitlab.com/gitlab-org/ci-cd/codequality/-/issues/28) to learn more about this change.\n\n### Renamed default Browser Performance Testing job\n\nBrowser Performance Testing currently runs in a job named `performance` by default. This name can be confused with [Load Performance Testing](https://docs.gitlab.com/ee/ci/testing/load_performance_testing.html), introduced in GitLab 13.2. To make clear which job is running Browser Performance Testing, GitLab 14.0 renames the default job name from `performance` to `browser_performance` in the template. Read the relevant issue [\"Rename default Browser Performance Testing job\"](https://gitlab.com/gitlab-org/gitlab/-/issues/225914) to learn more about this change.\n\n### Ruby version changing in `Ruby.gitlab-ci.yml`\n\nThe `Ruby.gitlab-ci.yml` template contains changes to better support new versions of Ruby. Previously, the `Ruby.gitlab-ci.yml` file included Ruby 2.5. To better support the latest versions of Ruby, the template now uses `ruby:latest`, which is currently Ruby 3.0. Read the [ruby-lang.org release announcement](https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/) to learn more about the changes to Ruby, and explore our relevant issue, [\"Updates Ruby version 2.5 to 3.0\"](https://gitlab.com/gitlab-org/gitlab/-/issues/329160) to learn more about the change.\n\n### GitLab Runner: Package installation ignores `skel` directory during installation\n\nIn GitLab Runner 14.0, the installation process ignores the `skel` directory by default when creating the user's home directory. For more details about this breaking change, read the [deprecation issue](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/4845).\n\n### GitLab Runner: PowerShell Core as default shell for newly registered Runners on Windows\n\nBeginning in GitLab Runner 14.0, newly registered Windows Runners default to adding PowerShell Core (`pwsh`) as the default shell in the `config.toml` file, instead of the legacy Windows PowerShell (`powershell`).\n\n### GitLab Runner: Remove support for Windows Server 1909 image\n\nMicrosoft ended support for Windows Server version 1909 on May 11, 2021. In keeping with our [support policy](https://docs.gitlab.com/runner/install/windows.html) for Windows Server, GitLab 14.0 removes Windows 1909 support from GitLab Runner. If you are still using Windows Server 1909, then `docker-windows` on GitLab Runner 14.0 or higher will no longer work. For additional details regarding this breaking change, read the [deprecation issue](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27899).\n\n## Release\n\n### Renewed template for Auto DevOps: Stable Auto Deploy\n\nGitLab 14.0 renews the [Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/stages.html#auto-deploy) CI template to the latest version. This includes new features, bug fixes, and performance improvements with a dependency on the `v2` [auto-deploy-image](https://gitlab.com/gitlab-org/cluster-integration/auto-deploy-image). This latest template is opt-in, meaning, unless you specifically customize Auto DevOps in your project, it uses the stable template with a dependency on the `v1` auto-deploy-image.\n\nThe `v1` and `v2` versions are not backward compatible, so your project might encounter an unexpected failure if you already have a deployed application. Please follow the [upgrade guide](https://docs.gitlab.com/ee/topics/autodevops/upgrading_auto_deploy_dependencies.html#upgrade-guide) to upgrade your environments. You can also start using the latest template today by following the [early adoption guide](https://docs.gitlab.com/ee/topics/autodevops/upgrading_auto_deploy_dependencies.html#early-adopters).\n\n### Deprecated release description in the Tags API\n\nGitLab 14.0 removes support for the release description in the Tags API. You can no longer add a release description when [creating a new tag](https://docs.gitlab.com/ee/api/tags.html#create-a-new-tag). You also can't [create](https://docs.gitlab.com/ee/api/tags.html#create-a-new-release) or [update](https://docs.gitlab.com/ee/api/tags.html#update-a-release) a release through the Tags API. You should migrate to the [Releases API](https://docs.gitlab.com/ee/api/releases/#create-a-release) instead.\n\n### Deprecated `disk` source configuration for GitLab Pages\n\nGitLab Pages [API-based configuration](https://docs.gitlab.com/ee/administration/pages/#gitlab-api-based-configuration) has been available since GitLab 13.0, and will replace the `disk` source configuration which GitLab 14.0 removes. We recommend that you stop using `disk` source configuration, since it is no longer supported and cannot be selected. Use `gitlab` for an API-based configuration instead. To migrate away from the `disk` source configuration, set `gitlab_pages['domain_config_source'] = \"gitlab\"` in your `gitlab.rb/etc/gitlab/gitlab.rb` file. We recommend that you do this before GitLab 14.0 so you can find and troubleshoot any potential problems ahead of time.\n\n### Deprecated legacy feature flags\n\nLegacy feature flags became read-only in GitLab 13.4, and GitLab 14.0 removes support for them. You must [migrate your legacy feature flags](https://docs.gitlab.com/ee/operations/feature_flags.html#legacy-feature-flag-migration) to the new version, as described in the [documentation](https://docs.gitlab.com/ee/operations/feature_flags.html). Watch the video tutorial below for help with the migration:\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube-nocookie.com/embed/CAJY2IGep7Y\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n## Package\n\n### Empty container registries will have the cleanup policies turned off\n\nThe [cleanup policy](https://docs.gitlab.com/ee/user/packages/container_registry/#cleanup-policy) is a scheduled job you can use to remove or preserve tags from the Container Registry. In GitLab 14.0, we will make an update that will turn the cleanup policy feature off for projects that have no container images in their registry. Moving forward, a recurring job will regularly run to ensure that projects with no container images do not have the cleanup policy feature turned on.\n\nThis change significantly improves the performance and reliability of the feature and allows us to prioritize exciting usability features like a preview-run, as proposed in the issue, [\"Expiration policy dry-run and forced run\"](https://gitlab.com/gitlab-org/gitlab/-/issues/223732).\n\nIf this change affects you, you can easily [enable the feature again](https://docs.gitlab.com/ee/user/packages/container_registry/#create-a-cleanup-policy) by following the steps in the documentation.\n\n## Configure\n\n### Removed one-click GitLab Managed Apps\n\nGitLab 13.7 deprecated the one-click install of GitLab Managed Apps, and GitLab 14.0 removes them entirely. Although GitLab Managed Apps made it easy to start deploying to Kubernetes from GitLab, feedback from the community was that they were not flexible or customizable enough for real-world Kubernetes applications. Our new direction focuses on [installing apps on Kubernetes with GitLab CI/CD](https://docs.gitlab.com/ee/update/removals.html) to provide a better balance between ease-of-use and extensive customization.\n\nThis removal does not affect how existing managed applications run inside your cluster. However, you no longer can update or modify those applications in the GitLab UI.\n\nWe recommend cluster administrators to [migrate any existing managed applications to the project template](https://docs.gitlab.com/ee/user/clusters/migrating_from_gma_to_project_template.html).\n\n### New Terraform template version\n\nAs we continuously develop GitLab's Terraform integrations, to minimize customer disruption, we maintain two GitLab CI/CD templates for Terraform:\n\n- The [\"latest version\" template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Terraform.latest.gitlab-ci.yml), which is updated frequently between minor releases of GitLab (such as 13.10, 13.11, etc).\n- The [\"major version\" template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml), which is updated only at major releases (such as 13.0, 14.0, etc).([View the new \"major version\" template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml).)\n\nAt every major release of GitLab, the \"latest version\" template becomes the \"major version\" template, inheriting the \"latest template\" setup. As we have added many new features to the Terraform integration, the new setup for the \"major version\" template can be considered a breaking change.\n\nThe latest template supports the [Terraform Merge Request widget](https://docs.gitlab.com/ee/user/infrastructure/iac/mr_integration.html) and doesn't need additional setup to work with the [GitLab managed Terraform state](https://docs.gitlab.com/ee/user/infrastructure/iac/terraform_state.html).\n\n### Renewed template for Terraform\n\nGitLab 14.0 renews the Terraform CI/CD template to the latest version. The new template is set up for the GitLab Managed Terraform state. It includes a dependency on the GitLab `terraform-images` image to improve the user experience with GitLab's [Infrastructure as Code](https://docs.gitlab.com/ee/user/infrastructure/#quick-start) features.\n\nSince the current stable and latest templates are incompatible, and the latest template becomes the stable template GitLab 14.0, your Terraform pipeline might encounter an unexpected failure if you run a custom `init` job.\n\n### Auto Build uses Cloud Native Buildpacks by default\n\nIn GitLab 14.0, Auto Build now defaults to Cloud Native Buildpacks instead of Herokuish when no `Dockerfile` is present. Users depending on the `/bin/herokuish` binary provided by Herokuish should either change their deployments to use `/cnb/lifecycle/launcher` instead of `/bin/herokuish exec`, or opt-out of using Cloud Native Buildpacks, by setting the CI variable `AUTO_BUILD_IMAGE_CNB_ENABLED` to `false`.\n\n## Secure\n\n### Removals for SAST and Secret Detection\n\nThis release removes or migrates several variables:\n\n- [Removes the SAST Analyzer variable](/releases/2021/04/22/gitlab-13-11-released/#remove-sast-analyzer-sast_gosec_config-variable-in-favor-of-custom-rulesets) `SAST_GOSEC_CONFIG` in favor of custom rulesets for expanded configuration and consistency.\n- [Removes the global variable](/releases/2021/04/22/gitlab-13-11-released/#deprecating-global-%60sast_analyzer_image_tag%60-in-sast-ci-template) `SAST_ANALYZER_IMAGE_TAG` in favor of analyzer-specific variables to provide more granular control of versioning analyzers.\n- [Migrates the variable](/releases/2021/04/22/gitlab-13-11-released/#migrate-from-sast_default_analyzers-to-sast_excluded_analyzers) `SAST_DEFAULT_ANALYZERS` to `SAST_EXCLUDED_ANALYZERS` for better forward compatibility.\n\nThis release also removes the `secret_detection_default_branch` job in our managed `Secret-Detection.gitlab-ci.yml` template to reduce CI complexity.\n\nIf you override or maintain custom versions of `SAST.gitlab-ci.yml` or `Secret-Detection.gitlab-ci.yml`, update your CI templates. We strongly encourage you [inherit and override our managed CI templates](https://docs.gitlab.com/ee/user/application_security/secret_detection/#custom-settings-example) to future-proof your CI templates.\n\n### Removed the License-Management CI template\n\nIn 13.0, we deprecated the License-Management CI template and renamed it License-Scanning. GitLab 14.0 completely removes the License-Management CI template. We have been providing backward compatibility by warning users of the old template to switch. Read the change in the [relevant issue #216261](https://gitlab.com/gitlab-org/gitlab/-/issues/216261) or [blog post](/blog/composition-analysis-14-deprecations-and-removals/).\n\n### Deprecations for Dependency Scanning\n\nTo exclude a DS analyzer previously you needed to remove it from the default list of analyzers and use that to set the `DS_DEFAULT_ANALYZERS` variable in your project’s CI template. We determined it should be easier to avoid running a particular analyzer without losing the benefit of newly added analyzers. Now you should be able to migrate from `DS_DEFAULT_ANALYZERS` to `DS_EXCLUDED_ANALYZERS` as [described in the documentation](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/analyzers.html#disable-specific-analyzers). Read more about the change in [relevant issue](https://gitlab.com/gitlab-org/gitlab/-/issues/287691), the [13.9 release post](/releases/2021/02/22/gitlab-13-9-released/#deprecations-for-dependency-scanning), and [the relevant blog post](/blog/composition-analysis-14-deprecations-and-removals/).\n\nTo prevent the Gemnasium analyzers to fetch the advisory database at runtime, you previously had to set the `GEMNASIUM_DB_UPDATE` variable. But this is not documented properly and its naming is inconsistent with the equivalent `BUNDLER_AUDIT_UPDATE_DISABLED` variable. You should migrate from `GEMNASIUM_DB_UPDATE` to `GEMNASIUM_UPDATE_DISABLED` when it is available. Read about the change in the [relevant issue](https://gitlab.com/gitlab-org/gitlab/-/issues/215483).\n\n### DAST environment variable renaming and removal\n\nGitLab 13.8 renamed multiple environment variables to support broader usage in different workflows. GitLab 14.0 permanently removes these variables, and they no longer work. If you use the old variables in your configuration it's time to update to the new variable names. Any scans using these variables in GitLab 14.0 and later will fail to be configured correctly:\n\n-  `DAST_AUTH_EXCLUDE_URLS` is now `DAST_EXCLUDE_URLS`.\n-  `AUTH_EXCLUDE_URLS` is now `DAST_EXCLUDE_URLS`.\n-  `AUTH_USERNAME` is now `DAST_USERNAME`.\n-  `AUTH_PASSWORD` is now `DAST_PASSWORD`.\n-  `AUTH_USERNAME_FIELD` is now `DAST_USERNAME_FIELD`.\n-  `AUTH_PASSWORD_FIELD` is now `DAST_PASSWORD_FIELD`.\n-  `DAST_ZAP_USE_AJAX_SPIDER` is now `DAST_USE_AJAX_SPIDER`.\n-  `DAST_FULL_SCAN_DOMAIN_VALIDATION_REQUIRED` is removed, as the feature is being removed.\n\n## Protect\n\n### Web Application Firewall (WAF) removal\n\nGitLab's Web Application Firewall (WAF) was deprecated in GitLab 13.6. GitLab 14.0 removes the WAF on June 22, 2021. GitLab's WAF had limitations inherent in the architectural design that made it difficult to meet the requirements traditionally expected of a WAF. By deprecating and removing the WAF, GitLab can focus on improving other areas in the product to provide more value to users.\n\nIf you currently rely on GitLab's WAF, we recommend you continue to use the free and open source [ModSecurity](https://www.modsecurity.org/) project, which is independent from GitLab. More details are available in the [deprecation issue](https://gitlab.com/gitlab-org/gitlab/-/issues/271276).\n\n### Container Scanning Engine Clair removal\n\nPrior to GitLab 14.0, GitLab used the open-source Clair engine for container scanning. Clair was deprecated in GitLab 13.9, and GitLab 14.0 replaces Clair with Trivy. If you use any GitLab 13.x release, you can continue to use Clair without making any changes to your CI files – however, GitLab will no longer update or maintain that scanning engine.\n\nBeginning in the 14.0 release Trivy becomes the new default scanner and receives regular updates and the latest features. You should review their CI files in advance of the 14.0 release and [follow these instructions](https://docs.gitlab.com/ee/user/application_security/container_scanning/#migrating-from-clair-to-trivy) to ensure your container scanning jobs continue to work. You can provide feedback and get additional details about the change to Trivy on our [open deprecation issue](https://gitlab.com/gitlab-org/gitlab/-/issues/321451).\n\n## Enablement\n\n### Remove old Advanced Search migrations in GitLab 14.0 release\n\n[Advanced Search migrations](https://docs.gitlab.com/ee/integration/advanced_search/elasticsearch.html) is a feature that helps you update your Elasticsearch index in the background when a GitLab version upgrade introduces changes to indexes. Advanced Search migrations add complexity that requires us to support multiple code paths. It's important to reduce this complexity while keeping it safe.\n\nGitLab 14.0 removes all migrations that were added before the GitLab 13.12 release. **Instances Running GitLab 13.11 or under must be upgraded to GitLab 13.12 before upgrading to GitLab 14.0**, otherwise you may need to recreate your Advanced Search index. You can find more information about the process of deleting migrations in our [Elasticsearch development documentation](https://docs.gitlab.com/ee/integration/advanced_search/elasticsearch.html).\n\n## API Changes\n\n### Enforce maximum attachment size on Project API uploads\n\nSome people use the [project API](https://docs.gitlab.com/ee/api/projects.html#upload-a-file) to upload large binaries to link in the Release pages. This API was originally intended only to share attachments in issues or merge requests, and should have been subject to the configured maximum attachment size (10 MB by default). GitLab 14.0 enforces the size limit, and uploads that exceed this limit now fail with a `413 Entity Too Large` error. Files that already uploaded remain downloadable.\n\n### Drop `updated_at` filter from Deployment API\n\nSome users are pulling data from the [`list project deployments`](https://docs.gitlab.com/ee/api/deployments.html#list-project-deployments) API endpoint to populate a custom-built dashboard. There is no way to restrict the API results to display only the latest changes. To overcome this, you must retrieve all records, check them one-by-one, and process only the records updated after the latest `updated_at` value in the last batch retrieved.\n\nGitLab 14.0 changes this API to make this process more efficient and performant:\n\n- `updated_after` is now `finished_after`.\n- `updated_before` is now `finished_before`.\n- Queries specifying the `updated_at` filter must set `order_by` to `updated_at`.\n\n### Limit projects returned in `GET /groups/:id/`\n\nTo improve performance, GitLab 14.0 limits the number of projects returned from the `GET /groups/:id/` API call to 100. You can still retrieve a complete list of projects with the `GET /groups/:id/projects` API call.\n\n### Remove `trace` parameter from `PUT /api/jobs/:id`\n\nGitLab Runner was previously updated to change how it communicates with GitLab. Some internal code is no longer in use, and GitLab 14.0 deprecates this unused code. Make sure your [GitLab Runner version matches your GitLab version](https://docs.gitlab.com/runner/#gitlab-runner-versions) to ensure consistent behavior.\n\n### Deprecate segments from DevOps Adoption API\n\nThe first release of the DevOps Adoption report had a concept of \"segments\". Segments were [quickly removed from the report](https://gitlab.com/groups/gitlab-org/-/epics/5251) because they introduced an additional layer of complexity on top of \"groups\" and \"projects\". Subsequent iterations of the DevOps Adoption report focuses on comparing adoption across groups rather than segments. GitLab 14.0 [removes all references to \"segments\" in the GraphQL API](https://gitlab.com/gitlab-org/gitlab/-/issues/324414) and replaces them with \"groups\".\n\nCover image by [PHOTOGRAPHER Silvia Brazzoduro](https://unsplash.com/photos/YSxcf6C_SEg) on [Unsplash](https://unsplash.com)\n{: .note}\n",[680,912,933],{"slug":1142,"featured":6,"template":683},"gitlab-moving-to-14-breaking-changes","content:en-us:blog:gitlab-moving-to-14-breaking-changes.yml","Gitlab Moving To 14 Breaking Changes","en-us/blog/gitlab-moving-to-14-breaking-changes.yml","en-us/blog/gitlab-moving-to-14-breaking-changes",{"_path":1148,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1149,"content":1155,"config":1161,"_id":1163,"_type":17,"title":1164,"_source":18,"_file":1165,"_stem":1166,"_extension":21},"/en-us/blog/q3-hackathon-recap",{"title":1150,"description":1151,"ogTitle":1150,"ogDescription":1151,"noIndex":6,"ogImage":1152,"ogUrl":1153,"ogSiteName":671,"ogType":672,"canonicalUrls":1153,"schema":1154},"What went down at the Q3'2020 GitLab Hackathon","A recap of community's accomplishments during another record-setting Hackathon on September 2-3.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663430/Blog/Hero%20Images/2018-09-13-gitlab-hackathon-cover.jpg","https://about.gitlab.com/blog/q3-hackathon-recap","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"What went down at the Q3'2020 GitLab Hackathon\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Ray Paik\"}],\n        \"datePublished\": \"2020-09-30\",\n      }",{"title":1150,"description":1151,"authors":1156,"heroImage":1152,"date":1158,"body":1159,"category":14,"tags":1160},[1157],"Ray Paik","2020-09-30","\n{::options parse_block_html=\"true\" /}\n\nThe GitLab community gathered on September 2-3 for the Q3 Hackathon and once again the GitLab Community set an impressive Hackathon record with [313 MRs](https://gitlab.com/gitlab-com/marketing/community-relations/contributor-program/hackathon/-/issues/41) submitted!\n\n## What did we accomplish?\n\nThis opening line almost needs to be a place holder for Hackathon recaps, but the GitLab community is setting new heights with each iteration. I love seeing the chart below that shows an impressive growth in wider community contributions especially over the past 4 Hackathons. \n![hackathon chart](https://about.gitlab.com/images/blogimages/hackathon-blogpost/q3-2020-hackathon-stats.png){: .shadow.medium.center}\n\nOnce again, there were a lot of frontend/UX related epics that wider community members contributed to. A good example was for migration of [Pajamas](https://gitlab.com/gitlab-org/gitlab-services/design.gitlab.com) components and the Hackathon helped chip away at more than 1,000 issues related to this migration. One of the feedback from the previous Hackathon was to also have a plenty of backend-related issues for the Hackathon, and I want to thank many GitLab team members who helped populate the list of [suggested Hackathon issues](https://gitlab.com/gitlab-com/marketing/community-relations/contributor-program/hackathon/-/issues/41#suggested-epicsissues-for-the-hackathon) with backend items. \n\nI believe we had the most number of office hour/tutorial sessions during this Hackathon and it's great to see 100+ views of many of these sessions within 24 hours of the recordings being posted on [the Hackathon playlist](https://www.youtube.com/playlist?list=PLFGfElNsQthapq-CyXBTVnT2yKqg1JrNh). If you're interested in making a further dent in 1,000+ issues related to Pajamas components migration, you should watch the [Pajamas tutorial session](https://www.youtube.com/watch?v=cbZADXJh8fg&list=PLFGfElNsQthapq-CyXBTVnT2yKqg1JrNh&index=5&t=1s). You will see that it only takes 5-10 minutes to submit an MR for these issues.\n\n## Hackathon prizes\n\nFor this Hackathon, we have a laptop sleeve for everyone who had their MRs merged by September 15th and [30 people](https://gitlab.com/gitlab-com/marketing/community-relations/contributor-program/hackathon/-/issues/42) will be receiving the prize celebrating the 2nd anniversary of the Hackathon. As we did in the past several quarters, we have a prize for second place and want to recorgnize [Gilang Gumilar](https://gitlab.com/gilangmlr), [Kev](https://gitlab.com/KevSlashNull), and [Takuya Noguchi](https://gitlab.com/tnir) who all had more than 20 MRs  merged. For the grand prize, I want to award two contributors [Rajendra Kadam](https://gitlab.com/raju249) with 54 MRs  [Jonston Chan](https://gitlab.com/JonstonChan) with 45 MRs merged! Thanks and congratulatations to everyone!\n\n![Hackathon prizes](https://about.gitlab.com/images/blogimages/hackathon-blogpost/q3-2020-hackathon-prizes.png){: .shadow.medium.center}\n## When is the next Hackathon?\n\nThe next Hackathon will take place on December 2-3, 2020. It is already advertised on [the Hackathon page](/community/hackathon/) with a new countdown clock. Please look out for more announcements as we get closer to the next Hackathon date. Also, if you have any suggestions for the Q4 Hackathon please feel free to suggest them on [the GitLab Contributors Gitter](https://gitter.im/gitlabhq/contributors).\n\n## Community challenge\n\nYou may have noticed when you scroll through the Hackathon page that we have a new prize under the [Missed the last Hackathon?](https://about.gitlab.com/community/hackathon/#community-challenge) section. GitLab team members added the `Community challenge` label to a number [issues](https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=Community%20challenge) that we want to encourage the wider community to work on. If you submit an MR for these issues and they get merged, you will receive a custom merchadise with the \"Community challenge achieved\" message. If you love coffee or tea, I think you will enjoy this cannister for your coffee beans or tea leaves. \n\n## How do I get started with contributing?\n\nA good place to start is the [Contributing to GitLab page](/community/contribute/), where you can learn how you can\ncontribute to GitLab code, documentation, translation, UX design, and **project templates**. The [project templates](https://docs.gitlab.com/ee/development/project_templates.html) help developers get started with new languages and frameworks on GitLab. You can improve [existing built-in project templates](https://docs.gitlab.com/ee/user/project/working_with_projects.html#built-in-templates) or start a new template to be distributed with GitLab.\n",[268,848,804],{"slug":1162,"featured":6,"template":683},"q3-hackathon-recap","content:en-us:blog:q3-hackathon-recap.yml","Q3 Hackathon Recap","en-us/blog/q3-hackathon-recap.yml","en-us/blog/q3-hackathon-recap",{"_path":1168,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1169,"content":1175,"config":1182,"_id":1184,"_type":17,"title":1185,"_source":18,"_file":1186,"_stem":1187,"_extension":21},"/en-us/blog/gitlab-empowers-minorities-in-tech-with-erg",{"title":1170,"description":1171,"ogTitle":1170,"ogDescription":1171,"noIndex":6,"ogImage":1172,"ogUrl":1173,"ogSiteName":671,"ogType":672,"canonicalUrls":1173,"schema":1174},"GitLab launches new resource group for minorities in tech","People of color are more likely than any other group to voluntarily leave their jobs in tech. Employee resource groups, mentorship opportunities, and allyship can create a more inclusive workplace.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681369/Blog/Hero%20Images/dib-mit-2.png","https://about.gitlab.com/blog/gitlab-empowers-minorities-in-tech-with-erg","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"We're working to empower Minorities in Tech with a new employee resource group\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sara Kassabian\"}],\n        \"datePublished\": \"2020-06-18\",\n      }",{"title":1176,"description":1171,"authors":1177,"heroImage":1172,"date":1179,"body":1180,"category":14,"tags":1181},"We're working to empower Minorities in Tech with a new employee resource group",[1178],"Sara Kassabian","2020-06-18","\n\n_This is the final part of our three-part series on diversity, inclusion and belonging. [Part one](/blog/our-journey-to-a-diverse-and-inclusive-workplace/) focuses on GitLab's diversity goals and efforts to date. [Part two](/blog/what-diversity-inclusion-and-belonging-looks-like-in-the-tech-industry/) examines some of the challenges with diversity, inclusion, and belonging in the tech industry as a whole, and shares some recommendations on how to overcome them._\n\nPeople of color are more likely than any other group to voluntarily leave their jobs in the tech industry due to persistent unfairness in the workplace – whether that is due to stereotyping and discrimination, or because opportunities for career advancement are lacking.\n\nIn the [Tech Leavers Study](https://www.kaporcenter.org/wp-content/uploads/2017/08/TechLeavers2017.pdf) by the Kapor Center for Social Impact, one-quarter of men and women from underrepresented groups reported experiences of stereotyping in the workplace.\n\n“One of the discriminations that I’ve had to deal with outright is my size and my skin color,\" says [Sharif Bennett](/company/team/#SharifATL), mid-market account executive at GitLab. “I’m about 6'3 and some would relay back to me that people that had a conversation about me and one of the things that were said about me was that I was intimidating and scary.\"\n\nThe persistence of stereotyping and discrimination in the tech workplace is just one reason why [employee resource groups (TMRGs)](https://medium.com/@sarah.cordivano/employee-resource-groups-part-1-b684aa249420), such as [GitLab’s Minorities in Tech (MIT)](/company/culture/inclusion/erg-minorities-in-tech/) TMRG, are so important. TMRGs allow team members to create a safe space for cultural exchange, connection, and opportunities for growth and mentorship. Beyond the benefits of creating a more inclusive workplace, TMRGs can help support diversity initiatives, such as offering community insight into culturally sensitive marketing campaigns or recruiting and advancing top talent from diverse talent pools.\n\n## Inside the MIT TMRG\n\nIn fall 2019, [Candace Byrdsong Williams](/company/team/#cwilliams3), diversity and inclusion partner, and GitLab team members launched four TMRGs: Pride, Women, DiversABILITY, Minorities in Tech (MIT), and the Gender Minorities TMRG is new and forthcoming.\n\nOne of the TMRGs that has come the furthest since the launch is the MIT TMRG, led by Sharif, and [Aricka Flowers](/company/team/#atflowers), manager, Digital Production at GitLab. MIT aims to create a safe space for underrepresented minorities to communicate, unite, and share experiences while working at GitLab, but participation is open to allies as well.\n\n> \"With the MIT TMRG, we aim to create a safe space for minority-identifying GitLab team members and allies to come together and have a measurable impact on how our company not only increases the diversity within our workforce but also retains and supports those who are from underrepresented communities,\" says Aricka, co-lead of the [DIB Advisory Group](/company/culture/inclusion/influencer-group-guide/). “As we launch into our first full year of operation, we have identified four priorities for the MIT TMRG and are piloting a mentorship program that gives members direct access to top leadership and enables increased support and visibility for, and communication from, diverse voices within our organization.\"\n\nMIT has four major initiatives for 2020:\n\n*   Recruit more underrepresented minorities to different roles at GitLab\n*   Participate in external events (now virtually) with community partners\n*   Internal outreach to encourage more participation from underrepresented minorities and allies at GitLab (e.g., create an internal newsletter)\n*   [Launch of the MIT Mentorship Program](/company/culture/inclusion/erg-minorities-in-tech/mentoring/), which connects underrepresented minorities with mentors who could range from people managers to senior leadership\n\n“We’ve all been at organizations where we’ve felt there has been a lack of mentorship for people of color and minorities,\" says Sharif, who along with [Darva Satcher](/company/team/#engineering-manager-create-ds), backend engineering manager Create:Knowledge and Create: Editor at GitLab, is leading the mentorship initiative.\n\n“Mentoring generally happens with executives and most of the time they mentor people who remind them of themselves,\" says Sharif. \"We wanted to develop a program that was geared toward people of color and members of the group to gain exposure as to what goes on at the executive level and c-suite executive level.\"\n\n## MIT TMRG launches mentorship program\n\nToday, GitLab has no Black or Latinx folks in leadership positions. The lack of representation for people of color at the leadership level at GitLab is a significant problem, and we are committed to remedying this by hiring or promoting a Black leader to the director level or above by 2021. [Read part one of our blog series](/blog/our-journey-to-a-diverse-and-inclusive-workplace/) to learn more about our DIB strategy.\n\nOne of the best ways to make GitLab, and the tech leadership landscape at-large, less white and male is to create opportunities for advancement specifically for people of color. Creating opportunities for growth for underrepresented minorities through mentorship with executive and senior leadership is among the most valuable diversity initiatives a company can launch, according to the [Harvard Business Review (HBR)](https://hbr.org/cover-story/2019/11/toward-a-racially-just-workplace).\n\nThe MIT Mentorship Program pilot program kicked off in June 2020, and has matched 20 underrepresented minorities at GitLab with managers and executives who have taken a similar career path. The mentee-mentor pair will identify a problem at GitLab and will work together on a project to address this gap. For example, [Romer Gonzalez](/company/team/#romerg), mid-market account executive for Latin America, at GitLab and co-lead for the DIB Advisory Group, will be working with [David Hong](/company/team/#dhong), VP of field operations at GitLab, to expand GitLab’s footprint in Latin America.\n\nThe program lasts from late June to early August 2020, and ends in a [virtual showcase](/company/culture/inclusion/erg-minorities-in-tech/mentoring/program-structure/#what-will-be-presented-in-the-showcase) in September.\n\n## We need allies in leadership\n\nWe have encouraged leaders to set the tone by creating a safe space to talk about the everyday experiences of bias, discrimination, and microaggressions that so many underrepresented minorities face in the workplace. During the DIB roundtable discussion during GitLab's company-wide meeting known as Contribute (virtual for 2020), executive leaders engaged MIT TMRG members in an honest conversation about discrimination and microaggressions in the workplace. By creating a space for candid discussion about a painful and personal topic, our leaders are taking an important step in cultivating a more inclusive work culture.\n\nSharif points out that it cannot be the responsibility of underrepresented minorities in MIT or the other TMRGs to launch diversity initiatives – allies need to join the conversation and use their privilege to advance these initiatives.\n\n“Big wins will come from interrogating seemingly mundane practices and processes, and holding managers and leaders accountable for progress toward your organization’s aspirations,\" [Dr. Melissa Thomas-Hunt](https://www.linkedin.com/in/melissa-thomas-hunt-2843196/) of Airbnb told [HBR](https://hbr.org/2019/11/the-day-to-day-work-of-diversity-and-inclusion).\n\nThe good news is, we continue to make progress at GitLab because we have made DIB a strong priority for our company.\n\n## DIB is an opportunity for GitLab\n\nBuilding a diverse and inclusive work culture where everyone feels a sense of belonging can feel daunting, but it really depends upon your mindset, says Candace. The business case for hiring from a diverse talent pool and creating growth opportunities for underrepresented minorities is clear, but there is also [intrinsic value that comes from creating an inclusive company](https://hbr.org/2018/07/the-other-diversity-dividend). By perceiving DIB as an opportunity and solution, as opposed to a problem, we can go much further.\n\n\"In tech, we’re always taught to ask what is the problem we’re trying to solve and so I would always advise fellow companies that diversity, inclusion, and belonging isn’t a problem to solve. It’s an opportunity and it’s something we should leverage,\" says Candace.\n\n_A sincere thank you to Candace, Aricka, Sharif, and the whole Minorities in Tech (MIT) team for sharing valuable insights to help make this blog series possible, and thank you to our colleagues who are committed to making GitLab a more inclusive workplace._\n\n_[Read part one of our blog series](/blog/our-journey-to-a-diverse-and-inclusive-workplace/) to learn more about our journey and strategy to accelerating progress in DIB at GitLab, and [part two to unpack some of the diversity challenges of the tech industry](/blog/what-diversity-inclusion-and-belonging-looks-like-in-the-tech-industry/), and how different companies are prioritizing DIB initiatives._\n",[890],{"slug":1183,"featured":6,"template":683},"gitlab-empowers-minorities-in-tech-with-erg","content:en-us:blog:gitlab-empowers-minorities-in-tech-with-erg.yml","Gitlab Empowers Minorities In Tech With Erg","en-us/blog/gitlab-empowers-minorities-in-tech-with-erg.yml","en-us/blog/gitlab-empowers-minorities-in-tech-with-erg",{"_path":1189,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1190,"content":1196,"config":1201,"_id":1203,"_type":17,"title":1204,"_source":18,"_file":1205,"_stem":1206,"_extension":21},"/en-us/blog/what-diversity-inclusion-and-belonging-looks-like-in-the-tech-industry",{"title":1191,"description":1192,"ogTitle":1191,"ogDescription":1192,"noIndex":6,"ogImage":1193,"ogUrl":1194,"ogSiteName":671,"ogType":672,"canonicalUrls":1194,"schema":1195},"How diversity, inclusion, and belonging looks in the tech industry","The tech industry is predominantly white and male, which has historically made it challenging for underrepresented minorities to gain a foothold in leadership.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681364/Blog/Hero%20Images/dib-mit.png","https://about.gitlab.com/blog/what-diversity-inclusion-and-belonging-looks-like-in-the-tech-industry","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How diversity, inclusion, and belonging looks in the tech industry\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sara Kassabian\"}],\n        \"datePublished\": \"2020-06-17\",\n      }",{"title":1191,"description":1192,"authors":1197,"heroImage":1193,"date":1198,"body":1199,"category":14,"tags":1200},[1178],"2020-06-17","\n\n_This is the second in our three-part series on diversity, inclusion and belonging. [Part one](/blog/our-journey-to-a-diverse-and-inclusive-workplace/) focuses on GitLab's goals and efforts to date._\n\nIt’s no secret that the tech industry has stumbled, struggled, and in some cases outright failed when it comes to building inclusive workplaces where women, people of color, members of the LGBTQ community, and other underrepresented groups are adequately represented. And how can they, when the majority of people working in and leading tech companies are white men?\n\nIn 2014 several tech companies including Apple, Facebook, and Microsoft, released their first diversity reports, which showed what many people already knew: [The majority of tech workers are white and male](https://www.wired.com/story/five-years-tech-diversity-reports-little-progress/).\n\n\"Most times when you are forming a company people tend to gather those that are a lot like them whether it be race, occupation, gender, etc. As a result you take a look at your company start-up just to realize what you have formed is not as diverse as you would like,\" explains [Candace Byrdsong Williams](/company/team/#cwilliams3), diversity, inclusion, and belonging (DIB) partner at GitLab. \"That’s what tends to happen in a lot of companies. You’re in prep and formation mode and you are thinking how can I make the best product, not how can I gather the best people.\"\n\nForced to work backwards, the CEOs of the aforementioned tech giants vowed to make diversity a top priority. For five years, millions of dollars were spent on diversity initiatives, but research suggests that dollars have done little to help move the dial forward.\n\nIn 2019 separate assessments by Wired Magazine and [TechCrunch](https://techcrunch.com/2019/06/17/the-future-of-diversity-and-inclusion-in-tech/) showed that despite all the lip service paid to diversity, there have been little gains for underrepresented groups at major tech companies. Combined, Black and Latinx employees represented just 3% to 5% of employees at the 23 highest-grossing tech companies, according to a 2016 analysis by the [Kapor Center for Social Impact](https://www.kaporcenter.org/wp-content/uploads/2017/08/TechLeavers2017.pdf).\n\nIt is not just big tech companies that have struggled to build a more diverse workforce and a more inclusive workplace – the tech industry as a whole (including GitLab) has the opportunity to grow and do better.\n\nWe’ve been recognized as the [top company for diversity](/blog/comparably-awards-gitlab-top-culture-diversity-awards/), but our leadership team has no Black or Latinx people at director-or-above levels. Learn how we aim to [accelerate hiring and promotions for Black team members by 2021](/blog/our-journey-to-a-diverse-and-inclusive-workplace/).\n\nIn far too many companies, both in the tech industry and outside of it, diversity and inclusion endeavors are built on good intentions, but rarely are those intentions held to the rigorous standards of other important business targets.\n\n## Diversity has business value\n\nThe main question here is why, when homogeneity in the workforce has been shown to be a losing strategy? There is plenty of anecdotal evidence and [empirical research from Harvard Business Review](https://hbr.org/2016/11/why-diverse-teams-are-smarter) that shows [heterogeneous teams bring gains while homogeneous teams create costs](https://hbr.org/2018/07/the-other-diversity-dividend).\n\nIn a conversation between [Marcus Carter](/company/team/#recruiter), senior sales recruiter at GitLab, and [Ryan O’Nell](/company/team/#ronell), VP of commercial sales at GitLab, Ryan said that his commitment to diversity comes from past experience that shows diverse teams are simply better at problem-solving than homogeneous teams. Hard evidence supports this assertion: Heterogeneous teams focus on facts, they process those facts more carefully and create more innovative solutions, writes David Rock and Heidi Grant of the [Neuroleadership Institute](http://www.neuroleadership.org/) in the Harvard Business Review (HBR).\n\nIt seems simple: Diverse teams drive better business results, so hire more diverse team members – but to focus solely on recruitment is short-sighted.\n\nA common misstep many companies make is looking at recruiting people of color the same way that colleges do, says [Sharif Bennett](/company/team/#SharifATL), mid-market account executive at GitLab, and the co-lead of the [Minorities in Tech (MIT) Team Member Resource Group (TMRG)](/company/culture/inclusion/erg-minorities-in-tech/). The typical workplace doesn’t have the luxury of a ton of new people coming in each year, which means reducing attrition of underrepresented minorities is vital. The best way to do that? Create opportunities for advancement and build inclusive work cultures.\n\n\"Just as important as recruitment is retention,\" says Sharif at the DIB roundtable during GitLab Virtual Contribute 2020. \"Are we creating a safe space? An environment they are connected to, where they are feeling like their work is valued? You’re going to see recruits leave if persons of color aren’t feeling valued.\"\n\nResearch indicates that the most effective diversity and inclusion strategy is one that focuses as much, if not more, on creating an inclusive work environment with opportunities for belonging and advancement.\n\nIn an [interview with HBR](https://hbr.org/2019/11/the-day-to-day-work-of-diversity-and-inclusion), [Dr. Melissa Thomas-Hunt](https://www.linkedin.com/in/melissa-thomas-hunt-2843196), head of global diversity and belonging at Airbnb, advises companies to regularly assess their performance when it comes to DIB, and set diversity and inclusion-specific metrics while also creating real opportunities for mentorship and pathways to advancement for underrepresented minorities, in particular Black employees. Otherwise, many Black employees and other underrepresented minorities will leave for new opportunities.\n\n\"Black employees need to enter generative work environments — ones that allow all people to grow, develop, and flourish, and ones that signal they are valued. Without these, there will be a revolving door of Black talent who arrive excited, energized, and ready to contribute and leave feeling unseen and demoralized,\" says Dr. Hunt to HBR.\n\n## Unfairness pushes too many underrepresented minorities out of tech\n\nSix years after the first round of diversity commitments, big tech companies such as Apple, Facebook and Twitter are pledging to do more to promote diversity and inclusion, and are donating millions to social justice initiatives and organizations supporting the Black community after public outcry following the killing of George Floyd, according to an [article from CNBC](https://www.cnbc.com/2020/06/12/six-years-into-diversity-reports-big-tech-has-made-little-progress.html). However, despite these donations and commitments, the article said progress has been slow with increasing representation of Black professionals in leadership and technical roles in many major tech companies, which continue to be lead predominately by white men.\n\nThe CNBC article analyzed employee demographic data by big tech companies and found only marginal increases in the number of Black employees at many major companies. In companies that have bigger increases in the number of Black employees, those employees are often being hired for non-technical roles in distribution centers and for support roles, which are lower-paying than technical roles. Although hiring of Black professionals and people of color may increase, there are typically higher rates of turnover among people of color than other non-minority groups, says Margaret Neale, a Stanford professor quoted by CNBC.\n\nAttrition of underrepresented minorities is certainly not unique to these big tech companies. The findings of the Tech Leavers Study shows that attrition of underrepresented minorities is a significant problem in the tech industry at-large.\n\nThe Tech Leavers Study investigated who is voluntarily leaving the tech industry and why. The findings show that underrepresented minorities are more likely than non-minority groups to voluntarily leave their jobs in the tech industry. The number one reason? **Unfairness**.\n\nUnfairness or mistreatment was the number one driver of turnover among those surveyed – a problem that costs the tech industry an estimated $16 billion annually, according to the Tech Leavers Study. Of all the underrepresented groups surveyed by the Kapor Center, men of color were the most likely to leave their job in tech due to unfairness (40%). The experiences of unfairness differed across groups, but one-quarter of underrepresented men and women of color said they experienced stereotyping in the workplace.\n\nThe antidote to unfairness? Fairness, and an effective diversity and inclusion strategy. In the Tech Leavers Study, 62% of respondents say they would have stayed at their company if the company had taken steps to create a positive and respectful work environment, and 57% of respondents would have stayed if the company had taken steps to create a fair and inclusive work culture.\n\n## Building an effective DIB strategy\n\nThe Tech Leavers Study identified five common D&I initiatives that help reduce incidents of mistreatment in the workplace. When all five initiatives are in place, there is a large reduction in experiences of unfairness, according to the study. All five strategies are implemented at GitLab, where [DIB](https://handbook.gitlab.com/handbook/values/#diversity-inclusion) is one of our core values. It is through the efforts of Candace, the leads of our five TMRGs, and the company at large that we’ve made some considerable progress.\n\n1. [Hire a D&I director](/company/team/#cwilliams3)\n2. [Set explicit diversity goals](/company/culture/inclusion/#performance-indicators)\n3. [Pay bonuses for employee referrals for employees from underrepresented backgrounds](/handbook/incentives/#referral-bonuses)\n4. [Conduct unconscious bias training](https://handbook.gitlab.com/handbook/values/#unconscious-bias)\n5. [Establish Team Member Resource Groups (TMRGs)](/company/culture/inclusion/#ergs",[890],{"slug":1202,"featured":6,"template":683},"what-diversity-inclusion-and-belonging-looks-like-in-the-tech-industry","content:en-us:blog:what-diversity-inclusion-and-belonging-looks-like-in-the-tech-industry.yml","What Diversity Inclusion And Belonging Looks Like In The Tech Industry","en-us/blog/what-diversity-inclusion-and-belonging-looks-like-in-the-tech-industry.yml","en-us/blog/what-diversity-inclusion-and-belonging-looks-like-in-the-tech-industry",{"_path":1208,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1209,"content":1215,"config":1220,"_id":1222,"_type":17,"title":1223,"_source":18,"_file":1224,"_stem":1225,"_extension":21},"/en-us/blog/our-journey-to-a-diverse-and-inclusive-workplace",{"title":1210,"description":1211,"ogTitle":1210,"ogDescription":1211,"noIndex":6,"ogImage":1212,"ogUrl":1213,"ogSiteName":671,"ogType":672,"canonicalUrls":1213,"schema":1214},"Our journey to a more diverse and inclusive workplace","GitLab is taking action to create a more equitable and representative workplace for underrepresented groups.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679254/Blog/Hero%20Images/dib_mit.png","https://about.gitlab.com/blog/our-journey-to-a-diverse-and-inclusive-workplace","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Our journey to a more diverse and inclusive workplace\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sara Kassabian\"}],\n        \"datePublished\": \"2020-06-16\",\n      }",{"title":1210,"description":1211,"authors":1216,"heroImage":1212,"date":1217,"body":1218,"category":14,"tags":1219},[1178],"2020-06-16","\n\nDespite the talent of Black leaders, there are glaring disparities in representation of Black professionals in positions of power in a number of industries, including in tech. About 5% of tech professionals are African American, and less than 2% of tech executives are African American, according to data from the [Harvard Business Review](https://hbr.org/cover-story/2019/11/toward-a-racially-just-workplace).\n\nGitLab is not immune to diversity disparities in leadership. At GitLab, we have [zero Black or Latinx director-and-above leaders](/company/team/structure/#layers). Our CEO, [Sid Sijbrandij](/company/team/#sytses), is committed to fixing this by hiring or promoting internally by 2021, along with a host of other diversity, inclusion, and belonging (DIB) actions that were already in development to make GitLab a more diverse and inclusive company, where everyone feels a sense of belonging.\n\n\"The past few weeks have reinforced for me the importance of being an ally and taking action to create more diversity within our company,\" says Sid. \"Our executive team believes we can do more to ensure that the diversity of our workforce better reflects the diversity we see in the world.\"\n\n\"A key metric we are focused on is the number of Black senior leaders at GitLab,\" he adds. \"Currently, we have zero Black team members at GitLab in the role of director and above. This is not a number we are proud of, so we are taking action to correct this by 2021 through hiring or promotion. We will continue to iterate on diversity goals in order to have and maintain a diverse and inclusive leadership team.\"\n\nThis blog post is the first in a multi-part look at DIB, a series that was started well before the spring 2020 deaths of George Floyd, Breonna Taylor, Ahmaud Arbery, and countless others, sparked a global movement. Racism is a global issue, and the protests over these killings in the United States has been a catalyst for action globally, in and out of the workplace. We’ll make the business case for DIB another day; instead we’re going to jump right into what we’ve done and what we still need to do at GitLab. We hope that our transparency about our journey might make it easier for other companies on the same path. It will also hold us accountable.\n\nIn recognition of the abundance of talent in the Black community, and the lack of Black director-and-above leaders at GitLab, we have committed to fixing this diversity deficit by 2021 through hiring or promotion. Based on our [self-reported employee identity data](/company/culture/inclusion/identity-data/), we are also going to look at other groups that have low or no representation on our team, such as our Latinx and Native/Pacific Islander colleagues. Our plan is to be even more intentional and rigorous about recruiting and promoting to create a more diverse and inclusive leadership team, including Black, Latinx, and other underrepresented groups.\n\n## Start with values\n\nGitLab has been a company since 2014, and diversity, inclusion, and belonging have always been part of our core values. But it wasn’t a formal part of our business strategy until five years in, after we hired [Candace Byrdsong Williams](/company/team/#cwilliams3) as the diversity and inclusion partner in spring 2019. By hiring Candace, we felt we were making DIB a formal part of the company’s business strategy.\n\nResearch shows building a more inclusive workplace where everyone feels a sense of belonging is not just the right thing to do, it’s also good for business. The best way to reduce attrition of underrepresented groups and cultivate a truly inclusive workplace is to create opportunities for advancement.\n\nCandace’s role as the DIB partner is to help introduce diversity initiatives and help us create a more inclusive workplace, and there is no question that she’s made strides.\n\n\"We are now taking a deeper dive of iteration into key metrics with a closer focus on women in GitLab as a whole, women in management, and women in senior leadership,\" says Candace. \"We are paying close attention to the current trends, as well as attrition and trying to set realistic goals based on these metrics. Also as next steps, we are establishing our key metrics for race starting with Black team members using the same application with metrics.\"\n\nCandace is a team of one at GitLab, but she is making big changes to grow our DIB program. Here are just a few examples of past and upcoming projects Candace, and other internal partners, are working on:\n\n*   Established TMRGs (employee resource groups) with guidelines and continuing to stand up additional TMRGs\n*   Established the DIB Advisory Group at GitLab\n*   [Established DIB Trainings/Resources](/company/culture/inclusion/#diversity-inclusion--belonging-training-and-learning-opportunities)\n*   Conducted a DIB survey to get a pulse on how DIB is seen and felt at GitLab today\n*   Published the [Building an inclusive all-remote culture](/company/culture/inclusion/building-diversity-and-inclusion/) handbook page, which speaks to GitLab’s unique ability to create a more inclusive environment through all-remote work.\n*   [Established DIB timelines summary of events](/company/culture/inclusion/diversity-and-inclusion-events/)\n*   [Iterating on our mission statement](/company/culture/inclusion/#gitlabs-definition-of-diversity-inclusion--belonging): Established the mission statement with further iteration to now include \"Diversity, Inclusion, and Belonging.\" **Belonging** is acknowledgement of your voice being heard along with creating an environment where team members feel secure to be themselves.\n*   Established key metrics for underrepresented groups and continuing to iterate\n*   Conducts our monthly DIB company call for all to see what is going on in the DIB space at a high level\n*   Plans for a 2019 DIB report to capture our learnings from last year and continue to produce reports moving forward\n*   DIB Speaker Series: External speakers are invited to join GitLab team members in a discussion about DIB topics in Q2-Q3 2020\n*   A new issue board for TMRGs (e.g., [the Minorities in Tech Employee (MIT) TMRG issue board](https://gitlab.com/gitlab-com/diversity-and-inclusion/-/boards/1634805?label_name[]=TMRG)) to help track all the activities our TMRGs are doing\n*   Increase participation for existing and [new TMRGs](/company/culture/inclusion/erg-guide/)\n\n## It’s hard work\n\nThe fact is, building a more diverse and inclusive workplace takes time, effort, intentionality, and persistence. At GitLab, we’ve made [DIB one of our core values](https://handbook.gitlab.com/handbook/values/#diversity-inclusion), but that doesn’t mean our company is immune to the challenges.\n\nThrough research and conversation with leaders in the diversity, inclusion, and belonging space, we’ve summarized some common diversity and inclusion challenges and identified opportunities for growth in GitLab’s DIB strategy, but many of these decisions require resourcing and buy-in from leadership. Our team is reviewing these recommendations and will be considering these updates to our DIB strategy.\n\n**One of the most common challenges with diversity and inclusion is that the responsibilities are frequently allocated to a person of color who is responsible for diversity and inclusion along with their day job, according to [reporting in the HBR](https://hbr.org/cover-story/2019/11/toward-a-racially-just-workplace).**\n\n**The upside**: We’ve hired Candace, who is responsible for DIB at GitLab full-time.\n\n**The downside**: She is a team of one, meaning she has to rely on collaborative efforts with other teams and the volunteer efforts of TMRG leads.\n\nFor example, Candace planned the strategy, rollout, and process for standing up new TMRGs, then team members signed up and the TMRG leads were designated. Candace continues to work closely with TMRG leads for planning, oversight, and alignment with DIB and company goals. Another recent collaborative effort with other team members was adding executive sponsors from our E-group to TMRGs to assist in amplifying the voice and buy-in from leadership from the top down. Support from executives and visibility of leadership in DIB is imperative to its success.\n\n**We rely upon volunteers, often people from underrepresented groups, to work on diversity and inclusion initiatives along with their day jobs. This can lead to \"diversity fatigue,\" as they are the ones pushing the conversation forward or are seen as \"cultural ambassadors\" and are constantly fielding questions.**\n\n**The upside:** Our TMRG leaders are highly engaged, talented people.\n\n**The downside:** They are not paid to lead DIB efforts, but rather have a day job at GitLab that is unrelated to their work with the TMRGs.\n\n**The solution:** It is the responsibility of all team members at GitLab to drive a culture of belonging, which feeds into our recommendation to grow our ally base at GitLab. If we could grow our ally base to include more people that are not from underrepresented groups, we can help shift some of the burden from volunteers from underrepresented groups to include everyone at GitLab.\n\nIn lieu of more hires, more volunteers can increase our capacity to build more robust programs and will alleviate some of the program management burdens Candace and TMRG leaders are carrying in addition to their other jobs at GitLab.\n\n**Oftentimes, the diversity and inclusion team will be nestled within human resources, and not at the executive level, which can make it more challenging to advance diversity initiatives outside of HR activities.**\n\n**The upside**: Candace is the DIB lead and she reports to [Carol Teskey](/company/team/#cteskey), senior director of People Success, who is highly engaged in DIB initiatives. Our executive team recognizes both the business and intrinsic value of building robust DIB initiatives, and as a result we have not had the experience of DIB being sidelined; in fact DIB remains a top priority.\n\n**The downside**: We do not have anyone at the executive level that is solely responsible for DIB.\n\n**The solution**: GitLab is a growing company, and DIB is one of our core values. We are currently in the process of recruiting for a Chief People Officer, who will be responsible in part for DIB initiatives in partnership with Candace and Carol. By placing someone in a senior leadership or executive-level role that is committed to championing DIB initiatives we give DIB a seat at the executive table.\n\n**[Companies don’t often launch with a diversity and inclusion program already in place](https://hbr.org/2018/07/the-other-diversity-dividend), which means the diversity and inclusion lead has to work backwards on many initiatives. This phenomenon is often demonstrated by a homogeneous group of people (often, white men) in leadership roles.**\n\n**The upside:** We have the commitment from our CEO to work on recruiting and promoting more underrepresented groups to leadership roles. We also have buy-in from senior leadership to [build a mentorship program](/company/culture/inclusion/erg-minorities-in-tech/mentoring/) that will help people of color already working for GitLab to advance within the company. We’re also constantly iterating on our hiring process to ensure we are drawing from diverse talent pools (see below!).\n\n**The downside:** GitLab started in 2014, and our first hire devoted solely to DIB was in 2019, so we’re building and integrating programming within an existing infrastructure. There is a lack of diversity among people at the director level or higher, which we are working hard to remedy with new hires or promotions by 2021.\n\n**The solution**: The Minorities in Tech (MIT) TMRG is working with GitLab DIB to draw upon existing repositories for diverse talent by working with partners at historically Black colleges and universities (HBCUs), and organizations such as [AfroTech](https://afrotech.com/), etc. Candace has worked closely with our leadership and data team to review trends in hiring for our metrics and working on setting ambitious metrics around hiring underrepresented minorities for leadership roles.\n\nGitLab has also moved to a unique, [outbound hiring model](/handbook/hiring/candidate/faq/) that allows us to source a diverse pipeline of candidates for our [current and future roles](/jobs/). We’ve launched a number of [hiring initiatives](/company/culture/inclusion/talent-acquisition-initiatives/) to support this model and achieve our [objectives and key results](/company/okrs/fy21-q2/#3-ceo-great-team), including a training on diversity sourcing for our hiring teams and managers, as well as sourcing sessions that are dedicated to identifying candidates from underrepresented groups for some of our high-priority roles. Our approach also extends through the interview process. We’ve created [training](/company/culture/inclusion/#diversity-inclusion--belonging-training-and-learning-opportunities) on how to interview inclusively, we use inclusive language in our recruiting outreach, and we offer candidates the opportunity to connect with our employee resource group (TMRG) members during the hiring process.\n\n## The time is now\n\nThe journey to a more diverse and equitable workplace takes time, and for us the time is now. Senior leaders at GitLab are strongly engaged in DIB initiatives and have committed to allyship, but we recognize that change is happening too slowly.\n\nWe recognize that the Black community in particular is hurting right now. We see that the tech industry leaves too many talented people behind, or pushes them out due to unfair and noninclusive workplace practices. At GitLab everyone can contribute, and we want those contributions to be seen, heard, and felt at all levels of the company, by everyone in the company.\n\n_In our next blog post, we’ll dive into some of the challenges with diversity, inclusion, and belonging in the tech industry as a whole, and share some recommendations on how to overcome them._\n",[890],{"slug":1221,"featured":6,"template":683},"our-journey-to-a-diverse-and-inclusive-workplace","content:en-us:blog:our-journey-to-a-diverse-and-inclusive-workplace.yml","Our Journey To A Diverse And Inclusive Workplace","en-us/blog/our-journey-to-a-diverse-and-inclusive-workplace.yml","en-us/blog/our-journey-to-a-diverse-and-inclusive-workplace",{"_path":1227,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1228,"content":1234,"config":1240,"_id":1242,"_type":17,"title":1243,"_source":18,"_file":1244,"_stem":1245,"_extension":21},"/en-us/blog/bring-gitlab-to-classroom-nearyou",{"title":1229,"description":1230,"ogTitle":1229,"ogDescription":1230,"noIndex":6,"ogImage":1231,"ogUrl":1232,"ogSiteName":671,"ogType":672,"canonicalUrls":1232,"schema":1233},"How to bring GitLab to a classroom near you","Learn more about the education program at GitLab!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669503/Blog/Hero%20Images/susan-yin-library.jpg","https://about.gitlab.com/blog/bring-gitlab-to-classroom-nearyou","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How to bring GitLab to a classroom near you\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Christina Hupy, Ph.D.\"}],\n        \"datePublished\": \"2020-03-06\",\n      }",{"title":1229,"description":1230,"authors":1235,"heroImage":1231,"date":1237,"body":1238,"category":14,"tags":1239},[1236],"Christina Hupy, Ph.D.","2020-03-06","\n\n{::options parse_block_html=\"true\" /}\n\n\n\nJust over 2 years ago, we launched the education program at GitLab. Through this program, we provide students and faculty around the world, free, top-tier access to GitLab. Our continued goal is to enable the next generation of developers and DevOps professionals to learn GitLab while in school so they can become future contributors and evangelists.\n\nIn the spirit of iteration, the education program was started with little more than an online form and a backend process for issuing licenses. By its own merits, the program has grown to over *737 enrolled educational institutions*, from *67 countries*, and *nearly 1.5 million users*! I’m thrilled to announce that in 2020 we’ll be building on this organic momentum and taking the education program to the next level. This investment includes a new program manager ([me!](/company/team/#c_hupy)) and restructuring the program to better align our offerings with the way educational institutions teach, learn, and conduct research with GitLab.\n\nA little bit about me... Prior to joining GitLab in late 2019, I spent over a decade as a professor in the field of geospatial technology. I’m eager to bring the knowledge and experience I gained while serving in higher education to this new challenge. I also spent some time in the industry at an open-source tech startup where I developed a deep passion for bringing open-source technology into the classroom.  GitLab is a natural landing place for me to build on and expand on these passions.\n\nWe’ve got some exciting things on the horizon so please stay tuned for more details. We’d love to hear your input on how we restructure the education program so please **contribute** by commenting on our [Epic](https://gitlab.com/groups/gitlab-com/marketing/community-relations/-/epics/3). We’ll also be sending out a survey soon to measure how students and faculty are using GitLab in their teaching and research and to gather ideas on how we can better engage with our participants.\n\nIn the meantime, *are you using GitLab for teaching, learning, or research and have an interesting story you’d like to share?* Please reach out to us at education@gitlab.com. We'd love to share your story and inspire others.\n\nDon’t have GitLab? Don’t worry, you can sign up for the [education program on our website](/solutions/education/). Have questions about our program, check out our [FAQs](/solutions/education/#FAQ).\n",[933,994,955],{"slug":1241,"featured":6,"template":683},"bring-gitlab-to-classroom-nearyou","content:en-us:blog:bring-gitlab-to-classroom-nearyou.yml","Bring Gitlab To Classroom Nearyou","en-us/blog/bring-gitlab-to-classroom-nearyou.yml","en-us/blog/bring-gitlab-to-classroom-nearyou",{"_path":1247,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1248,"content":1254,"config":1260,"_id":1262,"_type":17,"title":1263,"_source":18,"_file":1264,"_stem":1265,"_extension":21},"/en-us/blog/how-gitlab-handles-retrospectives",{"title":1249,"description":1250,"ogTitle":1249,"ogDescription":1250,"noIndex":6,"ogImage":1251,"ogUrl":1252,"ogSiteName":671,"ogType":672,"canonicalUrls":1252,"schema":1253},"How GitLab handles retrospectives","Take a peek at how the GitLab team holds monthly retrospectives.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668426/Blog/Hero%20Images/retrospectivesgitlabpost.jpg","https://about.gitlab.com/blog/how-gitlab-handles-retrospectives","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How GitLab handles retrospectives\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Suri Patel\"}],\n        \"datePublished\": \"2019-12-19\",\n      }",{"title":1249,"description":1250,"authors":1255,"heroImage":1251,"date":1257,"body":1258,"category":14,"tags":1259},[1256],"Suri Patel","2019-12-19","\nEach month, GitLab’s engineering team hold a retrospective to learn and improve as much as possible from [every monthly release](/releases/). Retrospectives are the preferred method for GitLab team members [focused on improvement](https://handbook.gitlab.com/handbook/values/#focus-on-improvement) and ensures that our technical debt doesn’t grow faster than our code base.\n\n> “When we say retrospective, here’s what we have in mind: A special meeting where the team gathers after completing an increment of work to inspect and adapt their methods and teamwork. Retrospectives enable whole-team learning, act as catalysts for change, and gener-ate action. Retrospectives go beyond checklist project audits or per-functory project closeouts. And, in contrast to traditional post-mortems or project reviews, retrospectives focus not only on the development process, but on the team and team issues. And team issues are as challenging as technical issues – if not more so.” — [Agile retrospectives: Making good teams great](https://www.amazon.com/Agile-Retrospectives-Making-Pragmatic-Programmers-ebook/dp/B00B03SRJW)\n\nSince retrospectives can cultivate a culture of transparency, trust, collaboration, and communication, we want to share the steps our team takes in order to ship every month.\n\n## Engineering-wide retrospectives\n\nIn line with our [value of transparency](https://handbook.gitlab.com/handbook/values/#transparency), we livestream the meetings to YouTube and monitor the chat for questions from viewers. We also have a publicly available document for [retrospective notes](https://docs.google.com/document/d/1nEkM_7Dj4bT21GJy0Ut3By76FZqCfLBmFQNVThmW2TY/edit?usp=sharing) so that we can [efficiently refer back to decisions, insight, and comments](https://handbook.gitlab.com/handbook/values/#write-things-down).\n\nIn each retrospective, the team methodically works through the same discussion points:\n\n1. **Previous retrospective improvement tasks**: The moderator reviews the improvements the team identified in the last retrospective and discuss progress on those items.\n1. **What went well this month**: Teams are encouraged to celebrate the ways in which we exceeded expectations either individually or as a team.\n1. **What went wrong this month**: Teams are encouraged to identify mistakes and unmet goals. The focus is to highlight areas that didn’t meet our expectations as a team.\n1. **How we can improve**: The team engages in [blameless problem solving](https://handbook.gitlab.com/handbook/values/#blameless-problem-solving) to identify how subsequent releases can improve. Are there changes we can make in workflow? Is there a potential silo forming? Do changes need to be made in communication and collaboration?\n1. **Improvements for next release to track**: At the end of each retrospective, the [Engineering Productivity team](/handbook/engineering/quality/#engineering-productivity) triages improvement items identified during the retrospective. Having a single owner of triaging enables the awareness of the bigger picture technical debt and backstage work required. The individuals issues are assigned to other teams or engineers to execute.\n\nRetrospectives are publicly live streamed each month. Take a look at the retrospective for 12.5. 🍿\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/tkwo9xisg90\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n## Team retrospectives\n\n[Team retrospectives](/handbook/engineering/management/group-retrospectives/) are held to inform the function-wide retrospective for any given release. [Sean McGivern](/company/team/#smcgivern), engineering manager, Plan:Project Management, wrote a [great article on using GitLab CI to automate monthly releases](/blog/how-we-used-gitlab-to-automate-our-monthly-retrospectives/). Using scheduled pipelines to create an issue early in the release cycle, teams can contribute to the retro issue while they’re still working on the release.\n\n> “It doesn’t matter whether you have four or five labels of things on your retro board, or exactly how you do the retro. What does matter is the notion of thinking about what we're doing and how we can do better, and it is the team that’s doing the work that does this, that is the central thing.” — [Martin Fowler](https://martinfowler.com/articles/agile-aus-2018.html)\n\nIn this [team retrospective issue](https://gitlab.com/gl-retrospectives/create-stage/editor/issues/6), the Create:Editor team takes a look at what went well, what didn’t go well, what can be improved, which issues shipped, and which issues slipped in the [12.5 release](/blog/gitlab-12-5-released). In team retro issues, individuals can gauge how others experienced the release and discuss points raised by teammates.\n\nHere’s a video of the [Plan team](/handbook/product/categories/#plan-stage) holding a retrospective to discuss recent slipped issues. 🍿\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/QA3LlJOi0Ik\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n## Asynchronous retrospectives\n\nSince GitLab is an [all-remote company](/company/culture/all-remote/), we strongly encourage [asynchronous communication](/handbook/communication/#internal-communication), since team members can be located in any of the [65 countries](/company/team/) where GitLab team members live. We apply asynchronous communication to our retrospectives to ensure that everyone can contribute and document their experiences.\n\nAsynchronous retrospectives are not just for remote teams. They can also be used by colocated teams to facilitate open discussion when team members have the bandwidth to dedicate to problem solving. Furthermore, asynch retros can serve as a dedicated place where people can quickly jot down their thoughts when they suddenly remember an experience, rather than be forced to remember everything during a dedicated call.\n\n## Retrospectives: The impact on culture\n\n[When retrospectives are run efficiently](/handbook/engineering/management/group-retrospectives/), these meetings can build mutual trust, communication, and collaboration. They cultivate a culture of continuous learning and improvement, two characteristics of any strong Agile team. The more teams can determine how to efficiently build software, the more value they can bring to users.\n\nCover image by [Shane Aldendorff](https://unsplash.com/@pluyar?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/photos/mQHEgroKw2k).\n{: .note}\n",[826,848,783],{"slug":1261,"featured":6,"template":683},"how-gitlab-handles-retrospectives","content:en-us:blog:how-gitlab-handles-retrospectives.yml","How Gitlab Handles Retrospectives","en-us/blog/how-gitlab-handles-retrospectives.yml","en-us/blog/how-gitlab-handles-retrospectives",{"_path":1267,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1268,"content":1274,"config":1279,"_id":1281,"_type":17,"title":1282,"_source":18,"_file":1283,"_stem":1284,"_extension":21},"/en-us/blog/agile-for-developers-refactor-code",{"title":1269,"description":1270,"ogTitle":1269,"ogDescription":1270,"noIndex":6,"ogImage":1271,"ogUrl":1272,"ogSiteName":671,"ogType":672,"canonicalUrls":1272,"schema":1273},"Agile for developers: Refactoring code","The time commitment involved in refactoring may cause hesitation, but the impact on developer productivity and efficiency outweighs the initial discomfort.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680945/Blog/Hero%20Images/refactorpost.jpg","https://about.gitlab.com/blog/agile-for-developers-refactor-code","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Agile for developers: Refactoring code\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Suri Patel\"}],\n        \"datePublished\": \"2019-12-18\",\n      }",{"title":1269,"description":1270,"authors":1275,"heroImage":1271,"date":1276,"body":1277,"category":14,"tags":1278},[1256],"2019-12-18","\n\nIt’s difficult to cook in a cluttered, untidy kitchen. You need a specific knife, but it needs to be washed. You need that one mixing bowl, but it’s not in the cabinet where you usually keep it. You can’t find a place for the cutting board, because the countertop has no room. Software development is similar to cooking - you need a tidy codebase to deliver rapidly. If you don’t clean your code as you develop, you can find yourself surrounded by a mess. Fortunately, refactoring code helps you keep your [source code](/solutions/source-code-management/) neat and tidy.\n\n## Refactor code to accelerate Agile delivery\n\nRefactoring simplifies the design of code, without altering its behavior, to increase maintainability and readability. Teams refactor code before adding updates or releasing features in an effort to improve code quality so that future iterations built on original code are not bogged down by confusion and clutter. As such, this process helps to [accelerate Agile delivery](/solutions/agile-delivery/).\n\n>  “None of my inventions came by accident. I see a worthwhile need to be met and I make trial after trial until it comes.” — Thomas Edison\n\nRefactoring isn’t a random exercise in which developers tinker with code. It’s a precise process designed to enhance the internal structure of a program’s source code. While it may seem like a tedious task, refactoring has long-term business value.  \n\n## How to get started with refactoring\n\nStaring at unrefactored code trying to determine where to start can be a frightening experience. Fortunately, there are a few methods you can use to make refactoring a little easier. \n\n### Incremental refactoring\n\nThe simplest way to get started is to make small improvements. Make a list of the parts of your system that change most often and refactor those areas. Making incremental improvements on the files that your team works with most often can help you steadily work through your code. By targeting the areas that are used most often, refactoring can have a significant impact on your overall system.\n\n### Test-driven development\n\nYou can think of test-driven development as cleaning as you’re coding. If you’d like to revolutionize the way your team develops and make refactoring an integrated aspect of your workflow, you can embrace test-driven development, which incorporates coding, unit tests, and refactoring to program in short development cycles. Developers write a failing automated test to define a new function before writing the smallest amount of code to pass the test. The code is then refactored to an ideal state.\n\n## The benefits of refactoring code\n\nRefactoring prevents code rot, such as bad dependencies between classes, myriad patches, incorrect allocation of class responsibilities, and duplicate code, resulting in a more efficient code base. The time taken to refactor pays dividends, since it’s easier to clean code closer to when it was written rather than rush to fix problems later.\n\nThe time commitment involved in refactoring may cause hesitation, but the impact on developer productivity and efficiency outweighs the initial discomfort. When developers take the time to refactor, they continually maintain a tidy source code so that other developers can easily deliver without running into problems. Refactoring helps create a culture of shared responsibility, trust, and collaboration.\n\nWith refactoring, the QA and debugging stages are simpler, since there is more cohesion to the overall code. Furthermore, software assets can be extended for years, allowing users to experience prolonged value rather than dealing with an unusable system. \n\n## What’s next for your team?\n\nAgile techniques have the power to transform your team’s culture, sparking seamless delivery, innovation, and collaboration. Depending on your team’s challenges, there’s a technique to help your team through it. With [pairing sessions](/blog/agile-pairing-sessions/), your developers can bridge knowledge gaps, increase communication, and develop solutions to challenging problems. By [strengthening group development](/blog/how-to-strengthen-agile-teams-with-tuckmans-model/), you can help your team rebuild after breaking down silos. When your team [embraces an Agile mindset](/blog/agile-mindset/), they’re more flexible and can easily adapt to changes. Refactoring is one step in a journey to help your team cultivate a strong Agile culture. \n\nCover image by [Barn Images](https://unsplash.com/@barnimages?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/photos/t5YUoHW6zRo)\n{: .note}\n",[826,848,783],{"slug":1280,"featured":6,"template":683},"agile-for-developers-refactor-code","content:en-us:blog:agile-for-developers-refactor-code.yml","Agile For Developers Refactor Code","en-us/blog/agile-for-developers-refactor-code.yml","en-us/blog/agile-for-developers-refactor-code",{"_path":1286,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1287,"content":1293,"config":1298,"_id":1300,"_type":17,"title":1301,"_source":18,"_file":1302,"_stem":1303,"_extension":21},"/en-us/blog/dotscience-mlops-integration",{"title":1288,"description":1289,"ogTitle":1288,"ogDescription":1289,"noIndex":6,"ogImage":1290,"ogUrl":1291,"ogSiteName":671,"ogType":672,"canonicalUrls":1291,"schema":1292},"Dotscience announces MLOps integration with GitLab","The combination of GitLab and Dotscience provides a fully integrated DevOps & MLOps platform.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680952/Blog/Hero%20Images/dotscience-gitlab.png","https://about.gitlab.com/blog/dotscience-mlops-integration","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Dotscience announces MLOps integration with GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Chris Sterry, Dotscience\"}],\n        \"datePublished\": \"2019-12-18\",\n      }",{"title":1288,"description":1289,"authors":1294,"heroImage":1290,"date":1276,"body":1296,"category":14,"tags":1297},[1295],"Chris Sterry, Dotscience","\n\nToday, I am proud to announce our new partnership with GitLab and [Dotscience](https://dotscience.com). GitLab and Dotscience are passionate about bringing [DevOps tools](/topics/devops/) and processes to the AI/ML ecosystem with the goal of achieving MLOps. The combination of GitLab and Dotscience provides a fully integrated DevOps & MLOps platform by combining source repository, issue tracking, and continuous integration. Together we can offer a machine learning environment that provides the ability to build, train, deploy, monitor, reproduce data, code, and models, and collaborate on notebooks.\n\n## Dotscience and GitLab integration\n\nThe integration highlights include the following:\n\n* Combine Dotscience and GitLab to achieve a complete DevOps & MLOps platform\n* Apply the same merge request workflow you know and love in GitLab to AI & ML projects with [Jupyter](https://jupyter.org) Notebooks, data, parameters & metrics with Dotscience\n* Customize the Docker images you build in Dotscience by implementing the Docker build step of deploying an ML model to production as a GitLab repo, custom Dockerfile + build pipeline\n\n## Let’s see it in action\n\n[Luke Marsden](https://uk.linkedin.com/in/luke-marsden-71b3789) and I sat down with [Tina Sturgis](/company/team/#TinaS), manager of partner marketing at GitLab, and provided a little overview of the integration.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/xIyoq6gnyEo\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nReady to give it a spin? The easiest way to get started is to sign up for a free trial at Dotscience and read the integration [documentation](https://dotscience.com/partners/gitlab/).\n\nDotscience is also available on-prem, on AWS, Azure and Google Cloud, and in multi-cloud configurations.\n\nIf you have questions, please join our [Slack](https://join.slack.com/t/dotmesh-community/shared_invite/enQtMjU0NzczMTQ2MDgxLTY5MmMwZDdmZjVmOTQ3MjYxMjg3OGQwYzg5MTdiZDJmNTc3Y2I3ZWI2NTUzMGQxNTY3MDVlNTllOWJmNTE4NDQ) channel.\n",[268,232,680],{"slug":1299,"featured":6,"template":683},"dotscience-mlops-integration","content:en-us:blog:dotscience-mlops-integration.yml","Dotscience Mlops Integration","en-us/blog/dotscience-mlops-integration.yml","en-us/blog/dotscience-mlops-integration",{"_path":1305,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1306,"content":1312,"config":1317,"_id":1319,"_type":17,"title":1320,"_source":18,"_file":1321,"_stem":1322,"_extension":21},"/en-us/blog/how-to-strengthen-agile-teams-with-tuckmans-model",{"title":1307,"description":1308,"ogTitle":1307,"ogDescription":1308,"noIndex":6,"ogImage":1309,"ogUrl":1310,"ogSiteName":671,"ogType":672,"canonicalUrls":1310,"schema":1311},"Strengthen your Agile teams with Tuckman's stages of group development","Learn how to build up your agile teams  teams after breaking down silos for further group development","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680924/Blog/Hero%20Images/tuckmansstages.jpg","https://about.gitlab.com/blog/how-to-strengthen-agile-teams-with-tuckmans-model","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Strengthen your Agile teams with Tuckman's stages of group development\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Suri Patel\"}],\n        \"datePublished\": \"2019-12-13\",\n      }",{"title":1307,"description":1308,"authors":1313,"heroImage":1309,"date":1314,"body":1315,"category":14,"tags":1316},[1256],"2019-12-13","\n\nThe silos between development and operations teams are a common source of friction and bottlenecks. When teams battle silos, cycle time increases and business value stalls. Recently, software leaders have learned how to break down silos through communication and collaboration, but learning how to rebuild teams is a greater challenge. How can teams come together when their traditional behaviors and relationships have changed?\n\n## The answer: Tuckman's stages of group development\n\nIn 1965, psychologist Bruce Tuckman [published a study on the developmental sequence in   small groups](http://web.mit.edu/curhan/www/docs/Articles/15341_Readings/Group_Dynamics/Tuckman_1965_Developmental_sequence_in_small_groups.pdf). His findings highlighted the importance of four stages of development - forming, storming, norming, and performing - in order for a group to ideate, collaborate, plan, and deliver. \n\n**In the forming stage**, groups identify challenges and goals. Team members orient themselves to acceptable interpersonal behaviors and test boundaries to guide their interactions. **In the storming stage**, team members build trust by sharing their thoughts, which oftentimes leads to conflict, and discover various working styles. **In the norming stage**, the group resolves their differences and begins building a stronger sense of community and closeness. Individuals understand that they have common goals and must work together to achieve them. **In the performing stage**, the team achieves goals, functions independently, and resolves conflicts. Team members support each other and are more flexible in their roles.\n\n## How to strengthen Agile teams\n\nWhen leaders break down silos, team members often feel adrift due to the sudden cultural shift. To prevent a dysfunctional culture in which individuals don’t trust and support each other, leaders must make group development a priority. Applying Tuckman’s four stages to [Agile team development](/solutions/agile-delivery/) can result in a stronger dynamic. \n\n### Forming\n\nWhen management forms an Agile team, considering strengths and skills is a necessary aspect of purposefully curating a team. Team members should complement each other but not mirror each other, since the goal of an Agile team is to have a cross-functional team in which various members bring their strengths to work together. \n\nAfter eliminating silos, leaders must model and identify the behavior they want the team to adopt. Team members will look to a leader, such as a Scrum Master, for guidance. It’s typical for individuals to focus solely on their work rather than view the team as a collective entity working towards a goal. When this happens, it’s up to the Scrum Master to help individuals develop a shared mentality. After each ideation or sprint, the Scrum Master should gather the team to conduct a retrospective to understand what went well, what went wrong, and how to improve during the next ideation. Team members can work together to identify goals, assisting in the development of a sense of community. \n\n### Storming\n\nOnce individuals begin to see each other as teammates, conflict can arise, since people feel more comfortable sharing their opinions. When rebuilding teams after eliminating silos, it’s natural for individuals to shift blame onto others, so the goal in this stage is to cultivate trust, communication, and collaboration. \n\nThe Scrum Master is responsible for helping teammates resolve conflict, manage tension, and coach behaviors. As a calming influence on the team, the Scrum Master can quickly resolve conflicts and help the team remain productive. By documenting decisions, committing to transparency and visibility, and collaborating to determine solutions, teams can create an open culture in which experimentation is embraced and shortcomings are viewed as learning opportunities. Team members should continue to feel safe dissenting and sharing thoughts, but the focus should be on continuous improvement and identifying solutions rather than placing blame. \n\n### Norming \n\nTransitioning from Storming to Norming can be a difficult endeavor for many Agile teams, but once the shift is made, the focus becomes empowerment and implementation. After learning how to resolve conflict in the previous stage, the team is now able to embrace differences and view challenges from multiple perspectives. \n\nRetrospectives should become a ritual that occurs after each sprint. When the team moves to Norming, the next retro should set aside time to plan for sustainable delivery. The Scrum Master and other leaders should provide feedback to team members, while teammates provide feedback on processes and workflows. At this point in the group’s development, the individuals see themselves as part of a team working towards shared goals. There is mutual trust and open communication, and the team works together as a cohesive unit.\n\n### Performing\n\nAt this stage, the team is highly motivated and interested in expanding their efforts. Leadership should assume a supporting role, since the team now functions autonomously with an emphasis on continuous learning. Because teams seek to improve, they’re able to identify bottlenecks, the potential for silos, and impediments to innovation. \n\nThe team is now fully formed and productive. Individuals collaborate and communicate well, and they have a strong sense of identity and vision. The Agile team consistently delivers and embraces change. \n\nAny time groups evolve or new leadership walks through the door, teams can feel insecure and relive one or more of these stages. By implementing these techniques with your team, you can support your team’s growth and development, helping them maintain a strong Agile methodology and culture.\n\nCover image by [Markus Spiske](https://unsplash.com/@markusspiske?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/photos/vrbZVyX2k4I)\n{: .note}\n",[826,848,783],{"slug":1318,"featured":6,"template":683},"how-to-strengthen-agile-teams-with-tuckmans-model","content:en-us:blog:how-to-strengthen-agile-teams-with-tuckmans-model.yml","How To Strengthen Agile Teams With Tuckmans Model","en-us/blog/how-to-strengthen-agile-teams-with-tuckmans-model.yml","en-us/blog/how-to-strengthen-agile-teams-with-tuckmans-model",{"_path":1324,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1325,"content":1331,"config":1336,"_id":1338,"_type":17,"title":1339,"_source":18,"_file":1340,"_stem":1341,"_extension":21},"/en-us/blog/updates-from-aws-reinvent",{"title":1326,"description":1327,"ogTitle":1326,"ogDescription":1327,"noIndex":6,"ogImage":1328,"ogUrl":1329,"ogSiteName":671,"ogType":672,"canonicalUrls":1329,"schema":1330},"Highlights from AWS re:Invent 2019","DevOps dining, selecting jukebox tunes, learning ‘Dog’Ops from Wag!, supporting Graviton, and more from AWS re:Invent 2019.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666262/Blog/Hero%20Images/default-blog-image.png","https://about.gitlab.com/blog/updates-from-aws-reinvent","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Highlights from AWS re:Invent 2019\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Tina Sturgis\"}],\n        \"datePublished\": \"2019-12-13\",\n      }",{"title":1326,"description":1327,"authors":1332,"heroImage":1328,"date":1314,"body":1334,"category":14,"tags":1335},[1333],"Tina Sturgis","\n\nAWS re:Invent is both energizing and exhausting all at the same time. Come on... admit it, you think so too! But, it is actually one of my favorite events of the year. It is just me and approximately 65,000 of my best friends coming together to hear what AWS is up to and how it will effect GitLab and our joint users. \n\n\n## AWS announcements and how they relate to GitLab\n\n**Transformation.** I am a sucker for a transformation theme and AWS didn’t disappoint this year. Whether we are talking transformation personally or in our business, I can’t help but visualize a caterpillar transforming into a beautiful butterfly. \n\nAWS internally reflected as well as challenged their customers to think about “How should we reinvent ourselves?” In the [keynote with Andy Jassy](https://www.youtube.com/watch?v=7-31KgImGgU), Goldman Sachs, and Verizon each told their stories about transforming their business with AWS. While each story was a little different, they all talked about what they have accomplished with AWS. \n\nI sat back and reveled in the fact that the ‘untold’ story of [Goldman Sachs](/customers/goldman-sachs/) is that GitLab’s [DevOps platform](/solutions/devops-platform/) is used exclusively by their dev teams across the entire software development lifecycle. They have been able to remove toolchain complexity while going from providing a build once every two weeks to over a thousand per day. Talk about a transformation. Just imagine the velocity in their build cycle that they are able to achieve. \n\n**Amazon Fargate for Amazon EKS.**: Customers asked and AWS took action by launching Amazon Fargate for Amazon EKS. This is big news seeing that 84% of all Kubernetes installations run on AWS. So if you are looking to manage your containers at the task level, this announcement should have you dancing in your seat. Two out of five new container customers choose to start their container journey with Amazon Fargate, citing its overall ease of use. GitLab already supports Amazon Fargate and Amazon EKS, so it is very natural that we are excited about this new launch. Have a look at our [Trek10 customer case study](/customers/trek10/) to learn more about how it is using GitLab and Amazon Fargate today.\n\n**AWS Graviton**: AWS announced the next generation of Graviton with native runners for 32 and 64-bit ARM-based processors. GitLab already supports this service and our customers are already contributing.\n\n## WAG!’s phased approach to ‘Dog’Ops...errrrr DevOps \n\nDave Bullock from Wag! went through the first two phases of the transformation journey with both AWS and GitLab. Some of my favorite highlights from his talk, in his words, were:\n\n```\n“Automate all the things!”\n\n“We wanted Dev to work locally to test and monitor themselves so they take ownership.”\n\n“Everything as code! Code, not clicks!”\n\n“Everything is built into the pipeline...if something happens you can rollback at each step.”\n\n“Change is hard, things break! No one is perfect.”\n```\n\nWatch the full [Wag! story](https://youtu.be/HfEl9GXZC0s) from AWS re:Invent. \n\n\n\n## The importance of early security\n\n[Brandon Jung](/company/team/#bjung), our VP of alliances and board member at the Linux Foundation, sat down with Stu Miniman and John Walls, hosts of [theCUBE](https://www.thecube.net), to talk about how [GitLab empowers DevOps while making CISOs happy](https://siliconangle.com/2019/12/06/qa-gitlab-empowers-devops-making-cisos-happy-reinvent/). Brandon explained how GitLab users are able to include security earlier in the software development process, which saves them money because they're not iterating in the production phase.\n\nWatch [Brandon’s full interview](https://www.youtube.com/watch?v=Auua2qMYFOw).\n\n## Do you want to play a game?\n\nWe love games here at GitLab and were thrilled to be the featured SCM tool used in [AWS GameDay](https://aws.amazon.com/gameday/) at re:Invent this year. AWS GameDay is an interactive team-based learning exercise designed to give players a chance to put their AWS skills to the test in a real-world, gamified, risk-free environment. Expect to see us \"play\" a bigger role in AWS GameDay in 2020. \n\nThis year, the GitLab DevOps Diner-themed booth earned an honorable mention for the [best booth by AWS](https://twitter.com/AWSreInvent/status/1202735726153981953). Our corporate events team stayed laser-focused and each and every corner of the booth, including the swag, had the diner theme. My personal fav was the jams on the jukebox – I think this is a must-have in every one of our booths. We are already thinking about how to outdo the diner theme in 2020.\n\n![GitLab Diner at AWS](https://about.gitlab.com/images/blogimages/gitlabdiner.jpg){: .shadow.medium.center}\n\nLet’s keep the conversation going...what were your favorite parts at re:Invent this year? Comment here or ping me on Twitter @t_sturgis!\n",[268,743,848,278,680],{"slug":1337,"featured":6,"template":683},"updates-from-aws-reinvent","content:en-us:blog:updates-from-aws-reinvent.yml","Updates From Aws Reinvent","en-us/blog/updates-from-aws-reinvent.yml","en-us/blog/updates-from-aws-reinvent",{"_path":1343,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1344,"content":1350,"config":1357,"_id":1359,"_type":17,"title":1360,"_source":18,"_file":1361,"_stem":1362,"_extension":21},"/en-us/blog/how-to-setup-gitlab-for-multiple-product-teams",{"title":1345,"description":1346,"ogTitle":1345,"ogDescription":1346,"noIndex":6,"ogImage":1347,"ogUrl":1348,"ogSiteName":671,"ogType":672,"canonicalUrls":1348,"schema":1349},"Managing multiple product categories in GitLab","Exploring issue mangement options for product teams that are all contributing to a single repository.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680898/Blog/Hero%20Images/filing-cabinet.jpg","https://about.gitlab.com/blog/how-to-setup-gitlab-for-multiple-product-teams","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Managing multiple product categories in GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Gabe Weaver\"}],\n        \"datePublished\": \"2019-12-05\",\n      }",{"title":1345,"description":1346,"authors":1351,"heroImage":1347,"date":1353,"body":1354,"category":14,"tags":1355},[1352],"Gabe Weaver","2019-12-05","\nThis blog post was originally published on the GitLab Unfiltered blog. It was reviewed and republished on 2019-12-30.\n{: .alert .alert-info .note}\n\nIn a [recent tweet](https://twitter.com/mrguillaum/status/1202530376415088641), a member of the wider GitLab community asked how to set up GitLab so multiple product teams, each with their own unique workflows, could contribute effectively to a single repository. Let's explore some options.\n\n## GitLab's approach\n\nGiven that GitLab is growing very quickly, we've had to put a lot of thought into organizational structure and mapping to create a well structured workflow within GitLab. The entirety of the product surface area is comprised of [seven distinct product sections](/handbook/product/categories/). Each section consists of several [stages](/handbook/product/categories/#hierarchy), and each stage contains several categories. Our cross-functional product teams are called groups and the groups typically own a handful of categories within a stage. For example, [I'm the senior product manager for the Project Management group](/company/team/#gweaver), which is responsible for the [issue tracking](https://docs.gitlab.com/ee/user/project/issues/), [Kanban boards](https://docs.gitlab.com/ee/user/project/issues/index.html#issue-boards), and [time tracking](https://docs.gitlab.com/ee/user/project/time_tracking.html#time-tracking) categories. There are two other groups within the Plan stage.\n\nWhile each product team can technically have their own workflow, we've deliberately tried to standardize across teams. We accomplish this primarily through leveraging group level issue boards and labels. I've created a [demo group](https://gitlab.com/tech-marketing/demos/gitlab-agile-demo/demo-group/examples-for-configuring-gitlab-for-multiple-product-teams/gitlab-approach) where you can see the our basic approach setup directly within GitLab. The first step to get up and running is to configure the labels. Within our top level group, we've created specific label sets to help us organize our issues, MRs, and issue boards.\n\n### Labels for managing ownership and surface area:\n\n- `stage::name` denotes which issues belong to a given stage. In the demo, I created the `stage::plan` label. This is especially useful for filtering issue boards. By using the [scoped label](https://docs.gitlab.com/ee/user/project/labels.html#scoped-labels) syntax, we get mutually exclusive labels so an issue or MR can only ever be assigned to a single stage.\n- `group::name` denotes which issues belong to a given cross-functional product team. In the demo, I created `group::project management`, `group::portofolio management`, and `group::certify`, which are the actual groups within GitLab's Plan stage. Again, the use of scoped labels assures mutual exclusivity.\n- `category::name` denotes which issues belong to a given category within a stage. In the demo, I created `category::epics`, `category::issue boards`, `category::issue tracking`, `category::requirements management`, `category::roadmaps`, and `category::service desk`, which are the main categories within the Plan stage.\n\n### Labels for tracking workflow and issue types:\n\n- `type::name` denotes the type of issue. In the demo, I've created `type::debt`, `type::feature`, and `type::defect`. Given an issue can only ever be one type, the use of the scoped label syntax is best.\n- `workflow::state` denotes which workflow state an issue is in. In the demo, I've created `workflow::validation backlog`, `workflow::problem validation`, `workflow::solution validation`, `workflow::planning breakdown`, `workflow::scheduling`, `workflow::ready for dev`, `workflow::in dev`, `workflow::review`, and `workflow::verification`. You can design your workflow however you want, but it is helpful to have a [discussion](https://gitlab.com/gitlab-org/plan/issues/34) with your team to clarify transitions from one workflow state to another.\n\nWith our labels in place, we can now spin up some group level issue boards for the different product teams. The [Project Management team's issue board](https://gitlab.com/groups/tech-marketing/demos/gitlab-agile-demo/demo-group/examples-for-configuring-gitlab-for-multiple-product-teams/gitlab-approach/-/boards/1438121?&label_name[]=group%3A%3Aproject%20management&label_name[]=stage%3Aplan) uses a common naming convention and is scoped to only include issues that contain the `group::project management` and `stage::plan` labels. The lists are set up according to the `workflow::*` labels we defined earlier. The [Portfolio Management](https://gitlab.com/groups/tech-marketing/demos/gitlab-agile-demo/demo-group/examples-for-configuring-gitlab-for-multiple-product-teams/gitlab-approach/-/boards/1438186?&label_name[]=group%3A%3Aportfolio%20management&label_name[]=stage%3Aplan) and [Certify](https://gitlab.com/groups/tech-marketing/demos/gitlab-agile-demo/demo-group/examples-for-configuring-gitlab-for-multiple-product-teams/gitlab-approach/-/boards/1438188?&label_name[]=group%3A%3Acertify&label_name[]=stage%3Aplan) teams use a similar structure. The benefit of standardizing on a workflow is that it allows you to easily move from one team to the next and understand what's going on, as well as create rollup issue boards that cut across many teams. In the demo, I created a [stage level issue board](https://gitlab.com/groups/tech-marketing/demos/gitlab-agile-demo/demo-group/examples-for-configuring-gitlab-for-multiple-product-teams/gitlab-approach/-/boards/1438190?&label_name[]=stage%3Aplan) for Plan. All of the issues belong to the same project that contains the single repository where all of the product teams contribute.\n\nThe last thing to cover is using milestones to align everyone around a shared release cadence. In the demo, I created [two group milestones](https://gitlab.com/groups/tech-marketing/demos/gitlab-agile-demo/demo-group/examples-for-configuring-gitlab-for-multiple-product-teams/gitlab-approach/-/milestones) that all of the issues map to. This allows you to see progress at a high level as well as a breakdown of issue status by label type. We're currently working on allowing an issue to be associated to [multiple milestones](https://gitlab.com/gitlab-org/gitlab/issues/5135), enabling milestones to have [types](https://gitlab.com/gitlab-org/gitlab/issues/35290), and adding [burnup charts](https://gitlab.com/gitlab-org/gitlab/issues/6903) to milestones. Once these launch, teams will have even more flexibility to create shared milestones as well as team-specific milestones.\n\n## Other options\n\nThere are a few less desirable ways to setup GitLab to help coordinate multiple product teams:\n\n### The project approach\n\nWith [the project approach](https://gitlab.com/examples-for-configuring-gitlab-for-multiple-product-teams/project-approach), you can create a project for each individual team and disable the repo. Then create a shared repo where all the merge requests go. Each product team would then have its own project-level milestones, issue boards, and issues, but could still nicely tie into the shared repository. Here's an [example issue and MR](https://gitlab.com/examples-for-configuring-gitlab-for-multiple-product-teams/project-approach/portfolio-management-team/issues/1) demonstrating how this works. The downside of this approach is that you lose the \"Create Merge Request\" button that issues will have if the issue and repo are within the same project. The \"Create Merge Request\" button allows you to quickly bootstrap your work by [spinning up a branch and WIP MR](https://gitlab.com/examples-for-configuring-gitlab-for-multiple-product-teams/gitlab-approach/shared-project/merge_requests/1). You also lose the ability to accurately track [cycle analytics](https://docs.gitlab.com/ee/user/analytics/value_stream_analytics.html) out-of-the-box because it is currently based on project level data and not group level data.\n\n### Single issue tracker project\n\nI've seen some teams use a [single issue tracker project](https://gitlab.com/examples-for-configuring-gitlab-for-multiple-product-teams/multiple-repos) with multiple repositories within the group. They use a similar labeling system described in GitLab's approach, but separate the concerns of code management from issue management. While this works, it has the same downsides as the project approach.\n\n## General best practices & conventions\n\nTo sum things up, there are some generally good practices to follow when setting up your organizational structure within GitLab:\n\n- Centralize label management within the top level group. This helps avoid label duplication and keeps all teams on the same page.\n- Manage issues via issue boards from the group level and keep issues within the same project as their repository to get the most benefit from GitLab's capabilities.\n- Create issue boards for different activities – use milestone lists for a release planning board, use scoped workflow labels for a sprint board, etc.\n- Create shared milestones within the top-level group. This allows them to cascade throughout all sub-groups and projects.\n- If you use epics, a maximum of three layers of nesting is recommended to avoid confusion and unneccessary complexity.\n- Use [GitLab triage](https://gitlab.com/gitlab-org/gitlab-triage) to create policies to help automate issue management.\n\nIf you want to talk shop or bounce around ideas, feel free to reach out via email – gweaver at gitlab dot com.\n\nCover image by [Maksym Kaharlytskyi](https://unsplash.com/@qwitka) on [Unsplash](https://unsplash.com/photos/Q9y3LRuuxmg) {: .note}\n",[1356,783],"demo",{"slug":1358,"featured":6,"template":683},"how-to-setup-gitlab-for-multiple-product-teams","content:en-us:blog:how-to-setup-gitlab-for-multiple-product-teams.yml","How To Setup Gitlab For Multiple Product Teams","en-us/blog/how-to-setup-gitlab-for-multiple-product-teams.yml","en-us/blog/how-to-setup-gitlab-for-multiple-product-teams",{"_path":1364,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1365,"content":1371,"config":1377,"_id":1379,"_type":17,"title":1380,"_source":18,"_file":1381,"_stem":1382,"_extension":21},"/en-us/blog/dev-strategy-review",{"title":1366,"description":1367,"ogTitle":1366,"ogDescription":1367,"noIndex":6,"ogImage":1368,"ogUrl":1369,"ogSiteName":671,"ogType":672,"canonicalUrls":1369,"schema":1370},"Tell us what you think about our Dev strategy","Take a look at how we're going to help you better manage, plan, and create.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668253/Blog/Hero%20Images/pencil2.jpg","https://about.gitlab.com/blog/dev-strategy-review","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Tell us what you think about our Dev strategy\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mark Pundsack\"}],\n        \"datePublished\": \"2019-12-04\",\n      }",{"title":1366,"description":1367,"authors":1372,"heroImage":1368,"date":1374,"body":1375,"category":14,"tags":1376},[1373],"Mark Pundsack","2019-12-04","\n\nThis is the first in a series of posts diving into our strategy and plans for the GitLab product. This post focuses on the [Dev section](/handbook/product/categories/#dev-section) and is an excerpt of our public [direction page for Dev](/direction/dev/), which you can read for more detail. You can also watch our director of product for Dev, [Eric Brinkman](/company/team/#ebrinkman) present the strategy below. When you're done reading (or watching), please give us your feedback via the [survey](#survey) below!\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube-nocookie.com/embed/mIpHEbyhsj0\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n![Dev Overview](https://about.gitlab.com/images/direction/dev/dev-overview.png)\nSee how the GitLab product team plans to advance our Dev strategy over the next 12 months to three years.\n{: .note.text-center}\n\n## Overview of our Dev product\n\nBefore we dive into the our vision for the future of Dev at GitLab, we're providing some more context on our product and how it fits into the market.\n\nThe Dev section is made up of the [Manage](/handbook/product/categories/#manage-stage), [Plan](/handbook/product/categories/#plan-stage), and [Create](/handbook/product/categories/#create-stage) stages of the DevOps lifecycle. These stages mark the leftmost side of the DevOps lifecycle and primarily focus on the creation and development of software. The scope for Dev stages is wide and encompasses a number of analyst categories including [value stream management](/solutions/value-stream-management/), project portfolio management, enterprise agile planning tools, source code management, IDEs, design management, and even ITSM. It is difficult to truly estimate the total addressable market (TAMkt) for the Dev section, as our scope includes so many components from various industries, but research indicates the estimated [TAM](https://docs.google.com/spreadsheets/d/1HYi_l8v-wTE5-BUq_U29mm5aWNxnqjv5vltXdT4XllU/edit?usp=sharing) in 2019 is roughly ~$3B, growing to ~$7.5B in 2023 (26.5% CAGR).\n\nBased on [DevOps tool revenue](https://drive.google.com/file/d/1VvnJ5Q5PJzPKZ_oYBHGNuc6D7mtMmIZ_/view) at the end of 2018 and comparing to GitLab annual recurring revenue at the end of FY20 Q3, our estimated market share is approximately 1.5% based on revenue. (Note: this assumes we can attribute 100% of GitLab revenue to Dev stages.) Market share based on source code management is somewhere in the [30%](https://docs.google.com/document/d/15TLEUc9BxiiB9N33MW-7zGvfitfFXQj3TM8BfM2q4hM/edit?usp=sharing) range.\n\nNearly [half of organizations](https://drive.google.com/file/d/17ZSI2hGg3RK168KHktFOiyyzRA93uMbd/view?usp=sharing) still have not adopted DevOps methodologies, despite [data](https://drive.google.com/file/d/17MNecg84AepxWlSDB5HjNBrCJggaS9tP/view?usp=sharing) that indicates far higher revenue growth for organizations that do adopt these strategies. Migrating a code base to a modern, Git-backed source control platform like GitLab can often be the first step in a DevOps transformation. As such, we must provide industry-leading solutions in source code and code review, as this is not only the entry into DevOps for our customers, but typically the entry into the GitLab platform. Once a user has begun using repositories and code review features like merge requests, they often move “left” and “right” to explore and use other capabilities in GitLab, such as CI and project management features.\n\nPer our stage monthly active user data, the GitLab stages with the highest useage are Manage and Create. As such, these stages must focus on security fixes, bug fixes, performance improvements, UX improvements, and depth more than other areas of GitLab. Plan, while introduced in 2011 with the release of issue tracking, still falls far behind market leaders who have better experiences for sprint management, portfolio management, roadmapping, and workflows.\n\nOther areas, such as value stream management, are nascent to both GitLab and the market and will require more time devoted to executing problem and solution validation discovery.\n\nOver the next year, Dev will require focus on both breadth and depth activities, and each stage will require significant investment to accelerate the delivery of security issues, performance issues, and direction items.\n\n## Vision themes\n\nOur vision for the Dev section is to provide the world’s best product creation platform. We believe we have a massive opportunity to change how cross-functional, multi-level teams collaborate by providng an experience that breaks down organizational silos and enables better collaboration. We want to deliver a solution that enables higher-quality products to be created faster. The following themes are listed below to surface our view of what will be important to the market and to GitLab over the next three to five years. As such, they will be the cornerstone of our three-year strategy, and all activities in the one-year plan should advance GitLab in one or more of these areas.\n\n### Efficient and automated code review\n\nCode review should be a delightful experience for all involved in the process. Over time, we expect the code review process to evolve from where it is today to become a mostly automated process. Along the way, incremental improvements will occur, where developer platforms like GitLab will focus on performance and usability of the code review tools. Code review should be an efficient process, and the easier GitLab can make code review, the more efficient Dev teams become. [Research indicates that better code review should reduce the number of bugs](https://blog.semmle.com/code-review-metrics/) and increase the amount of higher-quality features an organization can ship. The code review process will continue to provide a venue for developers to learn and collaborate together.\n\nFor example, GitLab will:\n\n* Load large, multi-file diffs faster than any other comparable product on the market.\n* Provide tailored insights to the code reviewer, alerting them to the most important areas to review.\n* Allow for client- and server-side evaluation of code where possible, and integrate it into the code review process.\n\n### Measurement and increased efficiency of the value stream\n\nPeter Drucker has said “[If you can’t measure it, you can’t improve it](https://guavabox.com/if-you-cant-measure-it-you-cant-improve-it/)”. Many Dev teams have no way of measuring their efficiency, and even if they do, there is not enough feedback, information, or actionable insights to improve the efficiency of their team. Even then, once efficiency is improved, it can be difficult to tell if a team’s performance is good or bad, as there is often no point of comparison. Even the best performing team in an organization could be worse than the competition. Increasing efficiency is paramount to companies increasing their **time to value** and helping organizations answer **“Is my DevOps transformation working?”**\n\nWe believe efficiency can be improved in two ways. The first way is by improving existing value stream activities and making them more efficient. This focuses on making existing activities as fast as possible. The second way is to question and change the value stream into higher value-added activities at each step. GitLab’s vision is to help answer both of these questions: “Am I doing things fast enough?” and “Am I doing the right things?”\n\nToday, value stream management is largely focused on visualizing the value chain through deployment. GitLab is uniquely positioned to also visualize, track, and measure value chain activities to the right of deployment. For example, the value created by post-launch activities, such as press releases, blog posts, and marketing campaigns should funnel into value stream management, while providing the business with the right data and insights for their value chain.\n\nFor example, GitLab will provide:\n\n* Easy-to-use and customizable tools that measure the efficiency of the DevOps lifecycle.\n* Insight into areas of waste where teams can improve.\n* Recommendations based on large data sets of other teams using GitLab, for comparison.\n* A visual experience for value stream management that goes beyond code deployment.\n\n### DevOps for more personas\n\nDevOps started with the merging of Development and Operations and has since been augmented to include Security in some circles, [highlighting DevSecOps as the next trend](/topics/devsecops/). There are many other personas that are involved in software development, such as product managers, project managers, product designers, finance, marketing, procurement, etc. These personas will continue to expand until nearly every role at knowledge-work companies touches some facet of the DevOps lifecycle. Over time, organizations will realize that teams who work out of the same platform/set of tools are more efficient and deliver faster business and customer value.\n\nBecause of this trend, each persona of the DevOps lifecycle should ultimately be treated as a first-class citizen in GitLab.\n\nFor example, GitLab will provide:\n\n* A better experience for project management workflows.\n* A space for product designers to design and collaborate on designs with product managers and engineers.\n* A Web IDE experience that is able to run the GDK, serving collaborators of all skill sets and hardware, allowing them to contribute to GitLab.\n\n### Enterprise digital transformation\n\nWhile we will continue to solve for the [modern DevOps use case first](/handbook/product/product-principles/#modern-first), most enterprise customers have custom requirements that GitLab does not solve for today. This is a wide-ranging set of custom controls that spans systems such as permissions, approvals, compliance, governance, workflows, and requirements mapping. It is our belief these needs will exist for many years to come, and we will need to incorporate these to truly become a flexible [DevOps platform](/solutions/devops-platform/) that serves enterprise segments. We will strive to do this in ways that are modern and, where possible, adhere to a [“convention over configuration”](/handbook/product/product-principles/#convention-over-configuration) approach, living with the cognitive dissonance that sometimes flexibility will be required in areas we have not been willing to venture into thus far.\n\nAdditionally, compliance, auditing, and surfacing evidence of security/compliance posture will become more important as more GDPR-like legislation is enacted and passed into law. GitLab should make it easy to not only surface and deliver evidence for GitLab controls (i.e., who has access to GitLab, who did what on what group, etc.), but also to track and manage compliance requirements for various legislation our customers may be bound to.\n\nAs examples, GitLab will provide:\n\n* Customizable workflows, unlocking enforcement, approvals, and insight into these workflows.\n* More customizable and fine-grained permissions.\n* Logs for everything that’s done within GitLab and allow those events to be accessible via the API and UI.\n* Alerting on GitLab audit events.\n\n### Project management morphs into product management\n\nProduct managers often struggle with answering the question, \"Is the product or feature I just launched successful?\". There are many sensing mechanisms to help answer this question, including revenue, users, customer feedback, NPS, etc., but there is currently no product that helps product managers exhaustively manage the product development lifecycle from end to end. Many products assist with planning, delivery of code, and deployment, but feedback and iteration are equally as important to product managers as shipping the first iteration. Getting the first iteration out is traditionally celebrated, but is only one of many steps to true product development lifecycle management.\n\nImagine an experience where product managers can log in and view the \"health\" of their entire portfolio on one dashboard. It is clear which features have the most value to customers (and by extension to the business) as measured by key metrics, assisting PMs with priortization activities. PMs can quickly identify features or products within their portfolio that need more attention and drill into them, identifying the correct next action to take, whether it's iteration on the feature or perhaps sunsetting it. PMs can quickly create an issue for the next iteration, use version control features, view security incidents, respond to customer feedback, drill down into analytics, control A/B tests of the feature, and even interact with users of the feature or product directly by creating ad-hoc surveys or questions for users to answer. Additionally, the experience should allow for ROI analysis and tracking of the ROI after capital has been expended.\n\nWithin three years, project management tools will begin evolving to provide this experience and help PMs answer tough product questions. These tools will also assist with measuring and predicting value to the organization, if a specific action is prioritized by the PM. The ideal solution most likely uses data science and predictive analytics to assist product managers with decisions both before and after a feature is launched.\n\nAs examples, GitLab will provide:\n\n* Feature management capabilities, including the ability to manage a feature as an object inside of GitLab that lives on after an issue is closed.\n* An experience where PMs can quickly analyze the health of all relevant features.\n* A framework that helps PMs with prioritization decisions.\n* A framework for ROI analysis and measurement.\n\n## Our three-year strategy\n\nIn three years, the Dev section market will:\n\n* Centralize around Git as the version control of choice for not only code, but for design assets, gaming, silicon designs, and AI/ML models.\n* Have a market leader emerge in the value stream management space. Currently, the market is fragmented with most players focused on integrations into various DevOps tools.\n* Adopt a mindset shift from project management to product management.\n* Recognize the value of a single platform for all software creation activities, including product management.\n* See an uptick in startups and applications being built on the backs of a \"no code\" framework\n\nConsidering the evolution of the Dev section market, in three years, GitLab will:\n\n* Provide a next-generation, highly performant Git-backed version control system for large assets, such as ML models. Our goal in three years should be to host the most repositories of these non-code assets.\n* Emerge as the leader in VSM and be recognized in the industry by customers and analysts as such. Our goal in three years should be to provide the best insights into the product development process that no other tool can come close to, as we have a [unified data model](https://www.ca.com/en/blog-itom/what-is-a-unified-data-model-and-why-would-you-use-it.html) due to GitLab being a single platform.\n* Develop an industry-leading product management platform where multiple features and products can be measured and managed easily.\n* Research and potentially add capabilities for \"no code\" workflows.\n\n## Our one-year plan: What’s next for Dev\n\nOver the next 12 months, each stage in the Dev section will play an integral part in this strategy.\n\nPlease see the [categories page](/handbook/product/categories/#dev-section) for a more detailed look at Dev's plan by exploring `Strategy` links in areas of interest.\n\n### Manage\n\n**Enterprise readiness:** GitLab must be seen as a platform that enterprises can use out-of-the-box for both GitLab.com and self-managed deployments. We're doing this by focusing on improvements in several key areas:\n\n  * Enterprise-grade authentication and authorization. Critical for large organizations managing users at scale, we're focused on investing in SAML SSO that works across a range of identity providers and automates member management.\n  * Improving tools that help compliance-minded organizations thrive. GitLab makes it easy to contribute, but administrators should have comprehensive and consistent views on instance activity. We'll improve audit management to a lovable category and introduce dashboarding and alerting to help tell your compliance story to stakeholders. We'll also solve a pronounced need for fine-grained member permissions.\n\n**Lowering time to production for our customers:** Improvements to productivity and code analytics over the next 12 months will allow our customers to drill down and identify sources of waste in their existing process. Within 12 months, GitLab customers will be able to answer how much their time-to-production metrics have improved.\n\n**A great import experience:** Few instances start from scratch – for most, one of the earliest tasks for a GitLab administrator is importing information from outside the application. We'll invest heavily in a strong import user experience and build bespoke importers for key competitors like Jenkins and Jira. We'll also expand on the capabilities of our existing importers, with a focus on making GitLab.com migration easy.\n\n### Plan\n\n\n\n**Kanban boards**: Current project management tools are capable, but suffer from usability. Trello made significant gains by focusing on the user experience. Unfortunately, Trello chose to be a general tool which left some software teams wanting features designed specifically to help with software development and delivery. GitLab has an opportunity to re-design Kanban boards for software teams – think of how Jira could work if it were designed by Trello as opposed to the other way around. Our boards need to evolve to be a primary interface, a complete WYSIWYG document view where everyone who is looking on board X is seeing the same thing (updated in real time), with rich interaction without having to leave the board. This may include changes such as having short summaries, first-class checklists, quick filters, etc. In addition, boards need to focus on common workflows of software teams such as issue triage, daily workflow, sprint planning, quarterly planning, executive reporting, etc.\n\n**Importing from Jira without losing required data**: In the next 12 months, we will deliver enforced workflows, a better roadmap experience, cumulative flow diagrams, and improvements to boards in order to enable a better planning and project management experience.\n\n**Enhancing portfolio and project roadmaps**: Provide easy-to-use, cross-team roadmaps at the portfolio, project, and epic level that allow users across the organization to see how work is progressing and identify dependencies and blockers. Organize and prioritize work though dynamic roadmaps in real time.\n\n**Easy top-down planning**: Enhanced portfolio management experience allowing customers to start planning from the top: Creating initiatives, projects, and epics while laying them out on a roadmap prior to the creation of issues and milestones. Provide analytics at each level, and allow linking of each object to provide deeper dependency mapping across multiple teams and projects. Enable users to create strategic initiatives and assign work, impact, and resources to each to help them make the right business decisions. Additionally, in order for our users to get more value out of Plan, we will be implementing [Epic features to be more aligned with our buying tiers](https://gitlab.com/groups/gitlab-org/-/epics/1887).\n\n**Reporting and analytics**: Provide dashboarding and analytics for project and portfolio management, allowing business to track and communicate progress on work in-flight, capacity of teams and projects, and overall efficiency across their full portfolio.\n\n**Requirements management**: Many regulated customers want to use GitLab for requirements mapping, dependencies, and process management. GitLab will provide these capabilites in a modern-first way.\n\n### Create\n\n**Realtime:** It's time to fully embrace realtime. Many parts of GitLab update in near real time, but not everything does, and unfortunately some of the parts that are left out are critical to a great experience. Realtime kanban boards is mentioned above in Plan, but within Create, there's tons of opportunity for realtime enhancements. Areas we are thinking about are real time editing of code in the Web IDE for live coding and real time editing of issue/MR descriptions and comments.\n\n**Git availability and performance:** Git is a critical component in the deployment process when practicing [Continuous Deployment](https://docs.gitlab.com/ee/ci/introduction/#continuous-deployment). As such, service degradations or outages that prevent access to Git cannot be tolerated. To this end, making [Gitaly highly available](https://gitlab.com/groups/gitlab-org/-/epics/842) is of the utmost importance, and secondarily, improve the handling of extreme read pressures exterted by highly parallelized CI loads that cause performance degradations.\n\n**Enhancing the code review experience:** In the next 12 months, we must focus code review to be more performant and intelligent. We will do this by investing in [performance improvements](https://gitlab.com/groups/gitlab-org/-/epics/1417), adding additional code review functionality such as jump to definition, identifying references, displaying function documentation and type signatures, and adding support for first-class reviewers. Code review should be an \"IDE like\" experience.\n\n**Making large files “just work” in Git:** To gather more market share from industries that currently use Perforce or SVN, we must invest in making the large-file experience in Git excellent. It should “just work” without configuration or specialized hardware.\n\n**Investing in our Wiki product:** Many customers currently use Wikis for knowledge bases and project management activities. Our first step in making the GitLab Wiki more competitive is making wikis available at the group level and enhancing markdown support.\n\n**Focusing on the gaps in the design management workflow:** Most designers use a sketch or prototyping tool already, but version controlling assets alongside code and providing a workflow to compare those assets to what front-end teams ship is a gap in the market. We are uniquely poised to capitalize on this gap – think\nvisual review apps checked against the mockups checked into the repository. Additionally, we will continue to make improvements to the collaboration aspect of designs and consider other features such as simple sketch functionality inside of issues and MRs.\n\n**Enabling easier contributions to GitLab:** Contributing to GitLab requires users to set up and run the [GitLab Development Kit (GDK)](https://gitlab.com/gitlab-org/gitlab-development-kit) locally. This is cumbersome and typically requires multiple hours of debugging with senior engineers. While the process of streamlining the GDK locally should be advanced, GitLab should also provide the GDK as part of the Web IDE experience. Allowing contributors to quickly spin-up feature branches should encourage more contributions from non-engineering GitLab team members, as well as the wider community.\n\n**Bolstering the editor experience:** Our current Web IDE experience is useful for small changes, but has not been useful as an actual replacement for a local IDE. Over the next year, we will evaluate the impact of adding a container-based IDE solution, while continuing to streamline our editing experience, potentially by sunsetting the ACE editor. We will also improve the IDE experience with self-managed, client-side evaluation, server-side evaluation, and live-coding features for pair programming.\n\n**Creating a content management experience:** Projects in GitLab aren't always leveraged by pure engineering teams. Groups like marketing, sales and others often have needs for projects that more closely resemble marketing websites or documentation. While [GitLab Pages](https://docs.gitlab.com/ee/user/project/pages/) enables the deployment of many popular static site generators, the editing experience is still geared toward technical users. Enabling a more WYSIWYG content management editor will help support non-technical personas use of GitLab for non-engineering driven projects.\n\n### What we're not doing\n\nChoosing to invest in these areas in 2020 means we will choose not to:\n\n* **Invest in features that help companies answer, “Am I doing the right activities?”.** Answering this question is something we will focus on in years two and three of the VSM plan.\n* **Treat ML models as first-class citizens in GitLab.** Instead, we will focus on getting large assets to become performant via improvements to Gitaly. Once this is completed, we will focus on ML models.\n* **Provide recommendations where customers can improve their efficiency in the DevOps lifecycle.** This will likely require comparisons amongst many GitLab users and an AI engine to make intelligent recommendations. These improvements will come in years two and three of the VSM plan.\n\n### Other areas of investment consideration\n\n* Data science: We should consider investment into a data science team that can assist with recommendations for Plan and VSM features.\n* [Dark themes](https://gitlab.com/gitlab-org/gitlab-ee/issues/14531): We should consider prioritizing a dark theme for both GitLab, as well as the Web IDE/editing experience. This is an expected feature of most modern development tools.\n* Engineering: Most Dev groups should see 50-100% headcount growth in order to make our Dev categories lovable.\n* AI: We should consider beginning to invest into AI as a solution for recommendations – for example, recommended assignees, labels, etc.\n\n## Survey\n\nNow that you're heard our strategy and plans, we'd love to hear your feedback. Please click below for a quick two-question survey.\n\n{::options parse_block_html=\"true\" /}\n\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>&nbsp;&nbsp;\nHelp shape our Dev strategy - [Take our survey](https://docs.google.com/forms/d/e/1FAIpQLSdfZTpqNYilD-bzcRKPPo5AIVZq-k5GrYd_thr21iXcreA-oQ/viewform)!\n&nbsp;&nbsp;\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n{: .alert .alert-webcast}\n\nCover Photo by [Joanna Kosinska](https://unsplash.com/@joannakosinska) on [Unsplash](https://unsplash.com/).\n{: .note}\n",[890,723],{"slug":1378,"featured":6,"template":683},"dev-strategy-review","content:en-us:blog:dev-strategy-review.yml","Dev Strategy Review","en-us/blog/dev-strategy-review.yml","en-us/blog/dev-strategy-review",{"_path":1384,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1385,"content":1391,"config":1398,"_id":1400,"_type":17,"title":1401,"_source":18,"_file":1402,"_stem":1403,"_extension":21},"/en-us/blog/welcoming-opencores-to-gitlab",{"title":1386,"description":1387,"ogTitle":1386,"ogDescription":1387,"noIndex":6,"ogImage":1388,"ogUrl":1389,"ogSiteName":671,"ogType":672,"canonicalUrls":1389,"schema":1390},"OpenCores come to GitLab","OpenCores moves to GitLab to accelerate digital design flow.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669768/Blog/Hero%20Images/gitlab-opencores-oliscience.jpg","https://about.gitlab.com/blog/welcoming-opencores-to-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"OpenCores come to GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Andrea Borga\"},{\"@type\":\"Person\",\"name\":\"David Planella\"}],\n        \"datePublished\": \"2019-12-03\",\n      }",{"title":1386,"description":1387,"authors":1392,"heroImage":1388,"date":1395,"body":1396,"category":14,"tags":1397},[1393,1394],"Andrea Borga","David Planella","2019-12-03","\n\n[OpenCores](https://opencores.org), the largest and most popular Gateware\ndevelopment community with over [300K members and 1200+\nprojects](https://opencores.org/about/statistics), is moving to GitLab. This\nis excellent news all around: as a catalyst for accelerating IP core development\nand for introducing GitLab to innovative uses in the scientific and electronic\ndesign communities.\n\n## Gateware and OpenCores\n\n![Gateware design flow diagram](https://about.gitlab.com/images/blogimages/welcoming-opencores-to-gitlab/gateware_flow.png \"Gateware flow\")\n\nOpenCores is a repository of reusable units of logic, open to use as building\nblocks for the electronics design community. These units are most commonly known as\n[Intellectual Property (IP)\ncores](https://en.wikipedia.org/wiki/Semiconductor_intellectual_property_core),\nand are described (coded), in [Hardware Description\nLanguage](https://en.wikipedia.org/wiki/Hardware_description_language) (HDL)\nfor the most part.\n\n### What is gateware?\n\nIn the semiconductor industry, these are the basic constituents of advanced\ndigital designs, collectively known as\n**gateware**: A layer in the electronics development chain positioned in\nbetween _hardware_ (such as a Printed Circuit Board – PCB – or a packaged chip),\nand _firmware_ (a set of decoded and executed instructions for a microprocessor).\n\n### What is OpenCores?\n\nThe [OpenCores portal](https://opencores.org) hosts the source code for a\nmultitude of digital gateware projects. In its more than 20 years of web history, it has\nevolved into a platform that enables its user community to discover, showcase,\nand manage such projects, including revision control for [source code](/solutions/source-code-management/).\n\nThe target devices for gateware have historically been\n[FPGA](https://en.wikipedia.org/wiki/Field-programmable_gate_array) (Field\nProgrammable Gate Arrays) and\n[ASIC](https://en.wikipedia.org/wiki/Application-specific_integrated_circuit)s\n(Application Specific Integrated Circuits), which allow building a vast range\nof hardware digital electronics appliances. These are often described as\n[SoC](https://en.wikipedia.org/wiki/System_on_a_chip) (System on a Chip).\n\nIn recent years, the OpenCores portal has been particularly focused on hosting FPGA\napplications, with the intention to enlarge the pool of available cores based\non emerging hardware description methods, such as\n[HLS](https://en.wikipedia.org/wiki/High-level_synthesis) (High-level\nsynthesis).\n\nOpenCores is also the place where digital designers meet to showcase, promote,\nand talk about their passion and work. They do this through forums, news feeds,\nand much more!\n\n### Who maintains the OpenCores portal?\n\n[Oliscience](http://oliscience.nl/) (open logic interconnects science) act as\nthe stewards of the OpenCores community and its portal. Oliscience is an\ninitiative originated from the\n[CERN](/customers/cern/)-Nikhef Business Incubation\nCentre (CERN-BIC@Nikhef), and is [supported](https://opencores.org/partners) by\n[Nikhef](https://www.nikhef.nl/en/), the Dutch National Institute for Subatomic\nPhysics, and [ASTRON](https://www.astron.nl/), the Netherlands Institute for\nRadio Astronomy.\n\nAs part of the stewardship charter, Oliscience is committed to maintaining and\nsupporting the OpenCores portal. This mission involves globally promoting its\ncommunity, fostering the use of open standards and practices, actively\ndeveloping the portal infrastructure and content, and more.\nThe [Wishbone bus](https://en.wikipedia.org/wiki/Wishbone_(computer_bus)),\nused throughout OpenCores designs, is one of the most well-known examples.\n\n## Leading change and embracing the DevOps culture for Gateware development\n\n[Moore's law](https://en.wikipedia.org/wiki/Moore%27s_law) is slowing down, and\nthe semiconductor industry is starting to experience a new resurgence. With a\nwave of new opportunities arising, FPGA is one of the key technologies that\nplay a crucial role in the future of computing architectures.\n\nThe barrier to entry for becoming a gateway developer is fairly higher than learning a new programming language as a software developer. As\nsuch, the digital electronics industry is continually striving to simplify\nthe approach to programmable logic.\n\nOpen Source IP Cores play a significant role in this goal. They unlock a\nvast knowledge pool that enables new gateware developers to start hacking on\nnew projects straight away. They can use existing solutions to draw knowledge\nvery quickly.\n\nIP Cores strive for quality, and quality calls for a structured way to assess\nthe content of a code bundle. This is where Continuous Verification (CV) comes into\nplay.\n\nIn the context of programmable logic, CV is a\nworkflow in which Gateware defined in a [HDL](https://en.wikipedia.org/wiki/Hardware_description_language)\nruns against standardized testbenches and benchmarked to assess and rank its\nquality. Full coverage for test cases and failure corner cases is guaranteed.\n\n## Accelerating digital design with GitLab\n\nThe OpenCores community leaders have strong ties to [CERN](https://home.cern/)\nand the [European Space Agency](https://www.esa.int/). Both are leading\nresearch organizations committed to supporting their respective scientific\ncommunities, which use GitLab for internal development.\n\nBoth organizations and the electronics industry in general are particularly\ninterested in a better assessment of the quality of gateware products, as their\nusage in industrial and commercial applications continues to increase at an\naccelerated rate. When you launch a satellite into space, you can't just press\nthe reset button if there is a bug!\n\nWhile talking to those teams, and hearing the preliminary exploration of\nimplementing CV practices into gateware design, [GitLab's integral CI/CD\nfeatures](/solutions/continuous-integration/) seemed a natural fit to pioneer the adoption of a DevOps approach to\ndigital design.\n\nSource control was also a feature that would enable engineers to share and\ncollaborate on their code in the public space. In summary, the benefits of a\nsingle application for the entire DevOps cycle, with the ultimate goal of\nreducing the gateware design cycle time made the decision easy.\n\nThe next objective for the OpenCores team is to implement a CV process in the\nOpenCores portal, starting with FPGA and until ASICs. It's an ambitious one,\nwhich requires ambitious partners.\n\nAndrea Borga, Oliscience CEO mentions:\n> we have a very strong scientific background, and we love to make experiments…\n> all the time! Exploring new ideas, and striving for impeccable execution are\n> embedded in our engineering way of thinking. You need innovative and\n> ambitious partners to achieve equally innovative and ambitious goals. This\n> is why we do what we do, and why we firmly believe GitLab's vision and spirit\n> strongly align with our own. This is how we chose to go with them.\n\nGitLab is thrilled to start working with the OpenCores team, to contribute to\nthat goal and welcoming them to a community that leading Open Source projects\nsuch as Drupal, GNOME, KDE, Debian, Freedesktop and many more are already a\npart of.\n\n[Cover image](https://www.flickr.com/photos/130561288@N04/39116042294/) by\n[Fritzchens Fritz](https://www.flickr.com/photos/130561288@N04/),\nlicensed under [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/)\n{: .note}\n",[995,110,804,680,268],{"slug":1399,"featured":6,"template":683},"welcoming-opencores-to-gitlab","content:en-us:blog:welcoming-opencores-to-gitlab.yml","Welcoming Opencores To Gitlab","en-us/blog/welcoming-opencores-to-gitlab.yml","en-us/blog/welcoming-opencores-to-gitlab",{"_path":1405,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1406,"content":1412,"config":1417,"_id":1419,"_type":17,"title":1420,"_source":18,"_file":1421,"_stem":1422,"_extension":21},"/en-us/blog/gitlab-iconography-where-mvc-meets-visual-design",{"title":1407,"description":1408,"ogTitle":1407,"ogDescription":1408,"noIndex":6,"ogImage":1409,"ogUrl":1410,"ogSiteName":671,"ogType":672,"canonicalUrls":1410,"schema":1411},"GitLab Iconography: MVC meets visual design","A minimum viable change approach for a key UI element","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680884/Blog/Hero%20Images/mvc-icon-banner.png","https://about.gitlab.com/blog/gitlab-iconography-where-mvc-meets-visual-design","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Iconography: MVC meets visual design\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jeremy Elder\"}],\n        \"datePublished\": \"2019-12-02\",\n      }",{"title":1407,"description":1408,"authors":1413,"heroImage":1409,"date":1414,"body":1415,"category":14,"tags":1416},[1033],"2019-12-02","\n\nAnyone who uses GitLab knows how extensively we use icons in our product. Because information density is high and screen real estate is at a premium, we use them for everything from indicating status and critical actions to navigation and label clarity. In short, icons have a comparatively large impact for such a visually small UI element.\n\nIn traditional product development, it’s common to incrementally update features and functionality, and then save visual updates for major version bumps or larger brand updates. But we already had a collection of issues (the medium for collaborating on ideas and planning work in GitLab) telling us change was needed, so we wanted to address that without the dependency of a new version or brand update spurring us on.\n\nTrue to GitLab fashion, this meant we could exercise our [efficiency](https://handbook.gitlab.com/handbook/values/#efficiency) value with a [minimum viable change](https://handbook.gitlab.com/handbook/values/#move-fast-by-shipping-the-minimum-viable-change) (MVC) approach – iteratively making visual updates while providing continuous improvement.\n\n## Minimum viable change\n\nAt GitLab, we’re comfortable iterating and releasing designs similar to how our development counterparts iterate on functionality. We still research and test our solutions, but we have the freedom to quickly learn and iterate because of our constant exposure to real use. Our end goal is always to have a [beautiful, guiding, and functional interface](https://youtu.be/Z_DpZZyxwEA?t=1216).\n\nAt the time of this writing, we have 277 custom SVG icons in our library. There are also more than [800 instances](https://leipert-projects.gitlab.io/is-gitlab-pretty-yet/icons/) of FontAwesome icons in the product. We reference icons in HAML, HTML, JavaScript, Ruby, and Vue. A wholesale change to use a new set of custom icons across the entire product would be a massive undertaking. Incremental changes are a must.\n\nAs it turns out, one of our weaknesses is also a strength. With our UI already mixing icons from two different sources and two different styles, we can concern ourselves less with near-term differences and instead focus on making the right changes moving forward.\n\n![Pipelines row that has both SVG and FontAwesome icons together](https://about.gitlab.com/images/blogimages/mvc-icon-mixed.png){: .shadow.center}\nA row in the Pipelines section that contains SVG and FontAwesome icons.\n{: .note.text-center}\n\n## Laying the foundation\n\nOne of our values is to create a distinct GitLab personality that is strong and consistent. Iconography offers a powerful visual cue to users and should reflect our particular sense of style. (This is the opening statement in our new [iconography documentation](https://design.gitlab.com/product-foundations/iconography).)\n\nWe decided that the MVC with the greatest initial impact was updating the icon documentation itself. To reflect the promise of a strong and consistent presence within the product, we had to offer docs that would help fix problems in meaningful and sustainable ways.\n\nTo be sure we were iterating in the right direction, we established guidelines that considered the entire icon ecosystem, but still allowed us to make quick changes. At the same time, we also overhauled our [iconography documentation](https://design.gitlab.com/product-foundations/iconography) to make icon updates and creation as self-help as possible.\n\n**Guidelines**\n* Each icon must have a clear meaning or metaphor in context.\n* SVGs are optimized for performance and accessibility.\n* Visual changes are minor first, only updating to align with new documentation.\n* A change in metaphor requires validation and/or usability testing.\n* Icons are categorized in Sketch for easier use.\n* Unused icons are deprecated.\n* Icons are added only when existing ones can’t be used.\n\n\n> One of our values is to create a distinct GitLab personality that is strong and consistent. Iconography is a powerful visual cue to the user and should reflect our particular sense of style.\n\nWith directional guidelines and documentation in place, we turned to specific constraints that we could leverage in practice.\n\n## Embracing constraints\n\nWho doesn’t love a good set of constraints? We definitely have some.\n\nPerhaps the largest (pun intended), was the small 16×16 pixel grid used for each icon. We wanted to use a fairly common 24×24 pixel grid with strokes set to 2 pixels, so that we could include more fidelity in each icon, scale more freely, and stay within our base-8 pixel grid. When scaled down to our most common size (16 pixels), the strokes would effectively be 1.5 pixels, which looks great on a HiDPI screen. It's just enough weight to stand out and not feel too bold, although they’re blurry on standard definition due to the half pixels.\n\n![Visual guidelines from the icon documentation](https://about.gitlab.com/images/blogimages/mvc-icon-docs.png){: .shadow.center}\nExamples of visual guidelines from the icon documentation\n{: .note.text-center}\n\nOur analytics show that many users are still on non-HiDPI screens, and while we wanted to push for a new standard, we weren’t ready to make the leap until a majority of users could experience crisp icons in the UI. So, the best choice was to keep the 16 pixel grid and have crisp icons for all.\n\n\n\nAnother key constraint was stroke weight. Within an even-pixel grid, a 1 pixel stroke can never be centered *and* aligned to the pixel grid, so we chose to stick with a 2 pixel stroke weight rather than offset some icons. This meant less room for fidelity in the small space, and as a result we aimed for the least amount of detail that provided the most concept clarity.\n\nBy nature, other constraints exist in the documentation that deal primarily with stylistic elements.\n\n## The process\n\nWork at GitLab starts with an issue or merge request, so we can tackle things in an efficient, async way. Since there were already many icon issues in existence, we created an [epic](https://gitlab.com/groups/gitlab-org/-/epics/1557) to collect them and added new issues to it. As common themes emerged, we knew that updating documentation would be the place to start, as it gave us something to point back to for current issues and something to stand on for new work.\n\nUpdating nearly 300 icons takes time, so we divided them into separate batches where related groups, like everything associated with documents, were updated at the same time. Even though, at this step, style might differ between groups, we were still consistent within the group itself.\n\nEvery batch of icons went through an async group review, where we offered feedback and made adjustments over the course of several days. At the close of the review period, we created a merge request to bring the updates into the SVG library. Then, we could test and evaluate the new icons one last time through a [review app](https://docs.gitlab.com/ee/ci/review_apps/) before releasing them into production.\n\nIn each batch, we added a few new icons and deprecated others. We also released updated versions of our [Sketch UI Kit](https://gitlab.com/gitlab-org/gitlab-design/blob/master/doc/sketch-ui-kit.md) concurrently with the product changes.\n\nNot all icons followed this exact process. For example, concepts like epics and issues are fairly abstract, and we really want to ensure their visual representation is both meaningful and proprietary. There’s an entire subgroup that is just for the status of these, so getting them right is crucial. These icons are currently undergoing three rounds of usability testing, and testing will continue to be an important step in our process.\n\n## Early results and next steps\n\nAfter working through hundreds of icons, five batches of updates, and several rounds of usability testing, reactions thus far have been positive and productive. Here are a few worth noting:\n\n* Several users thought we added a new feature that adds a pre-formatted markdown table in our text editor. The feature has been there for some time, but the previous icon didn’t look enough like a table. If you’ve ever had to manually create a table in markdown, then you know how helpful this feature is. Imagine all the time saved!\n* One of our developers [created a tool](https://leipert-projects.gitlab.io/is-gitlab-pretty-yet/icons/) to audit all instances of FontAwesome icons in the product, so that we can better audit changes and replace instances with our SVGs. He also added the ability in our [SVG Previewer](http://gitlab-org.gitlab.io/gitlab-svgs/?color=indigo) to view icons in different color schemes, so that we could identify issues (like style or color artifacts) in the SVG code and explore theming.\n* Many “is this known” questions are being asked about icons in our Slack channels. This is useful, because they point out where incorrect icons have previously been used and where style differences are too glaring between our SVGs and FontAwesome. That's exciting, because visual updates are helping us prioritize friction in the product caused by icons.\n\n![Before and after of editor icons](https://about.gitlab.com/images/blogimages/mvc-icon-table-ba.png){: .shadow.center}\nBefore (top) and after of text editor icons\n{: .note.text-center}\n\nBecause this was an MVC, the work isn’t done yet. Here are some things to watch for in the coming months:\n\n* Fewer FontAwesome icons in use, with the end goal of only using our own SVG library.\n* Additional grids for specific contexts where scaling icons isn’t ideal.\n* Assessing the effectiveness of documentation and adjusting accordingly.\n* Evaluating instances where the same icon is used for different actions by considering context and performing usability testing where needed.\n* Creating a better and more consistent naming system for icons in Sketch and the SVG library.\n* Conducting more usability testing to ensure metaphors bridge cultural or experiential gaps.\n\nLastly, you can contribute too! If you have anything you’d like us to consider with regard to icons, [create a new issue](https://gitlab.com/gitlab-org/gitlab/issues/new) and tag the GitLab UX Department (@gitlab-com/gitlab-ux). Also, if you’d like to be a part of our testing efforts at any level, be sure to sign up for our [GitLab First Look](/community/gitlab-first-look/) program.\n\n",[1037,1038,1039],{"slug":1418,"featured":6,"template":683},"gitlab-iconography-where-mvc-meets-visual-design","content:en-us:blog:gitlab-iconography-where-mvc-meets-visual-design.yml","Gitlab Iconography Where Mvc Meets Visual Design","en-us/blog/gitlab-iconography-where-mvc-meets-visual-design.yml","en-us/blog/gitlab-iconography-where-mvc-meets-visual-design",{"_path":1424,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1425,"content":1431,"config":1438,"_id":1440,"_type":17,"title":1441,"_source":18,"_file":1442,"_stem":1443,"_extension":21},"/en-us/blog/the-single-application-to-accelerate-your-startup",{"title":1426,"description":1427,"ogTitle":1426,"ogDescription":1427,"noIndex":6,"ogImage":1428,"ogUrl":1429,"ogSiteName":671,"ogType":672,"canonicalUrls":1429,"schema":1430},"The single application to accelerate your startup","GitLab Ultimate and Gold now free for select YC Startups.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679046/Blog/Hero%20Images/startup.jpg","https://about.gitlab.com/blog/the-single-application-to-accelerate-your-startup","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"The single application to accelerate your startup\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Borivoje Tasovac\"}],\n        \"datePublished\": \"2019-11-25\",\n      }",{"title":1426,"description":1427,"authors":1432,"heroImage":1428,"date":1434,"body":1435,"category":14,"tags":1436},[1433],"Borivoje Tasovac","2019-11-25","\nGitLab started as an idea that was [accepted by the HackerNews community](https://news.ycombinator.com/item?id=4428278), joined the [Y Combinator family](/blog/gitlab-is-part-of-the-y-combinator-family/), and recently was valued at $2.75 billion during the [Series E funding round](/blog/gitlab-series-e-funding/).\n\n## Giving back to the startup community\n\nWe've been supporting [Open Source projects](/solutions/open-source/join/) and [education](/solutions/education/) with our top tiers at no cost for more than a year, but in addition to that, we decided to extend this offer and also grant free access to YC companies. We understand that startups face many obstacles trying to bring value to their customers while also trying to find their place among competitors.\n\nHiring suitable candidates, making partnership decisions and trying to manage your finances can all be overwhelming, especially at an early stage of a startup. We believe that startups should set a good foundation as soon as possible and that adopting a single application for the entire DevSecOps lifecycle will allow them to focus on their customers instead of the tooling. If done right, it could also help them [avoid complex toolchains](/topics/devops/reduce-devops-costs/), [reduce cycle time](/blog/strategies-to-reduce-cycle-times/) and [secure their apps](/solutions/security-compliance/).\n\nEligible startups can choose between our [top tiers](https://about.gitlab.com/pricing/) (self-managed Ultimate or cloud-hosted Gold) free of charge. Both of them support [every stage of the DevOps lifecycle](https://about.gitlab.com/stages-devops-lifecycle/) and enable them to ship their products to the market faster.\n\n## Who can qualify?\n\nWe realize that many growing companies would benefit from this offer, but we decided to narrow the initial launch to YC companies that are members of the current or two most recent [YCombinator batches](https://www.ycombinator.com/companies) and that raised less than $3M in funding.\n\nWe might also assess other portfolios in subsequent iterations.\n\n## The offer and the application process\n\nWe are offering our most comprehensive offerings for a year for free, with optional support at a discounted rate (95% off, $4.95 per user per month).\n\nQualifying startups can submit the application form on our [Startups page](/solutions/startups/). For additional questions regarding this offer, please see our FAQ section or feel free to reach us at [startups@gitlab.com](mailto:startups@gitlab.com).\n\nCover image by [Marvin Meyer](https://unsplash.com/photos/SYTO3xs06fU) on [Unsplash](https://www.unsplash.com)\n{: .note}\n",[268,680,1437],"startups",{"slug":1439,"featured":6,"template":683},"the-single-application-to-accelerate-your-startup","content:en-us:blog:the-single-application-to-accelerate-your-startup.yml","The Single Application To Accelerate Your Startup","en-us/blog/the-single-application-to-accelerate-your-startup.yml","en-us/blog/the-single-application-to-accelerate-your-startup",{"_path":1445,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1446,"content":1452,"config":1459,"_id":1461,"_type":17,"title":1462,"_source":18,"_file":1463,"_stem":1464,"_extension":21},"/en-us/blog/from-idea-to-production-on-thousands-of-clouds",{"title":1447,"description":1448,"ogTitle":1447,"ogDescription":1448,"noIndex":6,"ogImage":1449,"ogUrl":1450,"ogSiteName":671,"ogType":672,"canonicalUrls":1450,"schema":1451},"From idea to production on thousands of clouds","Deliver cloud native applications in more places consistently at scale with GitLab and Gravity.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679266/Blog/Hero%20Images/blue-lights.jpg","https://about.gitlab.com/blog/from-idea-to-production-on-thousands-of-clouds","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"From idea to production on thousands of clouds\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Ev Kontsevoy\"}],\n        \"datePublished\": \"2019-11-20\",\n      }",{"title":1447,"description":1448,"authors":1453,"heroImage":1449,"date":1455,"body":1456,"category":14,"tags":1457},[1454],"Ev Kontsevoy","2019-11-20","\nToday, deploying an application with GitLab is easier than ever: just create a Kubernetes cluster on your cloud of choice, connect it to GitLab with the Kubernetes integration, and Auto DevOps creates a full deployment pipeline for you.\n\nBut what if you need your app to run in two clusters in two separate regions? Ten clusters across multiple cloud providers? A hundred clusters and also on a fleet of self-driving trucks?\n\nAt [Gravitational](https://gravitational.com), we believe the future should not belong to a single cloud provider and developers should be able to run their applications anywhere with the same simplicity as having a single Kubernetes cluster.\n\nI am a huge fan of GitLab. I’ve had the great pleasure of getting to know much of the founding team [over the years](https://about.gitlab.com/blog/gitlab-joins-forces-with-gravitational/) and was happy to provide my [own contribution](https://gitlab.com/gitlab-org/gitlab-foss/issues/22864) to the community a while back. Today, I’m happy to share some thoughts on how to build with GitLab and deploy applications into dozens or even hundreds of cloud environments. \n\n## The rise of multicloud\n\nHow do you run applications in different data centers? Do you need to rewrite them from scratch? AWS may still be the dominant cloud provider, but cloud competitors are eating into their lead. It’s not just the big public cloud companies either. [Private cloud data centers](https://www.forbes.com/sites/jasonbloomberg/2019/02/02/have-private-clouds-finally-found-their-place-in-the-enterprise/#2f859685604f) are growing just as rapidly.\n\nMany companies that need to meet tough security and compliance requirements will require applications to run in their bare metal data centers. Running an application on an on-premises or even air-gapped data center adds additional complexity due to the hundreds or even thousands of dependencies in modern applications.\n\nGravitational has built Gravity, an open source [Kubernetes packaging solution ](https://gravitational.com/gravity/)that allows developers to build “cluster images” (similar to VM images) that can contain an entire Kubernetes cluster pre-loaded with multiple applications. You would use GitLab to go from idea to production, and Gravity to expand your production to anywhere in the world. \n\nStatements like, “I have snapshotted our entire production environment and emailed it to you, so you can run it in your private data center,” will not seem completely crazy.\n\nGravity uses standard, upstream CNCF-supported tooling for creating \"images\" of Kubernetes clusters containing the applications and their dependencies. The resulting files are called cluster images which are just .tar files.\n\nA cluster image can be used to recreate full replicas of the original environments for any deployment environment where compliance and consistency matter, i.e. in locked-down AWS/GCP/Azure environments or even in air-gapped server rooms. Each image includes all dependencies to spin up a full cluster, as well as the Gravity daemon that handles the most common operational tasks associated with Kubernetes applications, and it monitors and alerts human operators of problems.\n\n## Deploy with GitLab, scale with Gravity\n\n![Gravity dashboard](https://about.gitlab.com/images/blogimages/gravity-dashboard.png)\n\nDevelopers can leverage a GitLab repository as a single source of truth for rolling out a Kubernetes app and leverage [GitLab CI/CD](https://docs.gitlab.com/ee/ci/) for continuous delivery.\n\nAny project of meaningful scale begins by defining an [epic](https://docs.gitlab.com/ee/user/group/epics/) with goals, milestones, and tasks. An [issue](https://docs.gitlab.com/ee/user/project/issues/#issues) is the main object for collaborating on ideas and planning work. GitLab’s [package and container registry](https://about.gitlab.com/stages-devops-lifecycle/package/) helps you manage and package dependencies. \n\n[The GitLab Kubernetes integration](https://docs.gitlab.com/ee/user/project/clusters/) allows customers to create Kubernetes clusters, utilize review apps, run pipelines, use web terminals, deploy apps, view pod logs, detect and monitor Kubernetes, and much more. For deploying a Kubernetes cluster in a single destination, GitLab provides everything you need from start to finish. \n\nHowever, if your customers need to run your application in their private data centers, they can use Gravity, which essentially copy/pastes the entire Kubernetes cluster environment you’ve built in GitLab. \n\n[Download](https://gravitational.com/gravity/download/) and set up the Gravity open source edition following our [quickstart guide](https://gravitational.com/gravity/docs/quickstart/). From Gravity, you can build a cluster image of your Kubernetes application. Gravity’s [documentation](https://gravitational.com/gravity/docs/overview/) will walk you through the steps required to build an image manifest that describes the image build, the installation process, and the system requirements for the cluster. \n\nYou can build empty Kubernetes cluster images to quickly create a large number of identical, production-ready Kubernetes clusters within an organization, or you can build a cluster image that also includes Kubernetes applications to distribute your application to third parties. \n\n## Next steps\n\nIf you want to learn more about working with Kubernetes, start with [Kubernetes 101](https://www.youtube.com/watch?v=rq4GZ_GybN8). You’ll learn how GitLab and Kubernetes interact at various touchpoints. And, if you’re looking for a way to port your applications to new environments, check out [Gravity](https://gravitational.com/gravity). \n\n## About the guest author\n\nEv is a co-founder and the CEO of Gravitational. Before Gravitational, he launched the on-demand OpenCompute servers at Rackspace. Prior to Rackspace, he co-founded Mailgun, the first email service built for developers. Ev has been a fighter against unnecessary complexity in software for 20 years. He abhors cars but loves trains and open source software that doesn't require an army of consultants to operate.\n\n## About Gravitational\n\n[Gravitational](https://gravitational.com) helps companies deliver cloud applications across cloud providers, on-premises environments, and even air-gapped server rooms. Products include Teleport for multi-cloud privileged access management that doesn't get in the way of developer productivity, and Gravity, a Kubernetes packaging solution that takes the drama out of on-prem deployments. Gravitational was founded in 2015 and recently [announced their Series A](https://gravitational.com/blog/gravitational-series-a-funding/). \n\nCover image by [Sharon McCutcheon](https://unsplash.com/@sharonmccutcheon) on [Unsplash](https://unsplash.com/photos/TMwHpCrU8D4)\n",[1458,995,232,1059,110,1437],"cloud native",{"slug":1460,"featured":6,"template":683},"from-idea-to-production-on-thousands-of-clouds","content:en-us:blog:from-idea-to-production-on-thousands-of-clouds.yml","From Idea To Production On Thousands Of Clouds","en-us/blog/from-idea-to-production-on-thousands-of-clouds.yml","en-us/blog/from-idea-to-production-on-thousands-of-clouds",{"_path":1466,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1467,"content":1473,"config":1480,"_id":1482,"_type":17,"title":1483,"_source":18,"_file":1484,"_stem":1485,"_extension":21},"/en-us/blog/python-rust-and-gitlab-ci",{"title":1468,"description":1469,"ogTitle":1468,"ogDescription":1469,"noIndex":6,"ogImage":1470,"ogUrl":1471,"ogSiteName":671,"ogType":672,"canonicalUrls":1471,"schema":1472},"From idea to production with Python, Rust and GitLab CI","GitLab hero Mario Garcia demos the intricate process at GitLab Commit London.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678507/Blog/Hero%20Images/lightbulb.jpg","https://about.gitlab.com/blog/python-rust-and-gitlab-ci","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Bringing your application from idea to production using Python, Rust, and GitLab CI\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sara Kassabian\"}],\n        \"datePublished\": \"2019-11-15\",\n      }",{"title":1474,"description":1469,"authors":1475,"heroImage":1470,"date":1476,"body":1477,"category":14,"tags":1478},"Bringing your application from idea to production using Python, Rust, and GitLab CI",[1178],"2019-11-15","\nDuring his talk at GitLab Commit London, GitLab Hero [Mario García](https://gitlab.com/mattdark), explains how he troubleshooted his way through numerous roadblocks to take his Firebase application from development to production using Rust, Python and GitLab CI.\n\n## Rewriting from Python to Rust\n\n### What is Rust?\n\nWhile Python is a household name among developers, Rust is the new kid on the block when it comes to a systems programming language.\n\n[Rust](https://www.rust-lang.org/) was developed by Mozilla is giving to the world, it's been in development since 2009 with a first stable version released in May 2015 and it aims to improve memory usage while maintaining performance and speed. Mario, who is a Mozilla representative, dedicated himself to learning Rust in late 2015. He started this journey by reading the Rust book, [solving programming exercises](https://exercism.io/tracks/rust), migrating Python code to Rust, and then rewriting one of his [personal projects, a gallery for reveal.js presentations, in Rust](https://gitlab.com/mattdark/reveal-js-gallery).\n\nReveal-js is a framework for creating presentations using HTML, and allows the user to store speaker notes, images, and more in a presentation gallery. Mario first wrote his gallery app in Python but migrated the project into Rust while he was learning the new language and found the process to be relatively painless. But it wasn’t long before Mario hit a bump in the road when it came to using Rust for other projects.\n\n### Problems with Rust\n\n“I was working on another project that I applied to the Mozilla Open Leaders program two years ago,” said Mario. “And for this project I was using [Cairo SVG Python library](https://cairosvg.org/). I needed this specific library because I was converting SVG files to PDF. So that's how I found out that it was _impossible_ to rewrite this specific part with Rust because there is no alternative available in Rust for this library.”\n\nNot only did Rust lack an alternative to the CairoSVG Python library, but there was also no crates (Rust libraries) for Firebase. Mario needed Firebase for his project that takes the database of speaker information and automatically generates certificates of participation.\n\nMario was presenting an example of a web app at Google I/O Extended on how to use Rust and Firebase with web apps. But there was no functional library in Rust that could connect with Firebase and retrieve data from the database.\n\nMario came up with a solution: use Python.\n\n_More of a video person? Watch Mario’s entire presentation from GitLab Commit London in the video below, or follow along step by step in this blog post._\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube-nocookie.com/embed/BYfJBa_79Xo\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n## Using Python and Rust together\n\nIn his presentation at GitLab Commit London, Mario demonstrated how he managed to build a Firebase web application in Rust using Python, and deploy it using GitLab CI so fellow GitLab users can try to replicate his process, or get some input if they're also having difficulties.\n\n### Configure your environment\n\nThe first step is to make sure that your environment is properly configured. To use both Python, Rust, and GitLab CI, you’ll need the following on your machine:\n\n*   Git\n*   [GCC](https://crates.io/crates/gcc)\n    *   Rust needs a C compiler and Cargo, which is the package manager for Rust projects\n*   Rust\n    *   Nightly mode for this project\n    *   Cargo\n*   Python 3.5+\n    *   [pipenv](https://github.com/pypa/pipenv) for managing dependencies\n\nInstall Rust using [Rustup](https://rustup.rs/) by typing the code below into your terminal.\n\n`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`\n\nYou’ll also need to install bindings to run Python code directly from Rust, and that will also help with writing Python models using Rust code. Mario recommends [CPython](https://crates.io/crates/cpython)and [Py03](https://crates.io/crates/pyo3), but used CPython in this demo.\n\n### Kick-start your project\n\nNext, Mario describes the general process for creating a project using Python and Rust.\n\nCargo is a package manager for Rust projects, and will create a Cargo.toml file and src/ directory when its run. The Cargo.toml file is the manifest for the application and includes the dependencies the project requires. Within the src/ file is a [main.rs file](https://gitlab.com/mattdark/firebase-example/blob/master/src/main.rs) that contains an example of a Rust application.\n\nThe next step is to move through the src/ directory Cargo created to set up the default toolchain for the project.\n\n```ruby\n[package]\nname = \"firebase_sample\"\nversion = \"0.1.0\"\nauthors = [\"mattdark\"]\nedition = \"2018\"\n[dependencies]\ncpython = \"0.3\"\nserde = \"1.0.99\"\nserde_derive = \"1.0.99\"\nserde_json = \"1.0.40\"\nrocket = \"0.4.2\"\n[dependencies.rocket_contrib]\nversion = \"0.4\"\nfeatures = [\"handlebars_templates\"]\n```\n\nThe Cargo.toml file will show the name of the application, the version, authors etc. And if you’re working on Linux, it will take the user of your system and put it as the author of the project.\n{: .note}\n\n“The dependencies that we need for the project are CPython for the Python part, [Serde](https://serde.rs/), which is a library that help us with reading information for files like JSON, and Rocket, which is a web framework for Rust,” said Mario.\n\nNext, set the [Nightly version of Rust](https://doc.rust-lang.org/1.2.0/book/nightly-rust.html) as the default toolchain for the project.\n\nAdd a ‘python’ directory to src/ directory, where you’ll be adding the Python models required for this project to this directory.\n\nOnce the src/python is set-up, add the Pipfile or [requirements.txt file](https://gitlab.com/mattdark/firebase-example/blob/master/requirements.txt) for the dependencies of the Python module to the directory.\n\n```ruby\n[[source]]\nname = \"pypi\"\nurl = \"https://pypi.org/simple\"\nverify_ssl = true\n[dev-packages]\n[packages]\nfirebase = \"*\"\npython-jwt = \"*\"\ngcloud = \"*\"\nsseclient = \"*\"\npycrypto = \"*\"\nrequests-toolbelt = \"*\"\n[requires]\npython_version = \"3.7.3\"\n```\n\nThe Pipfile is an example of a project used for Firebase. Included here is all the dependencies we need for Firebase in the file, as well as the Python version in use.\n{: .note}\n\nNext write the Rust code in src/main.rs and add the Python scripts in src/python.\n\n### Writing the Python code\n\nMario’s Firebase application is designed to rake a database of speaker information and automatically generate certificates of participation in PDF format.\n\n```\n{\n  \"slides\" : {\n    \"privacymatters\" : {\n      \"description\" : \"Talk about privacy & security\",\n      \"file\" : \"privacy-matters.md\",\n      \"id\" : \"2\",\n      \"screenshot\" : \"/img/screenshot/privacy-matters.png\",\n      \"theme\" : \"mozilla.css\",\n      \"title\" : \"Why Privacy Matters?\",\n      \"url\" : \"privacy-matters\"\n    },\n    \"rust101\" : {\n      \"description\" : \"Introduction to Rust\",\n      \"file\" : \"rust-101.md\",\n      \"id\" : \"1\",\n      \"screenshot\" : \"/img/screenshot/rust-101.png\",\n      \"theme\" : \"mozilla.css\",\n      \"title\" : \"Rust 101\",\n      \"url\" : \"rust-101\"\n    },\n    \"rustrocket\" : {\n      \"description\" : \"Building Web Apps with Rust + Rocket\",\n      \"file\" : \"rust-rocket.md\",\n      \"id\" : \"3\",\n      \"screenshot\" : \"/img/screenshot/rust-rocket.png\",\n      \"theme\" : \"mozilla.css\",\n      \"title\" : \"Rust + Rocket\",\n      \"url\" : \"rust-rocket\"\n    },\n    \"whyrust\" : {\n      \"description\" : \"What is Rust and Why Learn it?\",\n      \"file\" : \"why-rust.md\",\n      \"id\" : \"4\",\n      \"screenshot\" : \"/img/screenshot/why-rust.png\",\n      \"theme\" : \"mozilla.css\",\n      \"title\" : \"Why Rust?\",\n      \"url\" : \"why-rust\"\n    }\n  }\n}\n```\n{: .language-ruby}\n\nInformation about Mario’s Firebase application lives in this JSON file of the Firebase database.\n{: .note}\n\nThe application is written in Rust, and therefore needed a Firebase connector. But since the is not a functional Firebase crate, Mario had to think outside the box and use the Python library.\n\n```\nimport json\nfrom firebase import Firebase\ndef read_data(self):\n    config = {\n        \"apiKey\": \"APIKEY\",\n        \"authDomain\": \"fir-speakers.firebaseapp.com\",\n        \"databaseURL\": \"https://fir-speakers.firebaseio.com\",\n        \"projectId\": \"fir-speakers\",\n        \"storageBucket\": \"\",\n        \"messagingSenderId\": \"MESSAGINGSENDERID\"\n    }\n    firebase = Firebase(config)\n    speaker = list()\n    db = firebase.database()\n    all_speakers = db.child(\"speakers\").get()\n    for x in all_speakers.each():\n        speaker.append(x.val())\n    s = json.dumps(speaker)\n    return s\n```\n{: .language-ruby}\n\n“For the Python part of the project, we have to connect to the Firebase database, retrieve the data and save it to a variable that later we will convert to JSON so that Rust can correctly rake the data and pass it to the HTML5,” said Mario.\n\n### Troubleshooting\n\nThere was a profound lack of documentation about how to use Rust and Python together to build a Firebase application, and Mario ran into even more hurdles as he tried to troubleshoot.\n\nThe two major problems that he was trying to solve were:\n\n*   Calling a Python script (.py) from Rust\n*   Passing a value from Rust to Python\n\n“In the Github repositories for these projects – well at least for the library that I'm using – there is no information about how you can do those tasks,” said Mario.\n\nAfter hours of researching and testing, he discovered a solution.\n\n### Building the Project\n\nMario was able to run the Python script from Rust and execute the function that connects to the Firebase database. Once connected to the Firebase database, the process will retrieve the data and funnel it back to Rust as JSON.\n\n![Rust code](https://about.gitlab.com/images/blogimages/python_and_rust_post/rust-code.jpg){: .shadow.medium.center}\n\nAfter some troubleshooting, Mario discovered the proper code to run in Rust to bridge the gap between Rust and the Firebase application.\n{: .note-text.center}\n\nNext, the Rust code will convert the values into a HashMap, and pass that information to an HTML file.\n\nNow that the project is built, it’s time to run it using:\n\n```\ncargo run\npipenv run cargo run\n```\nTo see your project type `localhost:8000` into the web browser.\nThe result should look similar to what you see here and in the [GitLab project](https://gitlab.com/mattdark/reveal-js-gallery).\n\n![GitLab project preview](https://about.gitlab.com/images/blogimages/python_and_rust_post/gitlabproject.jpg){: .shadow.medium.center}\n\n## Deploying the application with GitLab CI\n\n### Dockerize the application\n\nTo configure for GitLab CI, Mario had to choose a Docker image for running the test and deployment. There is a custom Docker image for Rust that can be customized to fit the specific version for Rust, which in this case is Rust Nightly.\n\n`rustlang/rust:nightly`\n\n“The problem is that the Python version that is installed in these Docker image is based on Debian image itself, so we need pipenv and we need other tools to be installed,” said Mario.\n\nSo Mario customized the Docker image and generated a second one that has the pipenv components.\n\n### Create the repository\n\nNow that the Docker images are configured for the application, it’s time to create the repository and upload the code using the Terminal or GitKraken.\n\nThe next – and arguably the most important – step in the process is **documentation**. Mario urges all users to upload any and all relevant files to the repository, such as the README, LICENSE, CODE_OF_CONDUCT.md, etc.\n\nOnce the necessary files are uploaded into the repository, it’s time to start configuring for GitLab CI.\n\nMario recommends using Gitignore.io to the .gitignore file for the technologies being used for the project (in this case, Rust or Python). There are three key files that need to be written to configure the pipelines required for running GitLab CI:\n\n*   **Procfile**: A way to tell a platform like Heroku what is the binary file for the project. Since the project is being developed with Rust, it will generate a binary file that needs to be executed.\n*   **RustConfig**: Contains the version of Rust we are using for the project.\n*   **Rocket.toml**: Can be used to specify the configuration parameters for the environment.\n\nYou can find examples of these files in the [Firebase example project on GitLab](https://gitlab.com/mattdark/firebase-example/tree/prod).\n\n### GitLab CI\n\nAll of these efforts go into preparing the application for deployment using GitLab CI. Deployment with GitLab CI is simple, because each stage of the deployment process lives in a yaml file. [Mario’s gitlab-ci.yml file](https://gitlab.com/mattdark/firebase-example/blob/master/.gitlab-ci.yml) only includes the build and production stages, but [more comprehensive information about GitLab CI is available here](https://docs.gitlab.com/ee/ci/).\n\n## Document, document, document\n\nThe lack of documentation created significant delays for Mario as he tried to get his Firebase application off the ground. While in this case the information he required was difficult to track down even in English, there are even more substantial barriers for non-native English speakers or non-English speaking programmers.\n\n>>“I'm from Mexico, so I'm living in a Spanish-speaking country and I started learning English 15 years ago. That means that I'm in a privileged position. When we are writing the documentation sometimes, we forget that not many people have the opportunity to learn English,” said Mario. “I'm talking about English because most of the information and documentation of technologies that are available in this language. So if we live in a non-English speaking country, don't forget to write the documentation in our native language.”\n\nHis comments resonated strongly with the GitLab Commit London audience.\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\">\u003Cp lang=\"en\" dir=\"ltr\">This is so important for accessibility.\u003Cbr>\u003Cbr>Same goes for filling documentation full of jargon and marketing terms.\u003Cbr>\u003Cbr>Documentation is there to inform those who don&#39;t have the knowledge, presuming knowledge just furthers a toxic culture of gatekeeping. \u003Ca href=\"https://t.co/k7EILtHuvy\">pic.twitter.com/k7EILtHuvy\u003C/a>\u003C/p>&mdash; Matt Smith (@Harmelodic) \u003Ca href=\"https://twitter.com/Harmelodic/status/1181946002720411648?ref_src=twsrc%5Etfw\">October 9, 2019\u003C/a>\u003C/blockquote> \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\nJoin us at GitLab Commit San Francisco to hear about the innovative ways users like Mario are using GitLab and other open source technologies! Registration information is available below.\n\nCover image by [Jack Carter](https://unsplash.com/@carterjack) on [Unsplash](https://unsplash.com/s/photos/lightbulb).\n{: .note}\n",[110,268,1479],"user stories",{"slug":1481,"featured":6,"template":683},"python-rust-and-gitlab-ci","content:en-us:blog:python-rust-and-gitlab-ci.yml","Python Rust And Gitlab Ci","en-us/blog/python-rust-and-gitlab-ci.yml","en-us/blog/python-rust-and-gitlab-ci",{"_path":1487,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1488,"content":1494,"config":1500,"_id":1502,"_type":17,"title":1503,"_source":18,"_file":1504,"_stem":1505,"_extension":21},"/en-us/blog/how-you-can-help-shape-the-future-of-securing-applications-at-gitlab",{"title":1489,"description":1490,"ogTitle":1489,"ogDescription":1490,"noIndex":6,"ogImage":1491,"ogUrl":1492,"ogSiteName":671,"ogType":672,"canonicalUrls":1492,"schema":1493},"How you can help shape the future of securing applications with GitLab","We want to provide the best experience in keeping your application safe after your code is in production.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668495/Blog/Hero%20Images/how-you-can-help-shape-the-future-of-securing-applications-at-gitlab.jpg","https://about.gitlab.com/blog/how-you-can-help-shape-the-future-of-securing-applications-at-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How you can help shape the future of securing applications with GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emily von Hoffmann\"}],\n        \"datePublished\": \"2019-11-14\",\n      }",{"title":1489,"description":1490,"authors":1495,"heroImage":1491,"date":1497,"body":1498,"category":14,"tags":1499},[1496],"Emily von Hoffmann","2019-11-14","This blog post was originally published on the GitLab Unfiltered blog. It was reviewed and republished on 2019-12-09.\n\nAs part of our vision to deliver the entire DevOps lifecycle in a single application, we’re designing an experience that will allow security professionals to collaborate directly with developers. We need your help to make it the best it can be!\n\nOur newest product stage is Protect, and it’s an exciting time as we continue to define our [strategy and roadmap](/direction/govern/). The Protect UX team’s goal is to provide the best experience in keeping your application safe after your code is in production. This includes all features that help you defend your applications and cloud infrastructure by giving you the ability to identify, catalogue, manage, and remediate threats, vulnerabilities, and risks.\n\nSome of the new categories we’re planning for in 2020 include Runtime Application Self Protection, Threat Detection, User Entity and Behavioral Analytics and [more](/handbook/product/categories/#protect-section).\n\nWe have a ton of UX research planned to help us learn more about this new category, and we hope you consider adding your voice.\n\n### Our users' jobs to be done\n\nFrom what we know so far, the Protect user is responsible for maintaining the security of their company’s environments and applications. They seem to have a wide variety of job titles, including security analyst and SecOps engineer.\n\nWe aim to understand our different users’ motivations and goals by identifying their primary [jobs to be done](https://hbr.org/2016/09/know-your-customers-jobs-to-be-done). For the Protect user, these include things like:\n\n> When I make sure my company’s applications aren’t vulnerable to bad actors, I want to monitor the traffic coming to my application and detect the possibility of an attack (SQL injection attempts, XSS attempts, vulnerability scanners, etc.) so I can know what parts of the application I need to protect better.\n\n### Our recruiting challenge\n\nPerhaps because we’re best known for our origins in source code management, we usually have an abundance of participants who fit our software developer persona when we’re recruiting for studies. Newer personas like our Protect users have been more elusive by comparison — we’ve attempted studies where we couldn’t find a single human to speak with.\n\nThis is a real problem for us, as we believe strongly in evidence-based design. We want to build for your actual wants and needs as opposed to our assumptions about them.\n\n### How you can help\n\nIf any of this sounds like you, please sign up to our research program, [GitLab First Look](/community/gitlab-first-look/)! When you join, you can indicate exactly which product areas and types of research you’re interested in. We’ll send you invitations to participate when you match with studies.\n\nQuestions? Reach out to me on [twitter](https://twitter.com/EmvonHoffmann).\n\n[Sam Kerr](/company/team/#stkerr) and [Tali Lavi](/company/team/#tlavi) contributed to this post.\n\nCover image by [Rashid Khreiss](https://unsplash.com/@rush_intime) on [Unsplash](https://unsplash.com).\n",[1039,890],{"slug":1501,"featured":6,"template":683},"how-you-can-help-shape-the-future-of-securing-applications-at-gitlab","content:en-us:blog:how-you-can-help-shape-the-future-of-securing-applications-at-gitlab.yml","How You Can Help Shape The Future Of Securing Applications At Gitlab","en-us/blog/how-you-can-help-shape-the-future-of-securing-applications-at-gitlab.yml","en-us/blog/how-you-can-help-shape-the-future-of-securing-applications-at-gitlab",{"_path":1507,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1508,"content":1514,"config":1519,"_id":1521,"_type":17,"title":1522,"_source":18,"_file":1523,"_stem":1524,"_extension":21},"/en-us/blog/cloud-native-architectures-made-easy",{"title":1509,"description":1510,"ogTitle":1509,"ogDescription":1510,"noIndex":6,"ogImage":1511,"ogUrl":1512,"ogSiteName":671,"ogType":672,"canonicalUrls":1512,"schema":1513},"Simplifying and optimizing cloud native architectures","Learn what cloud native architectures are, how to optimize them using GitLab's cohesive approach and what features you can use to help be more efficient.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671263/Blog/Hero%20Images/cloudarchitecture.jpg","https://about.gitlab.com/blog/cloud-native-architectures-made-easy","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Simplifying and optimizing cloud native architectures\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Suri Patel\"}],\n        \"datePublished\": \"2019-11-13\",\n      }",{"title":1509,"description":1510,"authors":1515,"heroImage":1511,"date":1516,"body":1517,"category":14,"tags":1518},[1256],"2019-11-13","\nMany teams embark on a journey to strengthen operations and development. Whether it’s battling monolithic applications by adopting containers and microservices or attempting to elevate a mature architecture by switching CI/CD tools, it is important to have a solution with robust cloud native support. When containers and cloud native workflows are easy to set and maintain, teams increase operational efficiency and can focus on delivering better products faster.\n\n## What goes into a cloud native architecture?\n\n[Cloud native applications](/topics/cloud-native/) are built using [microservices](/topics/microservices/) rather than a monolithic application structure. You can think of microservices as smaller pieces that unite to perform a specific action. Microservices can be scaled based on load, creating a more resilient environment. Container orchestration tools, like [Kubernetes](/solutions/kubernetes/), enable developers to manage the way an application’s containers function, including scaling and deployment.\n\nEmbracing cloud native architectures results in an increase in developer time, a decrease in the amount of money spent on monitoring and scaling application resources (through cloud orchestration and container schedulers), and faster shipping.\n\n## GitLab is designed for cloud native architectures\n\nGitLab’s [Kubernetes](/solutions/kubernetes/) integration, [built-in container registry](https://docs.gitlab.com/ee/user/packages/container_registry/index.html), and advanced [CI/CD features](/solutions/continuous-integration/) support microservices, such as multi-project pipelines, and monorepo projects. Furthermore, teams can keep the same workflow regardless of which cloud apps they are deploying to, so there’s no need to rework your entire process.\n\n## Why choose GitLab for your cloud native needs\n\nGitLab has a prominent place in the cloud native ecosystem and according to Forrester: [“GitLab’s simple and cohesive approach lands it squarely as a leader. GitLab's approach of having a single application to manage each phase of software development comes through in its developer experience”](/analysts/forrester-cloudci19/).\n\nGitLab doesn’t require manual and painstaking scripts. Our tool has native capabilities for Kubernetes integration and an out-of-the-box solution for advanced deployment flows for progressive delivery, like incremental rollout and canary deploys. GitLab also comes with [feature flagging as a built-in capability](/blog/feature-flags-continuous-delivery/), eliminating the need for a third-party solution.\n\nGitLab’s [multicloud](/topics/multicloud/) strategy with workflow portability increases operational efficiencies and makes it the easiest way to build cloud native applications.\n\nCover image by [Julian Santa Ana](https://unsplash.com/@jul_xander) on [Unsplash](https://unsplash.com/photos/FKqH1QhUqaw)\n{: .note}\n",[110,1458],{"slug":1520,"featured":6,"template":683},"cloud-native-architectures-made-easy","content:en-us:blog:cloud-native-architectures-made-easy.yml","Cloud Native Architectures Made Easy","en-us/blog/cloud-native-architectures-made-easy.yml","en-us/blog/cloud-native-architectures-made-easy",{"_path":1526,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1527,"content":1532,"config":1537,"_id":1539,"_type":17,"title":1540,"_source":18,"_file":1541,"_stem":1542,"_extension":21},"/en-us/blog/update-on-hiring",{"title":1528,"description":1529,"ogTitle":1528,"ogDescription":1529,"noIndex":6,"ogImage":967,"ogUrl":1530,"ogSiteName":671,"ogType":672,"canonicalUrls":1530,"schema":1531},"Update on hiring discussions for specific GitLab.com roles","Clarifying GitLab's position on a proposal concerning specific new roles located in China and Russia.","https://about.gitlab.com/blog/update-on-hiring","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Update on hiring discussions for specific GitLab.com roles\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2019-11-12\",\n      }",{"title":1528,"description":1529,"authors":1533,"heroImage":967,"date":1534,"body":1535,"category":14,"tags":1536},[699],"2019-11-12","\n\nRecently, GitLab was publicly discussing an internal decision about hiring locations for some specific roles with responsibility for technical support for GitLab.com (GitLab’s SaaS service).\n\nThis discussion was sparked by GitLab’s growing SaaS customer-base because many customers have requested more limited administrator access to servers hosting customer-specific data. There was no specific security incident that caused this discussion, and no customer data has been compromised. Following GitLab's value of transparency, the team was working through the issue in a public forum. We realize this process may have confused or even offended some people.\n\n## Hiring as an all-remote company\n\nGitLab is an all-remote company. We hire team members internationally, and we must create policies that align with security and legal regulations. This puts us in a unique position. Most companies simply open a job in an existing office location (for example, in San Francisco, London, Beijing, or any other city) and, by default, you will hire a resident of those cities for those roles. They would never have to write a policy that defines residency requirements for specific roles.\n\nWe wrote this proposal to clarify that instead of a few cities, we could hire for these few specific roles anywhere in the world except for China and Russia. In addition, we would continue to hire for all other GitLab roles in China and Russia, too. We continue our commitment to our team members and customers located in China and Russia, and we will continue to hire internationally for roles at GitLab.\n\nGitLab has hundreds of roles, and this internal decision would only affect a few specific job roles for future hires that require administrator access to servers hosting sensitive customer-specific GitLab.com data to do their jobs.\n\nThis policy proposal has not been implemented yet, as discussions are continuing internally.\n\n## Why was this discussion public?\n\nGitLab values [transparency](https://handbook.gitlab.com/handbook/values/#transparency), and we run our business operations according to this value. We believe this transparency builds trust with our customers and team, encourages contribution and collaboration, and improves our efficiency and velocity. This means that we often discuss and iterate on processes and company policies in the open. As we experienced with our hiring policy discussion, transparency is often hard. Sometimes transparency exposes differences of opinions inside GitLab itself, not to mention outside of GitLab. As a position is formed, the process exposes differing opinions within GitLab itself as well as those within the community. When people then add to the argument with helpful (and sometimes hurtful) comments, it can seem chaotic. We don’t have it all figured out yet, but we think the upside of transparency is worth the struggle to enable and continue the highest level of transparency in our business.\n\nThese discussions are internal business discussions. At other companies, these discussions would likely happen behind closed doors among key stakeholders. It is highly unlikely that they would be posted on a public forum for all to read. But at GitLab, we try to conduct business operations in the open to the extent that we are able.\n\n## What prompted this discussion about hiring?\n\nThis particular discussion arose because the majority of GitLab.com’s SaaS customers come from the United States, where GitLab.com’s data resides, and, as our customer base is growing rapidly, we have seen more requests from customers to meet their individual security policies and requirements for tighter controls over who can access their sensitive data. Remember - customers are putting their [source code](/solutions/source-code-management/) (their intellectual property) into GitLab.com, and they require it to be safe. GitLab and its customers are continuing to mitigate cyber-security threats, and this was just one discussion among many discussions on how GitLab can put additional safeguards in place to meet customer security requirements.\n\n## Was GitLab *really* considering not hiring any Chinese or Russian nationals?\n\nNo. GitLab currently has employees in China and Russia and continues to hire in China, Russia and across 60+ countries and regions worldwide for the vast majority of roles. This discussion was always only about opening specific new roles at GitLab in China and Russia, in which administrator access to servers hosting customer-specific GitLab.com data (SaaS) is required.\n\nGitLab does not discriminate against any nationality/citizenship in its hiring processes. This proposed policy was about residency requirements for these specific roles, because of the nature of the job responsibilities for these roles, and not nationality.\n\nToday, there are no current GitLab employees in those specific roles that reside in China or Russia, so no current employees would be affected. This was only a discussion about whether to open new specific roles in these regions.\n\nAlso, GitLab continues to do business in China and Russia and currently has active customers in both China and Russia. GitLab’s business is limited by local laws as well as US laws and restrictions, as GitLab is a US-based company and must comply with US laws.\n\n## Why does residency matter to GitLab.com customers?\n\nResidency matters for security reasons. Many customers who host sensitive company data in SaaS services (such as source code, and other sensitive intellectual property) prefer or require to have their data – and access to that data – reside in specific regions for legal and security purposes.\n\nThe majority of GitLab.com’s SaaS customers come from the United States, where GitLab.com’s data resides, and we have seen more requests from customers to have tighter controls over who can access that data.\n\nIn the future GitLab Inc. (or companies in which GitLab Inc. has an ownership stake) might run GitLab.com-type SaaS services for other parts of the world. For example, you might imagine separate GitLab SaaS instances with data residency in Europe, China or Russia which would have similar residency requirements to address the data access needs of customers in those regions.\n\n##  Would this policy affect GitLab self-managed (on-premises) products or support?\n\nNo. This policy, if implemented, would only affect GitLab.com, GitLab’s SaaS service. This policy would *NOT* impact GitLab self-managed (on-premises) products or support.  Self-managed products include any of the GitLab products that customers run on their own infrastructure and manage themselves.\n\n## How would a policy like this affect GitLab’s open source code or contributions to GitLab’s code?\n\nAnyone of any nationality and residing in any region of the world can use GitLab’s open source products and open source code. We also welcome contributions from anyone of any nationality and residing in any region of the world.\n\n## Commitment to our values\n\nGitLab strives to be inclusive in its hiring process. Along with transparency, [diversity](https://handbook.gitlab.com/handbook/values/#diversity-inclusion) is one of our core values. We have valued team members that are based in China and Russia, and we will continue to hire in China and Russia. We also have hundreds of customers in China and Russia and will continue to do business with customers located in those countries. Once a decision has been made about this policy, we will update our public company [handbook](https://about.gitlab.com/handbook/) accordingly.\n",[680],{"slug":1538,"featured":6,"template":683},"update-on-hiring","content:en-us:blog:update-on-hiring.yml","Update On Hiring","en-us/blog/update-on-hiring.yml","en-us/blog/update-on-hiring",{"_path":1544,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1545,"content":1551,"config":1558,"_id":1560,"_type":17,"title":1561,"_source":18,"_file":1562,"_stem":1563,"_extension":21},"/en-us/blog/gitlab-on-vmware-cloud-marketplace",{"title":1546,"description":1547,"ogTitle":1546,"ogDescription":1547,"noIndex":6,"ogImage":1548,"ogUrl":1549,"ogSiteName":671,"ogType":672,"canonicalUrls":1549,"schema":1550},"GitLab for Cloud Native Transformation on VMware Marketplace","Guest authors from VMware share how to accelerate your software delivery process in just a few clicks with Bitnami and GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680841/Blog/Hero%20Images/bitnami-gitlab.png","https://about.gitlab.com/blog/gitlab-on-vmware-cloud-marketplace","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Enterprise Edition now available for VMware Cloud Marketplace users\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Raquel Campuzano\"}],\n        \"datePublished\": \"2019-10-11\",\n      }",{"title":1552,"description":1547,"authors":1553,"heroImage":1548,"date":1555,"body":1556,"category":14,"tags":1557},"GitLab Enterprise Edition now available for VMware Cloud Marketplace users",[1554],"Raquel Campuzano","2019-10-11","\n\nHave you ever tried to choose from an extensive list of developer tools and wondered what you should do next? You’re not alone. There are hundreds of solutions to choose from, which can make it challenging to select the right solution and deploy.\n\nNow, GitLab and Bitnami have partnered to offer VMware users [GitLab](https://marketplace.cloud.vmware.com/services/details/129dc4e9-191d-405f-ab4d-803d56f366a9) in the VMware Cloud Marketplace. This version package is free, fully functional, and easy to [upgrade to an enterprise plan](https://docs.bitnami.com/vmware-marketplace/apps/gitlab-ee/get-started/license/).\n\n### Reduce costs and avoid security risks\nAs the industry leader in application packaging, Bitnami helped GitLab create an easy, click-to-deploy, open source solution. The GitLab Enterprise Edition (CORE) Virtual Appliance certified by Bitnami is an up-to-date and secure image that includes the latest versions of the application, its components, and the most recent security fixes. You can run GitLab with confidence; Bitnami’s automated pipeline and tools for building and testing applications ensure this application can run on any platform without issues. If you experience any problems deploying the solution, you can contact the [Bitnami Support team](https://community.bitnami.com/c/gitlab) with your questions.\n\n### Run on VMware infrastructure in a few clicks\nTo make GitLab available in the [VMware Cloud Marketplace](https://marketplace.cloud.vmware.com/services/details/129dc4e9-191d-405f-ab4d-803d56f366a9), GitLab placed its trust in Bitnami’s expertise in packaging. GitLab users now have the ability to run the latest version on their VMware infrastructure in a few clicks.\n\n### Some of the key benefits of GitLab's marketplace listing:\n* GitLab includes a built-in container registry and Kubernetes integration, enabling you to quickly create a [continuous integration (CI)](/solutions/continuous-integration/) pipeline with Kubernetes. Learn more about [creating a CI/CD pipeline with GitLab and Kubernetes](https://docs.bitnami.com/tutorials/create-ci-cd-pipeline-gitlab-kubernetes/).\n* By deploying GitLab on a VMware cloud server, you can add a budget- and resource-checking stage to your pipeline. This allows you to implement best practices into your continuous deployment (CD) process and control the consumption and costs of your application deployments.\n* Premium features such as code quality and performance testing, static and dynamic application security testing, package dependency analysis, and automated tests for vulnerabilities enable you to identify and remediate issues and security breaches from development to monitoring stages. Learn more about [building misconfiguration and vulnerability checks into your CI/CD pipeline to achieve continuous security](https://thenewstack.io/how-continuous-security-can-solve-the-cloud-protection-conundrum/).\n\n### How do you get started? We’ll show you how\nIn order to upgrade your GitLab Core version to enjoy the Enterprise Edition features, take the following steps:\n\n1) First log into the [VMware Cloud Marketplace](https://marketplace.cloud.vmware.com/services/details/129dc4e9-191d-405f-ab4d-803d56f366a9) and browse for the “GitLab Enterprise (CORE) Virtual Appliance” solution.\n\n2) Then click to view the details. Note: The GitLab Enterprise (CORE) Virtual Appliance is available in the [VMware Cloud Marketplace](https://marketplace.cloud.vmware.com/services/details/129dc4e9-191d-405f-ab4d-803d56f366a9) in two deployment options: VMware Cloud on AWS (VMC) or vCloud Director (VCD).\n\n![GitLab is available in the VMware Cloud Marketplace in two deployment options: VMware Cloud on AWS (VMC) or vCloud Director (VCD)](https://about.gitlab.com/images/blogimages/gitlabonvmware1.png){: .shadow.medium.center}\n\n3) To deploy the application both on VMC or VCD, you need to first subscribe to the image, as shown below:\n\n![To deploy the application both on VMC or VCD, you need to first subscribe, as shown below](https://about.gitlab.com/images/blogimages/subscribetovmwmarketplace.png){: .shadow.medium.center}\n\n4) Then, select the platform where you wish to deploy it, as shown below:\n\n![After subscribing, select the VMC or VCD platform where you wish to deploy](https://about.gitlab.com/images/blogimages/deploytovmwplatform.png){: .shadow.medium.center}\n\n5) Depending on the platform you select, you will be redirected to the vSphere Client or vCloud Director platform. Follow these instructions to launch a [GitLab Enterprise (CORE) Virtual Appliance using the vSphere Client](https://docs.bitnami.com/vmware-marketplace/apps/gitlab-ee/get-started/get-started-vmware-cloud/) or as a [vApp from VMware vCloud Director](https://docs.bitnami.com/vmware-marketplace/get-started-vcloud-director/).\n\n6) When you deploy the [GitLab Enterprise (CORE) Virtual Appliance certified by Bitnami](https://marketplace.cloud.vmware.com/services/details/129dc4e9-191d-405f-ab4d-803d56f366a9), you get the free and fully functional [Core version of GitLab](/pricing/#self-managed), which is easily upgradable to Starter, Premium, or Ultimate. To upgrade, sign into the application, navigate to the “Admin Area,” and then select the “License” menu option. As you can see in the image below, you now have the option to either upload your `.gitlab-license` file or start a [free trial](/free-trial/).\n\nNote: If you start a free trial, you will be able to try all the paid features for 30 days. After that time, your server will revert to Core features.\n{: .alert .alert-info}\n\n![To upgrade, sign into the application, navigate to the “Admin Area,” and then select the “License” menu option](https://about.gitlab.com/images/blogimages/vmwmarketplacefreetrial.png){: .shadow.medium.center}\n\n\n7) Once you activate your license, paid features will be enabled as shown below and you can start deploying with confidence.\n\n![Once you activate your license, paid features will be enabled](https://about.gitlab.com/images/blogimages/vmwpremiumfeatures.png){: .shadow.medium.center}\n\n## Conclusion\n\nWhat used to be a complex task is now just a few clicks, without compromising your budget and your security. Enjoy all the advantages of the GitLab in the VMware Cloud Marketplace and accelerate your software delivery process by leveraging the simplicity of the Bitnami experience.\n\n[Get started now](https://marketplace.cloud.vmware.com/services/details/129dc4e9-191d-405f-ab4d-803d56f366a9). If you have any questions, feel free to reach out to the Bitnami Support team!\n\n### About the guest author\n\nRaquel Campuzano is a Content Marketing Specialist at Bitnami, now part of VMware. She is in charge of managing the creation of technical content that allows developers to deploy awesome software everywhere. Raquel was part of the Bitnami team as technical writer. Her know-how creating tutorials, product documentation, and videos gave her the ability to identify in which stage of developer’s journey the user experience can be improved.\n\nPrevious to Bitnami, she led the communication and marketing strategy for Redborder (cybersecurity) and Oklan (network and hosting services). She is also a member of Ping a Programadoras, a non-profit organisation focused on promoting women’s inclusion in programming and software development.\n",[110,1458,995,232],{"slug":1559,"featured":6,"template":683},"gitlab-on-vmware-cloud-marketplace","content:en-us:blog:gitlab-on-vmware-cloud-marketplace.yml","Gitlab On Vmware Cloud Marketplace","en-us/blog/gitlab-on-vmware-cloud-marketplace.yml","en-us/blog/gitlab-on-vmware-cloud-marketplace",{"_path":1565,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1566,"content":1572,"config":1578,"_id":1580,"_type":17,"title":1581,"_source":18,"_file":1582,"_stem":1583,"_extension":21},"/en-us/blog/how-we-uxd-our-secure-ux-team",{"title":1567,"description":1568,"ogTitle":1567,"ogDescription":1568,"noIndex":6,"ogImage":1569,"ogUrl":1570,"ogSiteName":671,"ogType":672,"canonicalUrls":1570,"schema":1571},"How we UX'd our Secure UX team structure","The Secure UX team's approach toward collaboration, authorship, information discovery and team structure.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664102/Blog/Hero%20Images/gitlab-values-cover.png","https://about.gitlab.com/blog/how-we-uxd-our-secure-ux-team","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How we UX'd our Secure UX team structure\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Kyle Mann\"},{\"@type\":\"Person\",\"name\":\"Andy Volpe\"}],\n        \"datePublished\": \"2019-10-11\",\n      }",{"title":1567,"description":1568,"authors":1573,"heroImage":1569,"date":1555,"body":1576,"category":14,"tags":1577},[1574,1575],"Kyle Mann","Andy Volpe","\n\n{::options parse_block_html=\"true\" /}\n\n\n\nAt GitLab, change is part of our DNA. We embrace constant iteration and evolution in our product and our company.\n\nThis year, much of the change we’ve experienced has been due to company growth. We’ve literally doubled in size, increasing from around 400 to over 800 team members in a very short period of time. Naturally, that growth brought changes to how we organize our product teams. What were once small, interdisciplinary stage groups quickly grew to become multiple, dedicated teams within each Stage. For example, in Secure, we saw the creation of three separate teams, all with dedicated Engineering resources and Product Managers.\n\nOn the UX team structure side of things, we knew we needed to support our Stage by creating a similar division of responsibilities. But questions kept coming up: How would we divide our efforts while still creating an integrated experience? And how could we address some gaps that were already becoming more evident as we scaled?\n\nWe decided to treat this problem like we do any other UX challenge. First, we clearly identified the problem:\n\n```\nHow might we maintain our effectiveness as a design team within an evolving company structure?\n```\n\nWith the problem identified, we began iterating through solutions and identifying subtasks and processes that helped to solve it.\n\nSomething we learned early on is that what we create today will likely be outdated next week... and we’re okay with that! Problem solving for scale and unknown change is difficult. Something that works with a team of 3 might not work with a team of 6. We were going to have to be flexible. We didn’t come out with exact answers or a silver bullet, but we did discover some best practices that helped along the way.\n\n## Taking the guess work out of UX\n\nUXers are a curious bunch. We’re always asking questions: who are our users, what problems are we solving, and why are we solving them? (And then we ask why again.) The purpose of these questions is to help remove guesswork from our proposed solutions. We wanted to approach solving this problem in the same way.\n\nSo, we started by putting together a [foundations document](https://gitlab.com/gitlab-org/gitlab-design/issues/333) that asked all of the usual questions. Then, we shared it cross-functionally, so anyone could contribute to the answers and add more questions.\n\nWe learned that we knew some things, but there was also a lot that we didn't know. That’s OK, because what you don't know can sometimes be more important than what you do know. Open questions can serve as a checklist of information to uncover.\n\nAsking (and answering some of) the questions in our foundations document resulted in the first iteration of our [Secure UX page](https://about.gitlab.com/handbook/product/ux/stage-group-ux-strategy/secure/). This page will grow over the next year, as we get to know our users and problem space through [research](https://gitlab.com/groups/gitlab-org/-/epics/1611), [UX Scorecards](https://about.gitlab.com/handbook/product/ux/ux-scorecards/), cross-stage collaboration, and talking with users. The key insights we gain will continue to inform our handbook page for shared team awareness.\n\nAndy:\n_\"Having this document in place helped us take inventory across the entire Stage of where the knowledge gaps exist and focus our efforts toward uncovering critical information.\"_\n\nKyle:\n_“When I joined the team, the foundations document project was a great way to peel the different layers of our product, drive conversation, and better understand cross-functional motivations. I’m elated that other stage groups have adopted the process and found it helpful!“_\n\n## Getting to know your team\n\nEarly on, we realized that we needed to have more face-to-face time than we were accustomed to. We met this challenge by having weekly 1:1s with each other and maintaining a consistent cycle of coffee chats with our Stage group counterparts. (It’s a little like doing user research to understand pain points and possible areas of confusion.)\n\nWhen a team is rapidly growing, it's crucial to embrace collaboration and transparency. Surfacing challenges early allows for opportunities to emerge before a problem does.\n\nFor us, there was no shortage of hard conversations and growing pains, but that was when real growth and progress happened.\n\nMaintaining and cultivating relationships with the team and the Stage has enabled us to have more productive conversations. As an unexpected result, we work more effectively asynchronously now more than ever and rely less on ad-hoc chats and meetings. But we still have our coffee chats and 1:1s. We aren't giving those up!\n\nKyle:\n_\"Sharing your vulnerabilities with each other is a powerful way to bring you closer together and evolve your team’s relationships. Establishing mutual trust compounds the effects of collaborative efforts and can be the difference between success and failure of a project.\"_\n\nAndy:\n_\"It's refreshing to be able to know and understand teammates’ thought processes, decision tendencies, and the way they like to communicate. It was a challenge, at first, adjusting to more synchronous communication and collaboration, but the results speak for themselves.\"_\n\n## Sharing work and splitting work\n\nSomething we realized after becoming a two-designer Secure UX team was that we were both trying to become experts on a diverse range of security topics. It’s an intrinsic trait of designers that we want to \"know all the things,\" so we can be informed when making design decisions.\n\nUnexpectedly, though, we were overlapping each other's work, which meant we weren't finding success or collaborating well.\n\nBy not having a dedicated area of focus within the Secure Stage, we each had conflicting views and approaches to the same features. We were continually \"rebasing\" our design and exploration work because of UX conflicts that manifested.\n\nSo we hired a UX manager.\n\nJust kidding!!! But when our new manager, [Valerie](https://about.gitlab.com/company/team/?department=ux-department#vkarnes), joined our team, she was able to guide us toward creating areas where we would have ownership.\n\nCoincidentally, the engineering team also split within the stage groups at this same time, giving us the opportunity to create dedicated areas of focus and align better with our counterparts.\n\nWe started the task of creating separate UX areas by running a quick brainstorming session with the Secure UX team (just like we do at the beginning of a new project). From there, we looked at the areas our Stage categories were meant to cover, and we began aggregating that information into this [mural board](https://app.mural.co/invitation/mural/gitlab2474/1560787085910?sender=avolpe0924&key=3738c3db-031c-44ba-b542-d7da00aa4bca). It was the same affinity mapping process we use to look for commonalities in research findings or stakeholder requirements..\n\nWhat the affinity map helped us quickly see was: while there were areas of clear ownership where we could split work, there were areas where we needed to share work, too. This [issue](https://gitlab.com/gitlab-org/gitlab-design/issues/458) summarizes what we learned.\n\n### Shared work\n\nHere’s the work that we decided to share:\n\n- Interacting with vulnerabilities\n- Status, reporting, and metrics for vulnerabilities\n- Information architecture and inter-stage experiences\n\nThese areas are core to the Secure experience, and they benefit from collaborative design work and exploration.  But the benefits don’t end with our product UX—they help our team work better together, too:\n\n- We gain an established common purpose.\n- Our trust grows as we get to know each other better.\n- We fail and succeed together.\n- We have more opportunities to create new and unique solutions.\n- We gain visibility into how another designer may have solved a similar problem in the past.\n\nBy sharing work, we’re also able to improve our onboarding experience for new product designers. When new teammates join, we work together to find a shared issue that will help them better understand the product and that they can contribute to without much domain knowledge.\n\nFor example, when [Becka](https://about.gitlab.com/company/team/?department=protect-ux-team#beckalippert) and [Camellia](https://about.gitlab.com/company/team/?department=secure-ux-team#cam.x) recently joined the team, we purposely chose [shared issues](https://gitlab.com/dashboard/issues?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=Secure%20UX%3A%3AShared) as excellent shadow opportunities. These serve as great introductions into the Stage and the security field and will help build their foundational knowledge in both.\n\nThese shared issues help everyone obtain a richer contextual understanding of the design problems we are solving for as a team. In the end, our product and experience will benefit as a result.\n\n### Split work\n\nWhile shared work has its advantages, so does splitting our efforts to focus on specific domains and features. The benefits we've seen:\n\n- We can work closely and consistently with engineers.\n- We’re able to grow our domain knowledge about a particular area.\n- We experience less of the friction caused by context switching.\n- We’re better able to envision and create an end-to-end experiences for our users.\n\nSplit work doesn't mean solo work, necessarily. The GitLab UX team hosts weekly group design feedback sessions where designers share their work and the UX team offers feedback. Our UX Director often says, \"I learn the most about our product in these sessions!\" We definitely agree.\n\nThat’s why we also do our best to share work during cross-functional meetings and asynchronously on our [Secure UX](https://www.youtube.com/playlist?list=PL05JrBw4t0KrFCe5BgUkzFrZifjforQOz) playlist on the [GitLab unfiltered YouTube](https://www.youtube.com/channel/UCMtZ0sc1HHNtGGWZFDRTh5A) channel. For us, a divide-and-conquer approach doesn't mean that other teammates aren’t involved.\n\nAn excellent example of collaborating on split work is the [UX Scorecard initiative](https://about.gitlab.com/handbook/product/ux/ux-scorecards/) in Q3 to collaborate on the new Security gates feature. This is a software composition feature (Kyle's split focus), though the MR aspect is closely related to vulnerabilities detected in the MR (Andy's split focus). In this case, Andy will conduct [#534](https://gitlab.com/gitlab-org/gitlab-design/issues/534), and Kyle will do [#533](https://gitlab.com/gitlab-org/gitlab-design/issues/533); then we'll work together on next steps and design improvement recommendations. Since each of the issues is tied to different personas, we see this is an opportunity for us to be an advocate for each unique user and focus strictly on their experience—all while working together on a cross-stage solution that benefits the feature.\n\nAndy:\n_“Having both a dedicated area of focus and shared areas of focus has given me an opportunity to dive deep into the specific niche areas of AppSec and uncover valuable insights about our users, their goals, and the technical challenges they face while still being able to see the bigger picture.”_\n\nKyle:\n_“Merging our efforts is a crucial aspect to our design process. This helps ensure our split work results in a cohesive experience for our users.”_\n\n## Putting it all together\n\nIn the next few months, we have two new designers joining Secure and another for Protect. We’re thrilled to continue evolving our team and partnering with our new teammates on a path forward. Our mission and commitment are clear: To create a best in-class security and compliance experience for our customers.\n\nThanks for reading! Any thoughts to share? Do you have stories about scaling your UX team? Tell us in the comments below!\n\n_Interested in joining the team? [We’re hiring!](https://about.gitlab.com/jobs/)_\n\n",[1039,848],{"slug":1579,"featured":6,"template":683},"how-we-uxd-our-secure-ux-team","content:en-us:blog:how-we-uxd-our-secure-ux-team.yml","How We Uxd Our Secure Ux Team","en-us/blog/how-we-uxd-our-secure-ux-team.yml","en-us/blog/how-we-uxd-our-secure-ux-team",{"_path":1585,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1586,"content":1591,"config":1597,"_id":1599,"_type":17,"title":1600,"_source":18,"_file":1601,"_stem":1602,"_extension":21},"/en-us/blog/update-free-software-and-telemetry",{"title":1587,"description":1588,"ogTitle":1587,"ogDescription":1588,"noIndex":6,"ogImage":967,"ogUrl":1589,"ogSiteName":671,"ogType":672,"canonicalUrls":1589,"schema":1590},"Update on free software and telemetry (Updated October 29th, 2019)","Telemetry services and GitLab. (GitLab CE will continue to be free software)","https://about.gitlab.com/blog/update-free-software-and-telemetry","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Update on free software and telemetry (Updated October 29th, 2019)\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Scott Williamson\"}],\n        \"datePublished\": \"2019-10-10\",\n      }",{"title":1587,"description":1588,"authors":1592,"heroImage":967,"date":1594,"body":1595,"category":14,"tags":1596},[1593],"Scott Williamson","2019-10-10","\n\n> **2019-10-29 UPDATE:** The following email is going out to all GitLab users: \n\n\nDear GitLab users and customers,\n\nOn October 23, we sent an email entitled “Important Updates to our Terms of Service and Telemetry Services” announcing upcoming changes. Based on considerable feedback from our customers, users, and the broader community, we reversed course the next day and removed those changes before they went into effect. Further, GitLab will commit to not implementing telemetry in our products that sends usage data to a third-party product analytics service. This clearly struck a nerve with our community and I apologize for this mistake.\n\nSo, what happened? In an effort to improve our user experience, we decided to implement user behavior tracking with both first and third-party technology. Clearly, our evaluation and communication processes for rolling out a change like this were lacking and we need to improve those processes. But that’s not the main thing we did wrong.\n\nOur main mistake was that we did not live up to our own core [value of collaboration](https://handbook.gitlab.com/handbook/values/#collaboration) by including our users, contributors, and customers in the strategy discussion and, for that, I am truly sorry. It shouldn’t have surprised us that you have strong feelings about opt-in/opt-out decisions, first versus third-party tracking, data protection, security, deployment flexibility and many other topics, and we should have listened first.\n\nSo, where do we go from here? The first step is a retrospective that is happening on October 29 to document what went wrong. We are reaching out to customers who expressed concerns and collecting feedback from users and the wider community. We will put together a new proposal for improving the user experience and share it for feedback. We made a mistake by not collaborating, so now we will take as much time as needed to make sure we get this right. You can be part of the collaboration by posting comments in [this issue](https://gitlab.com/gitlab-com/www-gitlab-com/issues/5672). If you are a customer, you may also reach out to your GitLab representative if you have additional feedback.\n\nI am glad you hold GitLab to a higher standard. If we are going to be transparent and collaborative, we need to do it consistently and learn from our mistakes.\n\nSincerely,\n\nSid Sijbrandij\n\nCo-Founder and CEO\n\nGitLab\n\n\n> **2019-10-24 UPDATE**: We've heard your concerns and questions and have rolled back any changes to our Terms of Service. We’re going to process the feedback and rethink our approach. We will not activate user level product usage tracking on GitLab.com or GitLab self-managed before we address the feedback and re-evaluate our plan. We will make sure to communicate our proposed changes prior to any changes to GitLab.com or self-managed instances, and give sufficient time for people to provide feedback for a new proposal. We'll work in [this issue](https://gitlab.com/gitlab-com/www-gitlab-com/issues/5672).\n\nFour years ago, there was a [guest blog post and discussion about free software and GitLab](/blog/gitlab-gitorious-free-software/). That discussion has continued to inform GitLab’s free software philosophy for years and has served as a guiding light for making decisions on how we strike an appropriate balance in our [open core](/blog/thoughts-on-open-source/) strategy. On one hand, we [value results](https://handbook.gitlab.com/handbook/values/#results) and we believe an open core model is the best path to achieve that. It also means making our products better as fast as possible for our customers and users. On the other hand, we want to make sure that users who prefer using only free software can have a positive GitLab experience, as open source communities are important to GitLab.\n\nTo make GitLab better faster, we need more data on how users are using GitLab. SaaS telemetry products, which provide analytics on user behavior inside web-based applications, have come a long way in the past few years. They are an important tool for rapidly improving user experiences because you can understand what users are doing (or not doing) in the app. GitLab has a lot of features, and a lot of users, and it is time that we use telemetry to get the data we need for our product managers to improve the experience.\n\nMost of these tools use JavaScript snippets (similar to Google Analytics) that execute in the user’s browser and send information back to the telemetry service. While there are open source options, the leading commercial telemetry solutions often use proprietary JavaScript snippets. For a majority of users, disclosure of JavaScript usage in a privacy policy, along with describing how we are going to use the data, may be sufficient. But we also recognize that users who prefer only free software may have concerns.\n\nSo, we are planning some changes that I will describe below. But rest assured, a very important thing is not changing: [GitLab Community Edition](/install/ce-or-ee/) will continue to be free software with no changes. If you want to install your own instance of GitLab without proprietary software, GitLab Community Edition (CE) remains a great option, as it is licensed under the MIT License. Many open source software projects use GitLab CE for their SCM and CI needs, and nothing is changing with GitLab CE.\n\n## Planned changes\n\n[GitLab.com (GitLab’s SaaS offering)](/pricing/#gitlab-com) and [GitLab's proprietary Self-Managed packages (Starter, Premium, and Ultimate)](/pricing/#self-managed) will now include additional Javascript snippets (both open source and proprietary) that will interact with both GitLab and possibly third-party SaaS telemetry services (we will be using Pendo). We will disclose all such usage in our [privacy policy](/privacy/), as well as what we are using the data for. We will also ensure that any third-party telemetry service we use will have data protection standards at least as strong as GitLab, and will aim for SOC2 compliance (Pendo is SOC2 compliant).\n\nIn order to service the needs of GitLab.com and GitLab Self-Managed users who do not want to be tracked, both GitLab.com and GitLab Self-Managed will honor the [Do Not Track (DNT)](https://en.wikipedia.org/wiki/Do_Not_Track) mechanism in web browsers. This means that, if you turn on Do Not Track in your browser, GitLab will not load the JavaScript snippet. The only downside to this is that users may also not get the benefit of in-app messaging or guides that some third-party telemetry tools have that would require the JavaScript snippet.\nOverall, we believe these changes will continue to help us achieve results in improving our product experience for users, while also giving choice to users who only want free software. Please let us know your thoughts.\n\n",[680,890],{"slug":1598,"featured":6,"template":683},"update-free-software-and-telemetry","content:en-us:blog:update-free-software-and-telemetry.yml","Update Free Software And Telemetry","en-us/blog/update-free-software-and-telemetry.yml","en-us/blog/update-free-software-and-telemetry",{"_path":1604,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1605,"content":1611,"config":1617,"_id":1619,"_type":17,"title":1620,"_source":18,"_file":1621,"_stem":1622,"_extension":21},"/en-us/blog/live-from-commit-london",{"title":1606,"description":1607,"ogTitle":1606,"ogDescription":1607,"noIndex":6,"ogImage":1608,"ogUrl":1609,"ogSiteName":671,"ogType":672,"canonicalUrls":1609,"schema":1610},"Live from Commit London","We're having a packed day at our first European user conference. Watch this space for the latest news.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678442/Blog/Hero%20Images/londoncommit.png","https://about.gitlab.com/blog/live-from-commit-london","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Live from Commit London\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Valerie Silverthorne\"}],\n        \"datePublished\": \"2019-10-09\",\n      }",{"title":1606,"description":1607,"authors":1612,"heroImage":1608,"date":1614,"body":1615,"category":14,"tags":1616},[1613],"Valerie Silverthorne","2019-10-09","\n**9:30AM BST** – GitLab CEO [Sid Sijbrandij](/company/team/#sytses) told attendees at our first European user conference that support for Amazon Web Services' Elastic Kubernetes Service (EKS) will be available later this year. Sid also underscored the importance of the European market. Almost one-third of GitLab's business comes from Europe and 42% of our customers are based in Europe.\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\" data-partner=\"tweetdeck\">\u003Cp lang=\"en\" dir=\"ltr\">Gitlab Commit London warming up with breakfast networking 🤜🏻💥🚀 cc \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/gitlabcommit?src=hash&amp;ref_src=twsrc%5Etfw\">#gitlabcommit\u003C/a> \u003Ca href=\"https://t.co/ke7nsNE7pO\">pic.twitter.com/ke7nsNE7pO\u003C/a>\u003C/p>&mdash; James McLeod (@mcleo_d) \u003Ca href=\"https://twitter.com/mcleo_d/status/1181849833604337667?ref_src=twsrc%5Etfw\">October 9, 2019\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n**10:00AM BST** – Speed matters, particularly at Porsche AG. Software engineers Alberto Gisbert and Dennis Menge told Commit 2019 attendees how a quest to improve collaboration, reduce tool complexity and achieve a single source of truth led the car manufacturer to GitLab. Porsche started using GitLab in Europe initially, but quickly realized it needed to expand to China, Porsche's largest market, as well. One year into the project, Porsche has more than 660 repositories with more than 250 active users. All told, more than 80,000 pipelines have been triggered.\n\nUp next, Capgemini UK's [Matt Smith](https://twitter.com/Harmelodic) shared how to go from [Zero to K8s: As Fast As Possible](https://gitlabcommit2019london.sched.com/event/UL5X/zero-to-k8s-as-fast-as-possible):\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\" data-conversation=\"none\">\u003Cp lang=\"en\" dir=\"ltr\">Britney mic&#39;d up!\u003Cbr>\u003Cbr>On stage in half an hour 😬\u003Ca href=\"https://twitter.com/hashtag/GitLabCommit?src=hash&amp;ref_src=twsrc%5Etfw\">#GitLabCommit\u003C/a> \u003Ca href=\"https://t.co/ivQ1V9waBW\">pic.twitter.com/ivQ1V9waBW\u003C/a>\u003C/p>&mdash; Matt Smith (@Harmelodic) \u003Ca href=\"https://twitter.com/Harmelodic/status/1181851029048102912?ref_src=twsrc%5Etfw\">October 9, 2019\u003C/a>\u003C/blockquote> \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\nCoding in the blink of an eye!\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\" data-partner=\"tweetdeck\">\u003Cp lang=\"en\" dir=\"ltr\">.\u003Ca href=\"https://twitter.com/Harmelodic?ref_src=twsrc%5Etfw\">@Harmelodic\u003C/a> is talking faster than \u003Ca href=\"https://twitter.com/hashtag/terraform?src=hash&amp;ref_src=twsrc%5Etfw\">#terraform\u003C/a> can deploy things :joy: Great live coding :sunglasses: \u003Ca href=\"https://twitter.com/hashtag/gitlabcommit?src=hash&amp;ref_src=twsrc%5Etfw\">#gitlabcommit\u003C/a> \u003Ca href=\"https://t.co/LS0t3GdqHx\">pic.twitter.com/LS0t3GdqHx\u003C/a>\u003C/p>&mdash; Michael Friedrich (@dnsmichi) \u003Ca href=\"https://twitter.com/dnsmichi/status/1181862263680053248?ref_src=twsrc%5Etfw\">October 9, 2019\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n**11:30AM BST** – How to shift left and bring security more firmly into development was the topic of a mid-morning panel discussion at Commit.\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\" data-conversation=\"none\">\u003Cp lang=\"en\" dir=\"ltr\">\u003Ca href=\"https://twitter.com/Shetti?ref_src=twsrc%5Etfw\">@Shetti\u003C/a> of \u003Ca href=\"https://twitter.com/VMware?ref_src=twsrc%5Etfw\">@VMware\u003C/a> leads a panel discussion on security in the software development life cycle with Jeremy Guido, \u003Ca href=\"https://twitter.com/plafoucriere?ref_src=twsrc%5Etfw\">@plafoucriere\u003C/a> and \u003Ca href=\"https://twitter.com/simasotiris?ref_src=twsrc%5Etfw\">@simasotiris\u003C/a>.\u003Ca href=\"https://twitter.com/hashtag/GitLabCommit?src=hash&amp;ref_src=twsrc%5Etfw\">#GitLabCommit\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/womenintech?src=hash&amp;ref_src=twsrc%5Etfw\">#womenintech\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/womeninstem?src=hash&amp;ref_src=twsrc%5Etfw\">#womeninstem\u003C/a> \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/womenwhocode?src=hash&amp;ref_src=twsrc%5Etfw\">#womenwhocode\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/git?src=hash&amp;ref_src=twsrc%5Etfw\">#git\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/DevOps?src=hash&amp;ref_src=twsrc%5Etfw\">#DevOps\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/opensource?src=hash&amp;ref_src=twsrc%5Etfw\">#opensource\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/security?src=hash&amp;ref_src=twsrc%5Etfw\">#security\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/sdlc?src=hash&amp;ref_src=twsrc%5Etfw\">#sdlc\u003C/a> \u003Ca href=\"https://t.co/lQeQYelTVv\">pic.twitter.com/lQeQYelTVv\u003C/a>\u003C/p>&mdash; Suze Shardlow at #GitLabCommit (@SuzeShardlow) \u003Ca href=\"https://twitter.com/SuzeShardlow/status/1181874495268773888?ref_src=twsrc%5Etfw\">October 9, 2019\u003C/a>\u003C/blockquote> \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\nSotiraki Sima, executive director in technology risk at Goldman Sachs, stressed the benefits of starting small and being prepared to continually adapt to new technologies and new tools. [Jeremy Guido](https://fr.linkedin.com/in/jeremyguido), backend engineer with My Data Models, said designating a security leader in a development team can help to make everyone feel more like a stakeholder. And [Philippe Lafoucriere](https://about.gitlab.com/company/team/#plafoucriere), distinguished engineer at GitLab, stressed the role of automation in scaling security throughout the SDLC. The bottom line: it's a process so take it a step at a time.\n\n**1:00PM BST** – What's next for the GitLab tool? [Eric Brinkman](/company/team/#ebrinkman), director of product, dev products, outlined our technology roadmap. He began with Meltano, a six-person startup located within GitLab that is focused on bringing DevOps best practices to DataOps. Eric announced that today [version 1.0 of Meltano](https://meltano.com/blog/meltano-graduates-to-version-1-0/) is available.\n\nAnd that was just the beginning. Value stream management will be coming soon to Manage, Eric said, so users will be able to track efficiency metrics and ultimately receive recommendations. Plan stage will add high and low release requirements related to code and test. In Create, our source code management and code review will get an upgrade with an improved Web IDE and eventually the ability to do live coding. Verify will receive load testing runs by default and Secure will get [fuzzing](/direction/secure/dynamic-analysis/fuzz-testing/) as a built-in part of security testing. Changes to Release will mean automatically staged rollbacks and Configure will invest in run books to improve mean time to recovery. Protect will continue to invest in real-time threat detection capabilities. And finally auto remediation is on the horizon so at some point the largely manual (and often annoying) job of finding and fixing vulnerabilities will be a thing of the past. \"This is something that can truly bring dev, sec and ops together,\" Eric said.\n\nNote: All sessions from Commit London are being recorded and will be available on our [YouTube channel](https://youtube.com/gitlab) in 24-48 hours.\n{: .alert.alert-info}\n",[268,278,890,680,1479,1458],{"slug":1618,"featured":6,"template":683},"live-from-commit-london","content:en-us:blog:live-from-commit-london.yml","Live From Commit London","en-us/blog/live-from-commit-london.yml","en-us/blog/live-from-commit-london",{"_path":1624,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1625,"content":1631,"config":1637,"_id":1639,"_type":17,"title":1640,"_source":18,"_file":1641,"_stem":1642,"_extension":21},"/en-us/blog/wrapping-up-commit",{"title":1626,"description":1627,"ogTitle":1626,"ogDescription":1627,"noIndex":6,"ogImage":1628,"ogUrl":1629,"ogSiteName":671,"ogType":672,"canonicalUrls":1629,"schema":1630},"Wrapping up GitLab Commit","From bagels to bowling with a healthy dose of DevSecOps and CI/CD in between, it was an epic day of learning and sharing at GitLab Commit Brooklyn.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680823/Blog/Hero%20Images/commit-brooklyn-graffiti-cover.jpg","https://about.gitlab.com/blog/wrapping-up-commit","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Wrapping up GitLab Commit\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Valerie Silverthorne\"}],\n        \"datePublished\": \"2019-09-18\",\n      }",{"title":1626,"description":1627,"authors":1632,"heroImage":1628,"date":1633,"body":1634,"category":14,"tags":1635},[1613],"2019-09-18","\n\n***Relive GitLab Commit Brooklyn through the power of lights, cameras, and a pinch of Tanuki magic. Here's the [full YouTube playlist for the event](https://www.youtube.com/playlist?list=PLFGfElNsQthaaqEAb6ceZvYnZgzSM50Kg)!***\n\nIf there's anything you need to understand about GitLab's first ever user conference, it's this: I started the day with a New York bagel, learned how to create a CI/CD pipeline in just 20 minutes, found out [NASA will take GitLab into space](/blog/open-source-nasa-gl/), and it ended in a bowling alley... yes, it was _that_ kind of day.\n\nWe did a neighborhood takeover of a few blocks in the Williamsburg area of Brooklyn and before I even arrived at the venue, I knew something interesting was happening. There was wall grafitti and street graffiti.\n\n![street graffiti](https://about.gitlab.com/images/blogimages/commitbrooklynstreet.jpg){: .shadow.small.center}\nGitLab has arrived in Brooklyn!\n{: .note.text-center}\n\nOver 400 attendees gathered in brick-and-light-filled meeting spaces for conversation, demonstrations, laughter, and even a screaming chicken (the result of the CI/CD demo). It was an epic day of sharing, learning and exploring that could have felt overwhelming. Instead, the quirky informal spaces seemed to relax everyone and make it easier to actually listen and learn.\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-partner=\"tweetdeck\">\u003Cp lang=\"en\" dir=\"ltr\">THE live coding keynote is here! \u003Ca href=\"https://twitter.com/eddiezane?ref_src=twsrc%5Etfw\">@eddiezane\u003C/a> of \u003Ca href=\"https://twitter.com/digitalocean?ref_src=twsrc%5Etfw\">@digitalocean\u003C/a> introduces his “startup” Screaming Chicken at \u003Ca href=\"https://twitter.com/hashtag/GitLabCommit?src=hash&amp;ref_src=twsrc%5Etfw\">#GitLabCommit\u003C/a> and shows how he runs it on \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@GitLab\u003C/a> AutoDevops, \u003Ca href=\"https://twitter.com/hashtag/Kubernetes?src=hash&amp;ref_src=twsrc%5Etfw\">#Kubernetes\u003C/a> and DO. The audience is riveted! \u003Ca href=\"https://t.co/ibao6ngeNX\">pic.twitter.com/ibao6ngeNX\u003C/a>\u003C/p>&mdash; Priyanka Sharma @ #GitLabCommit Brooklyn! (@pritianka) \u003Ca href=\"https://twitter.com/pritianka/status/1173972101713276928?ref_src=twsrc%5Etfw\">September 17, 2019\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\nThis was not anyone's typical idea of a user conference: no large, impersonal hotel, no pre-fab food, and no stilted conversations with total strangers. No one spent the day in frigid air conditioning. Instead everyone moved seamlessly from space to space, inside and outside, and it really was refreshing.\n\nLunch was refreshing too. It's not every day a gorilla brings you grilled cheese and tater tots under sunny skies.\n\n![Gorilla Grilled Cheese](https://about.gitlab.com/images/blogimages/commitbrooklyngorilla.jpg){: .shadow.small.center}\nThis was some grilled cheese!\n{: .note.text-center}\n\nAfter lunch, some people met up with our CEO [Sid Sijbrandij](/company/team/#sytses) while others attended individual tracks.\n\n![Office hours with Sid](https://about.gitlab.com/images/blogimages/commitbrooklynsid.jpg){: .shadow.small.center}\nMeet the CEO!\n{: .note.text-center}\n\nAn open coffee and tea bar (we took over the local coffee shop and my iced chai latte was delicious) fueled lots of conversations about the challenges we all face around DevOps.\n\n![iced chai](https://about.gitlab.com/images/blogimages/commitbrooklynchai.jpg){: .shadow.small.center}\nCheers!\n{: .note.text-center}\n\nAnd then it was time to, well, bowl.\n\n![Bowling](https://about.gitlab.com/images/blogimages/commitbrooklynbowling.jpg){: .shadow.small.center}\nGitLab at Brooklyn Bowl\n{: .note.text-center}\n\nIt might be bragging, but we really do throw a great party (and user conference, for that matter).\n\nIf you'd like to see for yourself, you'll have another chance to network with others on the same DevOps journey. Get your tickets to [Commit London on October 9](/events/commit/#). You can also read about news from Commit: [$268 million in Series E funding, new partners, and more](/blog/live-from-commit-news/), and check out the highlight reel below:\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/hi2D0Se_VnA\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n\u003C%= partial \"includes/blog/blog-merch-banner\" %>\n",[110,743,278,1479,1636],"frontend",{"slug":1638,"featured":6,"template":683},"wrapping-up-commit","content:en-us:blog:wrapping-up-commit.yml","Wrapping Up Commit","en-us/blog/wrapping-up-commit.yml","en-us/blog/wrapping-up-commit",{"_path":1644,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1645,"content":1651,"config":1656,"_id":1658,"_type":17,"title":1659,"_source":18,"_file":1660,"_stem":1661,"_extension":21},"/en-us/blog/gitlab-series-e-funding",{"title":1646,"description":1647,"ogTitle":1646,"ogDescription":1647,"noIndex":6,"ogImage":1648,"ogUrl":1649,"ogSiteName":671,"ogType":672,"canonicalUrls":1649,"schema":1650},"Announcing $268 million in Series E funding","New funding and our $2.75 billion valuation will allow us to enhance monitoring and security capabilities.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664134/Blog/Hero%20Images/gitlabcommitbrooklyn.png","https://about.gitlab.com/blog/gitlab-series-e-funding","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Announcing $268 million in Series E funding\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2019-09-17\",\n      }",{"title":1646,"description":1647,"authors":1652,"heroImage":1648,"date":1653,"body":1654,"category":14,"tags":1655},[699],"2019-09-17","We’re excited to share that GitLab has completed a $268 million Series E round of fundraising that pushed the company’s valuation to $2.75 billion. This latest funding round was led by existing investors Goldman Sachs and ICONIQ, but also included participation from nine new-to-GitLab investors.\n\nOur plans for the funding are straightforward: GitLab will invest to make all of our [DevOps platform](/topics/devops-platform/) offerings, including monitoring, security, and planning, _best in class_ so we can enable our [enterprise customers](/enterprise/) to continue to bring products to market faster.\n\nAt a time when the DevOps tools market is expected to triple by 2023 (from $5.2 billion last year to $15 billion, according to IDC), it was clear there was an opportunity for our company to pursue additional funding.\n“To be competitive today, companies need to be 10x faster to market. We made an early bet that enterprises would benefit from a single application experience for DevOps teams to accelerate getting software products to market faster and more securely,” says CEO [Sid Sijbrandij](/company/team/#sytses). “I love hearing how our customers are innovating faster with a single DevOps application that enables Dev, Ops, and Security to collaborate, and this funding will help more organizations experience the benefits of this unified DevOps experience.”\n\nToday more than 100,000 organizations use GitLab, including Ask Media Group, Charter Communication, Delta Air Lines, Goldman Sachs, Ticketmaster, Nvidia, and [many more](/customers/). We just found out we were ranked 32nd in the [Forbes 2019 Cloud 100](https://about.gitlab.com/2019-09-11-gitlab-named-leader-in-forbes-cloud-100-list/) – and we were the only cloud-agnostic DevOps tool maker named! Our ARR (annual recurring revenue) growth rate is 143%, a sign of customer satisfaction and strong demand.\n\n## A fast pace\n\nThis latest fundraising effort happened less than a year after we announced our [Series D round of $100 million](/blog/announcing-100m-series-d-funding/). At that time the company was valued at $1.1 billion; with today’s announcement, our valuation has more than doubled in less than a year.\n\nIt’s been an amazing journey to get to this point, and it’s worth remembering where we came from. In 2015 fewer than 10 people worked at GitLab; today over 800 team members contribute from 55 countries around the world. And we’re still growing, as our [222 open positions](/jobs/) show. More than 4,800 people actively contribute code to GitLab, and we receive an average of 180 improvements to each monthly release. In March 2019 we had [one million merge requests](/blog/1-mil-merge-requests/), which was a milestone indeed.\nWe’re on this journey together and we couldn’t be more excited to see where it takes us. Today you’ll find us at our first ever user conference, [GitLab Commit](/events/commit/), in Brooklyn and then again in London on October 9. We’re looking forward to the inspiring customer stories that have made this all possible.\n\nThe funding was announced live in the [keynote of GitLab Commit Brooklyn](https://www.youtube.com/watch?v=6LrgxOfWMXA&list=PLFGfElNsQthaaqEAb6ceZvYnZgzSM50Kg), also see [the playlist of all talks that day](https://www.youtube.com/playlist?list=PLFGfElNsQthaaqEAb6ceZvYnZgzSM50Kg).",[680,268,278,723,1636],{"slug":1657,"featured":6,"template":683},"gitlab-series-e-funding","content:en-us:blog:gitlab-series-e-funding.yml","Gitlab Series E Funding","en-us/blog/gitlab-series-e-funding.yml","en-us/blog/gitlab-series-e-funding",{"_path":1663,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1664,"content":1669,"config":1673,"_id":1675,"_type":17,"title":1676,"_source":18,"_file":1677,"_stem":1678,"_extension":21},"/en-us/blog/live-from-commit-news",{"title":1665,"description":1666,"ogTitle":1665,"ogDescription":1666,"noIndex":6,"ogImage":1648,"ogUrl":1667,"ogSiteName":671,"ogType":672,"canonicalUrls":1667,"schema":1668},"At GitLab Commit, our product roadmap, new partners, and a new milestone","Live from GitLab Commit: what’s next for our product strategy, expanded partnerships, and more.","https://about.gitlab.com/blog/live-from-commit-news","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"At GitLab Commit, our product roadmap, new partners, and a new milestone\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Valerie Silverthorne\"}],\n        \"datePublished\": \"2019-09-17\",\n      }",{"title":1665,"description":1666,"authors":1670,"heroImage":1648,"date":1653,"body":1671,"category":14,"tags":1672},[1613],"\nOur first ever user conference – GitLab Commit in Brooklyn – has only been under way for a few hours and we’ve already made a number of key announcements. Not only did we secure an additional [$268 million in Series E funding](/blog/gitlab-series-e-funding/) to power our DevOps journey forward, we’ve also strengthened key partnerships, hit new milestones, and released details about important new features in the product.\n\n## GitLab is for everyone\n\nIn the next few releases, look for GitLab to add advanced integration with the [Amazon Elastic Kubernetes](https://aws.amazon.com/eks/) service (EKS), something our CEO [Sid Sijbrandij](/company/team/#sytses) told the audience during his keynote at Commit. Sid also said the number of customers using GitLab with [Terraform by HashiCorp](/blog/gitlab-hashicorp-terraform-vault-pt-1/) is increasing at an exciting rate. This Ops-focused solution leverages GitLab’s CI/CD automated pipelines to better achieve infrastructure as code, a.k.a. GitOps. Lastly, later this year, look out for GitLab to integrate with HashiCorp’s very popular [Vault Project](https://www.vaultproject.io/docs/internals/security.html) that will protect secrets throughout the pipeline.\n\nMoving forward, Sid stressed that we believe everyone has a seat at the table. \"We will make our vision of a complete DevSecOps a reality for each and every one of you,\" says Sid.\n\nAnd for those who’ve been hoping for auto remediation, it’s coming, says [Mark Pundsack](/company/team/#markpundsack), vice president of product strategy, during his keynote. There is work to be done but the vision is clear: Necessary but repetitive security work will be automated in the near future.\n\nThat’s not the end, however. Mark outlined a future where operations and security teams have their own customized dashboards on GitLab, giving them access to the same information as developers. “A ton of people are involved with the development and delivery of software,” says Mark. “That is the ultimate GitLab vision: Where every knowledge worker involved with software development and delivery uses a single application so they are on the same page with the rest of their team members.” Ultimately GitLab will expand to the business side, bringing project managers, designers, legal, and executives into the mix. Mark’s final message: “GitLab is for everyone.”\n\n## GitLab & VMWare\n\n[GitLab and VMWare](https://www.globenewswire.com/news-release/2019/09/17/1916738/0/en/GitLab-to-Enable-Cloud-Native-Transformation-on-VMware-Cloud-Marketplace.html) announced a collaboration making [GitLab now available on the VMWare Cloud marketplace](https://about.gitlab.com/2019-09-17-gitlab-on-vmware-cloud-marketplace/). Development teams will be able to deploy and run [GitLab Enterprise (Core)](/pricing/) on their VMWare environments with just a few clicks. GitLab is packaged and supported by Bitnami which provides curated applications for the VMWare marketplace. GitLab also supports [“Continuous Verification”](https://thenewstack.io/how-continuous-security-can-solve-the-cloud-protection-conundrum/) by integrating with VMWare Secure State, Wavefront by VMWare, and CloudHealth.\n\n## KDE chooses GitLab\n\nKDE, an international technology community creating free and open source software for desktop and portable computing, [chose GitLab](https://www.globenewswire.com/news-release/2019/09/17/1916731/0/en/GitLab-Adopted-by-KDE-to-Foster-Open-Source-Contributions.html) for its developers. The KDE team wants to offer additional infrastructure support and thinks GitLab will help boost development momentum.\n\nThe KDE community is one of the largest free software communities with more than 2,600 contributors. Now they’ll have access to an even wider range of development and code review features with GitLab’s DevOps platform to complement their tools currently in use. The KDE community will have additional options for accessible infrastructure for contributors, code review integration with Git, streamlined infrastructure and tooling, and an open communication channel with the upstream GitLab community.\n\n## Forbes 2019 Cloud 100\n\nWe’re pretty excited to mention we’ve been named to the [Forbes 2019 Cloud 100](https://www.forbes.com/sites/mnunez/2019/09/11/a-truck-tracker-a-coder-toolbox-and-a-unicorn-from-down-under-inside-this-years-cloud-100/#6148bcad5653), the definitive ranking of the top 100 private cloud companies in the world, published by Forbes in partnership with Bessemer Venture Partners and Salesforce Ventures. We’re the only cloud-agnostic DevOps platform, and [we came in at number 32](https://about.gitlab.com/2019-09-11-gitlab-named-leader-in-forbes-cloud-100-list/)!\n\nIf you like what you’re hearing out of GitLab Commit Brooklyn, then join us at our next [GitLab Commit in London](/events/commit/#) on October 9.\n",[268,278,804,912,1636],{"slug":1674,"featured":6,"template":683},"live-from-commit-news","content:en-us:blog:live-from-commit-news.yml","Live From Commit News","en-us/blog/live-from-commit-news.yml","en-us/blog/live-from-commit-news",{"_path":1680,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1681,"content":1686,"config":1692,"_id":1694,"_type":17,"title":1695,"_source":18,"_file":1696,"_stem":1697,"_extension":21},"/en-us/blog/get-ready-for-commit",{"title":1682,"description":1683,"ogTitle":1682,"ogDescription":1683,"noIndex":6,"ogImage":1648,"ogUrl":1684,"ogSiteName":671,"ogType":672,"canonicalUrls":1684,"schema":1685},"How to get the most out of GitLab Commit","We’re taking over the Williamsburg neighborhood of Brooklyn and opening up our world to you. Here’s everything you need to know.","https://about.gitlab.com/blog/get-ready-for-commit","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How to get the most out of GitLab Commit\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emily Kyle\"}],\n        \"datePublished\": \"2019-09-13\",\n      }",{"title":1682,"description":1683,"authors":1687,"heroImage":1648,"date":1689,"body":1690,"category":14,"tags":1691},[1688],"Emily Kyle","2019-09-13","\nWe’re (almost!) ready – are you? The inaugural GitLab Commit in Brooklyn is just around the corner.  We wanted to share some details on the event and how to get the most out of it while you’re onsite and after it’s over.\n\nWhen planning this event we made the strategic choice to avoid convention centers and stuffy hotel ballrooms. We like to be a bit more playful (and out of the box) in how we approach our community and events. We decided to model this event after a block party and on Tuesday September 17 we’ll be taking over 8 venues. On your walk from the subway you’ll notice the street has been “GitLabbed” and will be full of signs. Everything – signs, content, staff – will welcome you. If we did it right it will be quirky, fun, innovative, collaborative, and inclusive. A small block in Brooklyn will _be_ GitLab for a day. We can’t wait to share that vision with everyone attending.\n\nStart by checking in at the Williamsburg Hotel, 96 Wythe Ave, Brooklyn, NY 11249\n(between Nassau St. on the G or Bedford Ave. on the L). Don’t forget to grab breakfast treats and coffee.\nOver the course of the day we will also have sessions and activities in and around the following\nvenues: the  [Wythe Hotel](https://wythehotel.com), [Schimanski](https://www.schimanskinyc.com),\n[Brooklyn Bowl](https://www.brooklynbowl.com), [Kinfolk 90](https://kinfolklife.com/locations/kinfolk-90/) & [Kinfolk 94](https://kinfolklife.com/locations/kinfolk-94/). Each venue serves a specific function and has its own personality but each one flows seamlessly into the next one.\n\n![Map of GitLab Commit](https://about.gitlab.com/images/blogimages/gitlabcommitmap.png){: .shadow.small.center.wrap-text}\n\nIt’s a neighborhood takeover!\n{: .note.text-center}\n\n## Remember to schedule\n\nYou can find the schedule [here](https://gitlabcommit2019brooklyn.sched.com). To get the most out of your day on site, we suggest building out your schedule in the sched link just mentioned so you can reserve your slot in each of the tracks. There will be 3 tracks – cloud native, DevOps in action, and powered by GitLab – and each will be color coded to help you navigate throughout the day.\n\n## And it’s not over yet…\n\nWe will close out the day of sessions at the historic Brooklyn Bowl directly following the day’s packed lineup for networking, food & beverages and of course bowling. The party kicks off at 5 pm.\n\n## Other important details\n\nLooking for a well brewed cappuccino or latte?  Kinfolk 90 will be serving Commit attendees with a badge from 12pm-5pm at no charge, so drop in between sessions.\n\nHave questions about our product offerings, a nagging support item, want deeper insight into our security offerings, or time to visit with some of our sponsors?  The Library at the Williamsburg Hotel will be open all day for some one-to-one interaction.\n\nLastly we have a [few spots still open](https://about.gitlab.com/events/commit/) if you want to get in on this action packed day of learning! There is also still time to sign up for our [London event](/events/commit/#) in October.\n",[268,743,278,995,1636],{"slug":1693,"featured":6,"template":683},"get-ready-for-commit","content:en-us:blog:get-ready-for-commit.yml","Get Ready For Commit","en-us/blog/get-ready-for-commit.yml","en-us/blog/get-ready-for-commit",{"_path":1699,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1700,"content":1705,"config":1711,"_id":1713,"_type":17,"title":1714,"_source":18,"_file":1715,"_stem":1716,"_extension":21},"/en-us/blog/ci-cd-github-extended-again",{"title":1701,"description":1702,"ogTitle":1701,"ogDescription":1702,"noIndex":6,"ogImage":1328,"ogUrl":1703,"ogSiteName":671,"ogType":672,"canonicalUrls":1703,"schema":1704},"We're extending free usage of CI/CD for GitHub for another six months!","Get another six months' use of CI/CD for GitHub on GitLab.com, free of charge.","https://about.gitlab.com/blog/ci-cd-github-extended-again","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"We're extending free usage of CI/CD for GitHub for another six months!\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"William Chia\"}],\n        \"datePublished\": \"2019-09-09\",\n      }",{"title":1701,"description":1702,"authors":1706,"heroImage":1328,"date":1708,"body":1709,"category":14,"tags":1710},[1707],"William Chia","2019-09-09","\n\n[CI/CD for GitHub](/solutions/github/) allows you to host your code on GitHub while taking advantage of GitLab for CI/CD. In fact, [CI/CD for external repos](https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/) lets you use any Git repo as a host together with GitLab CI/CD.\n\nWhen we first released the ability to use GitLab CI/CD with other Git repositories we placed it into our [Premium tier](/pricing/premium/) for GitLab Self-Managed. Normally, features go into a corresponding pricing tier on GitLab.com but we believed this was a specific case where we should offer a feature for free on GitLab.com because of the amount of repos on GitHub.com. Not knowing how long we'd keep this pricing, we set a deadline of one year. When that time came, we extended for six months.\n\nToday, we are extending the deadline for using CI/CD for external repos, including CI/CD for GitHub again. Now you'll have until **Mar. 22, 2020** to use these capabilities with private repos (see below for open source) as a [Free or Bronze](/pricing/) user on GitLab.com. This feature will continue to be part of the [Premium tier](/pricing/premium/) for GitLab Self-Managed.\n\n## Always free for open source\n\nThis extension applies to private repos hosted on GitLab.com. As part of our commitment to open source, [public projects get all the features of Gold for free](/solutions/open-source/). GitLab CI/CD for GitHub works by automatically mirroring your repos to GitLab.com. As such, if you have a public project on GitHub, it will also be public on GitLab so you can always take advantage of GitLab CI/CD for public projects.\n\n## Why we're extending the offer\n\nFor a rationale on our extension see our previous blog post when we [first extended external CI/CD](/blog/six-more-months-ci-cd-github/). When it came to the current deadline we found that the reasoning still held true and [decided to extend again](https://gitlab.com/gitlab-org/gitlab-ee/issues/13065).\n\nAs always, we'd love your feedback in the comments below.\n",[110,995,268,804],{"slug":1712,"featured":6,"template":683},"ci-cd-github-extended-again","content:en-us:blog:ci-cd-github-extended-again.yml","Ci Cd Github Extended Again","en-us/blog/ci-cd-github-extended-again.yml","en-us/blog/ci-cd-github-extended-again",{"_path":1718,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1719,"content":1725,"config":1731,"_id":1733,"_type":17,"title":1734,"_source":18,"_file":1735,"_stem":1736,"_extension":21},"/en-us/blog/refining-gitlab-product-experience",{"title":1720,"description":1721,"ogTitle":1720,"ogDescription":1721,"noIndex":6,"ogImage":1722,"ogUrl":1723,"ogSiteName":671,"ogType":672,"canonicalUrls":1723,"schema":1724},"What we're doing to refine GitLab's product experience","How we're using UX Scorecards to improve GitLab's UX.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749673002/Blog/Hero%20Images/blog-experience-baselines.jpg","https://about.gitlab.com/blog/refining-gitlab-product-experience","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"What we're doing to refine GitLab's product experience\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Christie Lenneville\"}],\n        \"datePublished\": \"2019-09-05\",\n      }",{"title":1720,"description":1721,"authors":1726,"heroImage":1722,"date":1728,"body":1729,"category":14,"tags":1730},[1727],"Christie Lenneville","2019-09-05","\nGitLab is investing deeply in improving our user experience. Need proof? By the end of 2019, our team\nof product designers, UX researchers, and technical writers will be around 60 practitioners strong.\nThat's incredible growth for a company of our size.\n\nWhen I joined GitLab as the director of user experience back in February 2019, one of the\nstated goals was to move our team from being \"reactive\" (responding to UX requests) to being\n\"proactive\" (actively finding and solving UX problems and advocating for change). I was impressed to\nsee this perspective from our executive leadership. It's surprising how often user experience gets\nput on the backburner, despite its positive impact on customer satisfaction and company growth.\n\nBut while intentions are good, they're useless without action. So, the UX team quickly got to work to\nfigure out how we could make meaningful change.\n\n## Proactively improving UX\n\nHistorically, GitLab has focused its efforts on developing new features. With a new emphasis on\nrefining our most common and critical workflows, we needed a new approach.\n\nEnter [UX Scorecards](/handbook/product/ux/ux-scorecards/): An initiative\nby which we evaluate the current experience with quick, iterative steps to make it better,\nincluding a built-in grading rubric that helps us to properly prioritize efforts and track progress over time.\n\nUsing this methodology, we're:\n\n* Working with product managers to identify the most common and critical workflows in our product\n* Analyzing each workflow to see where it works well... and where it doesn't\n* Documenting the existing experience in videos and user journeys\n* Grading the experience on an A/B/C/D/F scale\n* Creating issues with recommendations for the proposed experience\n* Working with product management to prioritize improvements\n\nIt's a highly proactive way of moving our user experience forward.\n\n## What have we done so far?\n\nDuring Q2 of calendar year 2019, we committed to\nan OKR that focused on [working\nclosely with our product management peers to identify 15 critical workflows](https://gitlab.com/gitlab-com/www-gitlab-com/issues/4354), also\ncalled \"Jobs to be Done,\" across our entire application. This valuable, lightweight effort\nsurfaced opportunities to improve day-to-day workflows and proved out a pattern we can\napply to future workflows.\n\nHere's how we defined our grading rubric:\n\n* **A (High Quality/Exceeds):** Workflow is smooth and painless. Clear path to reach a goal.\nCreates “Wow” moments due to the process being so easy. Users would not hesitate to go through the\nprocess again.\n* **B (Meets Expectations):** Workflow meets expectations but does not exceed user needs. Users are\nable to reach the goal and complete the task. Less likely to abandon.\n* **C (Average):** Workflow needs improvement, but users can still finish completing the task. It\nusually takes longer to complete the task than it should. Users may abandon the process or try again later.\n* **D (Presentable):** Workflow has clear issues and should not have gone into production without more\nthought and testing. Users may or may not be able to complete the task. High risk of abandonment.\n* **F (Poor):** Workflow leaves users confused and with no direction of where to go next. Can sometimes\ncause users to go around in circles or reach a dead end. Very high risk of abandonment, and users\nwill most likely seek other methods to complete the task.\n\n## What workflows did we focus on?\n\nAs mentioned above, we focused first on the most used and highly impactful workflows in the product.\nOver time, we'll continue to add to this list.\n\n### Workflows with a score of C\n\n* Sign-in/register for a GitLab account **C/C** (desktop/mobile)\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=AbP9aAbW1zI)\n  * [Improvement Recommendations](https://gitlab.com/gitlab-org/ux-research/issues/217)\n* Create a Merge Request: **C/D** (desktop/mobile)\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=WOdqw_z2dwE)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/gitlab-design/issues/441)\n* Review changes: **C**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=CShQ0JA_BA0)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/gitlab-design/issues/442)\n* Identify and troubleshoot performance issues: **C**\n  * [UX Scorecard Video](https://youtu.be/nUdSqrvWeiA)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/gitlab-ee/issues/11713)\n* Add my existing Kubernetes cluster: **C-**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=xAi9u2eqrSk&t=7s)\n  * [Recommendation Issues](https://gitlab.com/groups/gitlab-org/-/epics/1380)\n* Understand dependencies: **C**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=XyEf0E1e8ns)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/gitlab-design/issues/449)\n* Deploy to Gitlab Pages: **C**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=WiVq7pQ0RMg)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/gitlab-design/issues/412)\n* Set up automated testing inside GitLab: **C**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=MOJn9JQEE2s)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/gitlab-design/issues/480)\n\n### Workflows with a score of D\n\n* Start a GitLab trial: **D-**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=MkTOwTxsoL8)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/ux-research/issues/285)\n* Receive and configure Issue notifications and To-Do items: **D+**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=gILgNANrIhg)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/gitlab-design#520)\n* Have awareness of adding risk through vulnerable code: **D**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=By0td9kVsOU)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/gitlab-design/issues/400)\n* See security vulnerabilities all in one location for prioritization: **D**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=w623fSysQzE)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/gitlab-design/issues/401)\n* Approve or blacklist new licenses: **D**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=TDcIN7lu7dk)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/gitlab-design/issues/402)\n\n### Workflows with a score of F\n\n* Analyze the productivity of a team: **F**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=ipkmlW_GQig)\n  * [Recommendation Issues](https://gitlab.com/groups/gitlab-org/-/epics/1454)\n* Create a release and update it: **F**\n  * [UX Scorecard Video](https://www.youtube.com/watch?v=wCnpEGhS8uk)\n  * [Recommendation Issues](https://gitlab.com/gitlab-org/gitlab-design/issues/431)\n\n## What's next?\n\nOne of our [OKRs for Q3 of calendar year 2019](https://gitlab.com/groups/gitlab-org/-/epics/1676) is to\nimprove seven of these workflows by one grade letter. That means we should soon have some \"B\" grades\nmixed in with the lower scores. We also intend to validate our scores with user research since\nthis initial effort focused on\na [heuristic evaluation](https://careerfoundry.com/en/blog/ux-design/what-is-a-heuristic-evaluation-in-ux/).\n\nAt the beginning of Q3, our Product team has already prioritized refining\nthe [GitLab.com Free Trial](https://gitlab.com/groups/gitlab-org/-/epics/377) experience. They've\nalso committed to improvements for adding an existing Kubernetes cluster.\n\nWe're excited to work with our product team to prioritize refining other parts of the product\nthat are important to users. This effort should help move us closer to our goal of providing\nan [elevated user experience that customers love](/direction/maturity/index.html).\n\nCover image by [Startae](https://unsplash.com/@startaeteam) on [Unsplash](https://unsplash.com/license)\n{: .note}\n",[1039,1038],{"slug":1732,"featured":6,"template":683},"refining-gitlab-product-experience","content:en-us:blog:refining-gitlab-product-experience.yml","Refining Gitlab Product Experience","en-us/blog/refining-gitlab-product-experience.yml","en-us/blog/refining-gitlab-product-experience",{"_path":1738,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1739,"content":1745,"config":1750,"_id":1752,"_type":17,"title":1753,"_source":18,"_file":1754,"_stem":1755,"_extension":21},"/en-us/blog/why-i-am-excited-about-gitlab-commit",{"title":1740,"description":1741,"ogTitle":1740,"ogDescription":1741,"noIndex":6,"ogImage":1742,"ogUrl":1743,"ogSiteName":671,"ogType":672,"canonicalUrls":1743,"schema":1744},"Why I'm so excited to go to GitLab Commit","Spoiler alert: It's that I'm going to get to see GitLabbers who I don't work with","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683818/Blog/Hero%20Images/in-new-york.jpg","https://about.gitlab.com/blog/why-i-am-excited-about-gitlab-commit","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Why I'm so excited to go to GitLab Commit\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Brendan O'Leary\"}],\n        \"datePublished\": \"2019-09-02\",\n      }",{"title":1740,"description":1741,"authors":1746,"heroImage":1742,"date":1748,"body":1749,"category":14},[1747],"Brendan O'Leary","2019-09-02","It is probably no surprise that I'm a little biased when it comes to GitLab.  Heck, I've even used it to [make breakfast](/blog/introducing-auto-breakfast-from-gitlab/) and [organize home improvement ideas](/blog/using-gitlab-to-manage-house-renovation-priorities/).  But the thing is - my excitement around the first [GitLab Commit](/events/commit/) event has very little to do with GitLab the product or the company.  I'm most excited to get a chance to come together as GitLabbers.\n\nWe recently made it very clear that [\"GitLabber\"](/handbook/communication/top-misused-terms/) is not a term that means a person who is paid by GitLab - for that we say [team-member](/company/team/structure/#team-and-team-members).  And that's because of one of GitLab's key advantages as a tool and company is our [open core](https://en.wikipedia.org/wiki/Open-core_model) model and the over 2000 people who have directly contributed code to GitLab itself.  Those are a LOT more GitLabbers than we could ever hope to hire at GitLab, Inc.\n\nBut the wider community has so much more influence in shaping GitLab the product and the company than that.  As someone who really, truly values DevOps as a transformative practice - it's incredibly humbling to get a chance to \"open source\" the best way to do DevOps.\n\nAnd honestly, that's the part of [GitLab Commit in Brooklyn](https://www.eventbrite.com/e/gitlab-commit-2019-brooklyn-tickets-63012432883) next month that I'm most excited about.  The professionals coming to talk about how they've used DevOps to benefit their organizations are an incredible, diverse set of folks.  And they are from many industries - [Delta Airlines](/blog/avoiding-the-vendor-lock-with-delta-at-commit/), [Goldman Sachs](https://about.gitlab.com/customers/goldman-sachs/), MITRE, GNOME.  And the list goes on.\n\nHearing those speakers is going to be enlightening - the topics cover the entire span of DevOps.   Topics like developer efficiency, code quality, CI/CD, and innersourcing will help everyone attending understand how to level up their DevOps journey. On top of that, the attendees will participate in the conference AND the future of GitLab.\n\nSoftware has eaten the world, and the folks coming to New York represent the best and brightest minds in this new world.  And I can't wait to learn from them.  Probably people are expecting to learn about GitLab when they are there.  And sure, there's going to be a lot of time for that (support engineers, product team-members, etc.).  But I think that the **GitLabbers** we will all learn the most from will be those who don't work for GitLab.",{"slug":1751,"featured":6,"template":683},"why-i-am-excited-about-gitlab-commit","content:en-us:blog:why-i-am-excited-about-gitlab-commit.yml","Why I Am Excited About Gitlab Commit","en-us/blog/why-i-am-excited-about-gitlab-commit.yml","en-us/blog/why-i-am-excited-about-gitlab-commit",{"_path":1757,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1758,"content":1764,"config":1769,"_id":1771,"_type":17,"title":1772,"_source":18,"_file":1773,"_stem":1774,"_extension":21},"/en-us/blog/gitlab-commit-london-speakers",{"title":1759,"description":1760,"ogTitle":1759,"ogDescription":1760,"noIndex":6,"ogImage":1761,"ogUrl":1762,"ogSiteName":671,"ogType":672,"canonicalUrls":1762,"schema":1763},"Get a first look at the lineup for GitLab Commit London!","Meet the speakers – and get the schedule – for the upcoming GitLab Commit conference in London.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678515/Blog/Hero%20Images/gitlab-commit-header.png","https://about.gitlab.com/blog/gitlab-commit-london-speakers","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Get a first look at the lineup for GitLab Commit London!\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2019-08-29\",\n      }",{"title":1759,"description":1760,"authors":1765,"heroImage":1761,"date":1766,"body":1767,"category":14,"tags":1768},[699],"2019-08-29","\n\nWe are (forgive us) _properly chuffed_ to announce the amazing speaker lineup for our upcoming\nuser conference, GitLab Commit, on October 9 in London! The London edition of Commit will feature\nan inspiring group of speakers from many of the leading technology organizations in Europe and around the world.\n\nDown a cobblestone drive in the heart of the City of London is [The Brewery](https://www.thebrewery.co.uk/),\nwhere your journey will begin. For one day only, this 18th-century brewery plays host to leaders and\ninnovators who will share their voyages of automation, exploration, and transformation. You'll gain\ninsights to increase velocity and shape the future of development. And then we'll wrap it all up with\na [mini golf party](https://swingers.club/uk) in the moonlight. Jolly good stuff!\n\n [Join us for our first user conference! Register now.](#register-today)\n {: .alert .alert-gitlab-purple .text-center}\n\n## The lineup\n\nLocation coolness aside, the stories and talks are why you should come to GitLab Commit. We've\nworked hard to create a user-centric conference with speakers who not only build great software every day\nbut strive to modernize the process as they do so.\n\nThe GitLab Commit London keynotes will include:\n\n![speaker card alberto gisbert](https://about.gitlab.com/images/blogimages/gitlab-commit-london-speakers/gitlab-commit-london-alberto-gisbert-speaker-card.png){: .shadow.small.right.wrap-text}\n\n#### Establishing a DevOps culture @ Porsche:  A GitLab success story\n##### Alberto Gisbert & Dennis Menge, software engineers at Porsche AG\n\nIn early 2018, Porsche set a goal to become a digital company. However, neither the culture\nnor infrastructure supported modern software development. Automation, cloud infrastructure, and\nbetter collaboration were needed. Software engineers Alberto Gisbert and Dennis Menge share\nPorsche's journey to digital transformation from a developer point of view.\n\n![speaker card matt smith](https://about.gitlab.com/images/blogimages/gitlab-commit-london-speakers/gitlab-commit-london-matt-smith-speaker-card.png){: .shadow.small.left.wrap-text}\n\n#### Zero to K8s: As fast as possible\n##### Matt Smith, software engineer lead, OSCE Team, Capgemini UK\n\nMatt will share his success story starting with no code and no infrastructure to having a\nfunctioning proof of concept application with frontend, backend and database, all\nrunning on Kubernetes. He'll explain how he got there quickly using GitLab and open source\nscripts and tools.\n\n![speaker card alexandru viscreanu](https://about.gitlab.com/images/blogimages/gitlab-commit-london-speakers/gitlab-commit-london-alexandru-constantin-viscreanu-speaker-card.png){: .shadow.small.right.wrap-text}\n\n#### Flying from base to native within the clouds\n##### Alexandru Constantin Viscreanu, platform engineer, Kiwi.com\n\nToday's PaaS landscape is filled with a wide variety of choices so Kiwi.com is constantly working on improving\nits infrastructure stack to take advantage of the many building blocks cloud providers have to offer. In\nthis talk Alex will be sharing how Kiwi manages to keep the technology up to date and what\nlessons have been learned from migrating their services over the years.\n\n## GitLab Commit London tracks\n\n### Cloud native\n\nLearn how to leverage cloud native technologies like Kubernetes, serverless, and [multicloud](/topics/multicloud/) to build\nand run applications better and faster. In \"The beauty of Gitlab CI/CD,\" with Getty Orawo, a software\ndeveloper at Podii, Getty will discuss her journey through DevOps and how she learned to autodeploy.\n\n### DevOps in action\n\nWe all need practical advice and examples of how others have navigated DevOps transformations so\nthese sessions focus on actions and results rather than high-level ideas. In \"Zero-cost infrastructure\nand automatic deployments for small teams,\" with George Tsiolis, UX engineer, and Niki Kontoe,\nbackend engineer, at Ubitech, the speakers will discuss how they planned their engineering\nefforts and improved their development workflows using source code management, code reviews,\ncontinuous integration, and continuous deployment practices.\n\n### Powered by GitLab\n\nSoftware has eaten the world and we are all better for it. Hear how developers like you are\nbuilding on GitLab to solve large, real-world problems including humanitarian crises and even space exploration.\nIn \"Four years with GitLab at Ocado Technology,\" with Piotr Kurpik and Artur Frysiak,\nDevOps engineers at Ocado, the co-presenters will focus on how they honed in on one and only source\ncode tool and the successes and challenges that have shaped their experiences.\n\n## Agenda\n\n\u003Ca id=\"sched-embed\" href=\"//gitlabcommit2019london.sched.com/\">View the GitLab Commit 2019 - London schedule &amp; directory.\u003C/a>\u003Cscript type=\"text/javascript\" src=\"//gitlabcommit2019london.sched.com/js/embed.js\">\u003C/script>\n\n### Register today\n\nDon't wait to register as tickets are going fast! You can still get £99 off if you register before\nSeptember 23 with code [commit99](https://gitlabcommit2019ldntickets.eventbrite.com?discount=commit99).\n",[278,268,1458],{"slug":1770,"featured":6,"template":683},"gitlab-commit-london-speakers","content:en-us:blog:gitlab-commit-london-speakers.yml","Gitlab Commit London Speakers","en-us/blog/gitlab-commit-london-speakers.yml","en-us/blog/gitlab-commit-london-speakers",{"_path":1776,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1777,"content":1783,"config":1788,"_id":1790,"_type":17,"title":1791,"_source":18,"_file":1792,"_stem":1793,"_extension":21},"/en-us/blog/monitoring-team-update",{"title":1778,"description":1779,"ogTitle":1778,"ogDescription":1779,"noIndex":6,"ogImage":1780,"ogUrl":1781,"ogSiteName":671,"ogType":672,"canonicalUrls":1781,"schema":1782},"How we plan to build more observability tools on GitLab monitoring","Get the scoop on our plan to close the DevOps loop.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665484/Blog/Hero%20Images/monitoring-update-feature-image.jpg","https://about.gitlab.com/blog/monitoring-team-update","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How we plan to build more observability tools on GitLab monitoring\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sara Kassabian\"}],\n        \"datePublished\": \"2019-08-29\",\n      }",{"title":1778,"description":1779,"authors":1784,"heroImage":1780,"date":1766,"body":1785,"category":14,"tags":1786},[1178],"\nThe product team at GitLab is working to close the DevOps loop by accelerating development\non new monitoring products that will offer more observability into application performance and\nthe health of your deployments.\n\n## Where does monitoring fit into the DevOps lifecycle?\n\n[Monitoring is the final Ops stage of the DevOps loop](/direction/monitor/), coming up after the\nproduction environment is configured and the application deployed. No developer should really\nship code and forget it. Monitoring is essential to proactively respond to simple and complex\nproblems, and helps GitLab customers uphold the expectations outlined in their service\nlevel objectives (SLOs) with their users.\n\n## Our vision for monitoring at GitLab\n\nWe outlined big plans for [building out our Ops capabilities](/blog/gitlabs-2018-product-vision/) in our 2018 GitLab product vision:\n“A big milestone for GitLab will be when operations people log into GitLab every day and consider\nit their main interface for getting work done.”\n\nSince then, GitLab has been working diligently to build out our monitoring products to close the\nDevOps loop. The goal is to build instrumentation that allows developers to proactively identify\nSLO degradation and observe the impacts of code changes across multiple deployments in real-time.\nThe \"North Stars\" that guide product development in the monitoring stage include:\n\n*   **Instrument with ease**: GitLab is set up so teams have generic observability into their\napplication performance.\n*   **Resolve like a pro**: GitLab correlates incoming observability data with CI/CD events and\nsource code information so troubleshooting is easy.\n*   **Gain insights seamlessly**: Our use of container-based deployments make it simpler to\ncontinuously collect insights into production SLOs, incidents, and observability sources across\ncomplex projects and multiple applications.\n\nOne of our [core principles at GitLab is to dogfood everything](/direction/monitor/#dogfooding) —\nafter all, if it doesn’t work for us, how can it work for our customers? We begin by\nsetting up our own infrastructure teams at GitLab.com\n[to use the incident management system](https://gitlab.com/groups/gitlab-org/-/epics/1672)\nwe’re developing, and also building out GitLab self-monitoring\nso our administrators can monitor their self-managed GitLab instance the same way their\ndevelopers use GitLab to monitor their applications.\n\nWe also are committed to closing the DevOps loop by prioritizing cloud native first,\nand building tooling designed to provide more insight in to application performance and the\nhealth of deployments for Ops professionals.\n\n[Kenny Johnston](/company/team/#kencjohnston), director of product (Ops) at GitLab, gave me an\noverview of some of the new products the monitoring team is working on to help make this\nvision a reality. Watch the full video of our conversation below and check out\nthe [monitoring product roadmap](https://gitlab.com/groups/gitlab-org/-/roadmap?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=devops%3A%3Amonitor)\nfor an in-depth look at our goals and timeline.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/VFju_3R0hPg\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## Building an observability suite to close out the DevOps loop\n\nThe top priority for the monitoring team is to close the DevOps feedback loop for GitLab customers.\nThis means that if SLOs are degraded in any way, an alert is triggered and an incident is created\nin GitLab allowing for an immediate response.\n\nOur priority product categories at this stage are metrics, cluster monitoring, and incident management,\nsays Kenny.\n\n“First I want to make sure that we can provide our customers with the instrumentation so that they\ncan define an SLO, and when their application exceeds or fails to achieve that SLO, that they can\nrespond in an instant,” says Kenny. “Once we have them doing that, we'll get a lot of good\nfeedback, and immediate feedback from users about what tools they need for diagnostic purposes.”\n\n## Measure your performance with enhanced metrics\n\nWe already have a [successful integration](https://docs.gitlab.com/ee/user/project/integrations/prometheus.html)\nwith open source metrics tool, Prometheus, which we use to collect and display performance metrics\nfor applications deployed on Kubernetes. The integration is sophisticated enough that developers\ndo not have to leave GitLab to collect important information on the impact of a merge request or\nto monitor production systems. Our product category for metrics is “viable,”  meaning customers\nare using the instrumentation we’ve developed to solve real problems, bringing us a step closer to\nclosing out the DevOps loop.\n\nDiagnostic tooling in product categories such as logging, tracing, and error tracking for monitoring\napplication performance (APM) is currently at the MVC stage, though the team has made plans to\n[accelerate development on logging](https://youtu.be/nB5KDY4nsFg) in future GitLab deployments.\n\nKenny notes that our observability suite is one of the primary ways GitLab provides value for\noperators that are thinking of making the move to cloud native.\n\n“GitLab out-of-the-box keeps up with new cloud native technologies because we're constantly\nadopting the newest versions, and our whole convention of configuration means we don't\nleave it to you to figure it out, we've figured it out for you as a default,” explains Kenny.\n\n## Simplify Kubernetes management using GitLab\n\nThere is quite a bit of overlap between product category metrics and cluster monitoring at this\nstage, as Prometheus is used to collect metrics on applications deployed using Kubernetes.\nBy offering out-of-the-box cluster monitoring on Kubernetes, we make it possible for operators\nto monitor the health of their deployed environments all in one place.\n\nOne of the [high-value cluster monitoring features](https://docs.gitlab.com/ee/user/project/clusters/#monitoring-your-kubernetes-cluster)\nwe’ve set up on GitLab is memory usage and capacity metrics (CPU) administration,\nso users can be automatically alerted if either of those numbers are out of bounds on their deployed environments.\n\n“We'd like to start adding capabilities for\n[cluster cost optimization](https://gitlab.com/gitlab-org/gitlab-ee/issues/11879), so\ninforming users not just when they're hitting capacity but when they're significantly under\ncapacity and should probably size down,” says Kenny. “That helps users who've configured a\nKubernetes cluster to not end up wasting it because it's being underutilized and not end up wasting money.”\n\nCluster monitoring was brought to “viable” stages in earlier GitLab releases as we transition to\nKubernetes, but the [product team is building out alerting ](https://gitlab.com/gitlab-org/gitlab-ee/issues/5456)\nand other cluster monitoring features in upcoming releases.\n\n## Dogfooding our new incident management system on GitLab\n\nCreating an incident management system is key to a robust observability suite on monitoring:\n“The features we've prioritized are oriented towards getting the right person the right information\nto enable them to restore the services they are responsible for as quickly as possible,” according to\nthe [category vision for an incident management system](/direction/service_management/incident_management/).\n\nBecause we recognize the urgency of building a functional incident management system,\n[GitLab is leveraging issues](/direction/service_management/incident_management/index.html#high-level-design)\nas the base for creating a viable platform. The goal is to stress the capacity of our existing\ntooling by focusing on integrations with communications tools such as Slack, Zoom, etc., so we can\naccelerate time-to-market and iterate as we go, while also focusing on building out new functionality.\n\nThe infrastructure team on GitLab.com is [dogfooding the incident management system ](https://gitlab.com/groups/gitlab-org/-/epics/1672)\nso we can put the tooling through its paces, making improvements as we go.\n\n## Outside the loop: Getting GitLab administrators to monitor GitLab using GitLab\n\nKenny says the product team has a strategy for creating more exposure to the monitoring capabilities\nGitLab has in development: putting our monitoring capabilities front and center\nfor administrators of the GitLab self-managed instance.\n\n“Today you can create a project for your application that's an e-commerce app, and get the\ninstrumentation to know whether the Kubernetes cluster is experiencing pain, whether SLOs that\nyou custom define have alerts and respond to that with incidents,” says Kenny. “We'd like you to have\nthat exact same experience, or expose you to that same experience with your GitLab self-managed\ninstance, so that as an administrator you're using the same tools to monitor and respond to\nthe GitLab instance as your developers would use to monitor and respond to their applications.”\n\nBy essentially setting up administators to dogfood the monitoring features we are providing to\ndevelopers for application management, we can ensure that they're battle-tested on a larger application.\n\n## The core challenge of the observability suite\n\nWhile the product team at GitLab has a vision and roadmap for building a comprehensive suite of\nobservability instrumentation, there isn’t a clear consensus among monitoring experts as to what\nis required for a robust observability suite in this new, cloud native world.\n\n“There's varied opinion in the new world that's Kubernetes-based about what an observability\nsystem looks like,” says Kenny. “There's a legacy view that seems to be evolving. So, we need to keep up\nwith that and of the industry's evolution of what we consider required. We as a company just\nneed to stay focused on what our users are asking for, and that's why I think\ncompleting that DevOps loop is important first, because then we'll start getting immediate user feedback.”\n\nKeep an eye out for these new monitoring updates in our 12.2 and 12.3 releases.\n\nCover photo by Glen . on [Unsplash](https://unsplash.com/search/photos/binoculars?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText).\n{: .note}\n",[1458,1787],"performance",{"slug":1789,"featured":6,"template":683},"monitoring-team-update","content:en-us:blog:monitoring-team-update.yml","Monitoring Team Update","en-us/blog/monitoring-team-update.yml","en-us/blog/monitoring-team-update",{"_path":1795,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1796,"content":1802,"config":1808,"_id":1810,"_type":17,"title":1811,"_source":18,"_file":1812,"_stem":1813,"_extension":21},"/en-us/blog/avoiding-the-vendor-lock-with-delta-at-commit",{"title":1797,"description":1798,"ogTitle":1797,"ogDescription":1798,"noIndex":6,"ogImage":1799,"ogUrl":1800,"ogSiteName":671,"ogType":672,"canonicalUrls":1800,"schema":1801},"GitLab Commit: Hear how Delta Air Lines became truly cloud native","Join us in Brooklyn on September 17 to hear how Delta Air Lines achieved workflow portability.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680793/Blog/Hero%20Images/portable.jpg","https://about.gitlab.com/blog/avoiding-the-vendor-lock-with-delta-at-commit","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Commit: Hear how Delta Air Lines became truly cloud native\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Priyanka Sharma\"}],\n        \"datePublished\": \"2019-08-27\",\n      }",{"title":1797,"description":1798,"authors":1803,"heroImage":1799,"date":1805,"body":1806,"category":14,"tags":1807},[1804],"Priyanka Sharma","2019-08-27","\n\nHave you ever been tasked with updating something on the move? Imagine changing the wheels of a\nrace car... during a race! Well that’s exactly what Delta sought to do as the organization examined\nits tooling technology.\n\n> “Anyone at a large and historic organization knows how difficult it is to adopt cloud\ncomputing and Kubernetes-driven development. We've been there.” – Jasmine James, IT Manager - DevOps\nCenter of Excellence, Delta Air Lines\n\nAs large companies know, building in silos becomes all too easy as needs grow. Too often, enterprises\nend up with unwieldy infrastructures as different teams often have workloads in different clouds.\nSometimes these large companies may want to choose different clouds for different workloads, but\nthis seemingly reasonable goal becomes difficult when clouds tend to lock their users in via tools,\npartnerships, and timing. And innovators know that nothing stifles creativity – and business –\nlike inflexibility. Competition, collaboration, and portability are as essential to [cloud native\ntechnologies](/topics/cloud-native/) as they are to sports, art, and academics.\n\nEnter Delta, a huge enterprise that has found a solution which enables them to be cloud agnostic\nand cloud native.\n\n“In my opinion, your technology can empower further innovation and business objectives when you order\nyour operations – in our case, operationalizing Kubernetes on bare metal with the right tooling\nbefore jumping on the cloud bandwagon. That's what my team at Delta is excited about, and I hope\nour story can save some other folks a few hours of struggle,\" Jasmine says.\n\nWant to learn more? Join us at GitLab Commit Brooklyn on September 17 to hear the full story.\n[Register today](/events/commit/#)!\n",[278],{"slug":1809,"featured":6,"template":683},"avoiding-the-vendor-lock-with-delta-at-commit","content:en-us:blog:avoiding-the-vendor-lock-with-delta-at-commit.yml","Avoiding The Vendor Lock With Delta At Commit","en-us/blog/avoiding-the-vendor-lock-with-delta-at-commit.yml","en-us/blog/avoiding-the-vendor-lock-with-delta-at-commit",{"_path":1815,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1816,"content":1821,"config":1826,"_id":1828,"_type":17,"title":1829,"_source":18,"_file":1830,"_stem":1831,"_extension":21},"/en-us/blog/gitlab-commit-speaker-announcement",{"title":1817,"description":1818,"ogTitle":1817,"ogDescription":1818,"noIndex":6,"ogImage":1761,"ogUrl":1819,"ogSiteName":671,"ogType":672,"canonicalUrls":1819,"schema":1820},"See who will be speaking at GitLab Commit!","Announcing the speakers for our inaugural GitLab Commit conference in Brooklyn.","https://about.gitlab.com/blog/gitlab-commit-speaker-announcement","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"See who will be speaking at GitLab Commit!\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Gitlab\"}],\n        \"datePublished\": \"2019-08-07\",\n      }",{"title":1817,"description":1818,"authors":1822,"heroImage":1761,"date":1823,"body":1824,"category":14,"tags":1825},[699],"2019-08-07","\n\nWe're excited to announce the first round of speakers for our inaugural [GitLab Commit](/events/commit) conference in Brooklyn! This group of speakers includes thought leaders and industry experts, members of both the GitLab team and wider community, and people from diverse backgrounds with diverse perspectives. \n\nBrilliant minds from the likes of Delta Air Lines, Goldman Sachs, T-Mobile, DigitalOcean, VMware, and Cloud Native Computing Foundation will join GitLab CEO and co-founder Sid Sijbrandij for an unforgettable day of learning and networking.\n\nAttendees can expect great conversations and insights on how to bring teams together to deliver code quickly and securely, and how to push innovation forward at lightning speeds. We look forward to seeing you there on **September 17th** and experiencing a unique event that is taking over Williamsburg, Brooklyn. \n\n### Venue and Location\n\nGitLab Commit Brooklyn will not only take place at the [Williamsburg Hotel](https://www.thewilliamsburghotel.com/), but will be a Williamsburg neighborhood *takeover*. Every venue in a two block radius will have its own theme, immersing you in the city. From a graffiti wall to a trip to a brewery, your day of learning about the future of software development will be full of creative inspiration.\n\nHear talks, mix and mingle with new and old friends at the Williamsburg hotel, Wythe Hotel, Kinfolk, Schimanski’s and end the night at Brooklyn Bowl. \n\nRegister by August 15, 11:59 pm PT with code: commit99 to save $99 on conference passes!\n{: .alert .alert-info .text-center}\n\n### GitLab Commit Brooklyn speakers\n\n#### Keynote: “How Delta Became Truly Cloud Native: Avoiding the vendor-lock”\n\n– Jasmine James, IT Manager - DevOps Center of Excellence, Delta Air Lines\n\n#### Keynote: “Creating a CI/CD Pipeline with GitLab and Kubernetes in 20 Minutes”\n\n– Eddie Zaneski, Senior Director Security, DigitalOcean\n\n#### Keynote: “Implementing an Open Source Culture at NASA”\n\n– Marshall Cottrell, Lead Engineer, Platform Team, MRI Technologies\n\n#### “Being budget conscious in a continuously automated world”\n\n– Tim Davis, Cloud Advocate, VMware\n\n#### “Running GitLab and GitLab CI in Kubernetes for the Enterprise”\n\n– Kyle Persohn, Senior Engineer, and Sean Corkum, Senior Engineer, Northwestern Mutual\n\n#### “Cloud Native Logging & Stream Processing”\n\n– Eduardo Silva, Principal Engineer, Arm/ Treasure Data\n\n#### “GovLab: Gitlab in the Federal Government”\n\n– Solomon Rubin, Cyber Security & Software Engineer, MITRE\n\n#### “How Containerized GitLab CI Pipelines Can Help You Streamline Your Infrastructure Deployments”\n\n– Nico Meisenzahl, Senior Consultant, panagenda\n\n#### “Automation and Iteration: How a small agency team takes advantage of Gitlab to test and deploy rapidly across environments”\n\n– Cory Zibell, Technology Lead, Digital Surgeons\n\n#### “The after-effects of contributing to open source”\n\n– George Tsiolis, UX Engineer, Ubitech\n\n#### “Dynamically managing group permissions using GitOPS and the Gitlab API”\n\n– Philip Marc Schwartz, Principal Software Engineer, CDP Platform, T-Mobile\n\n#### “Using chaos engineering in Gitlab pipelines for faster hardening”\n\n– Umasankar Mukkara, Co-founder and COO, MayaData\n\n### Also featuring...\n\n#### George Grant\nVP - Technology Fellow, Goldman Sachs\n\n#### Dan Kohn\nExecutive Director, Cloud Native Computing Foundation\n\n#### Christopher Bolton\nSenior Systems Engineer, Delta Air Lines\n\n#### Claire Carroll\ndbt Community Manager, Fishtown Analytics\n\n#### Nicole Schultz\nSenior Engineer, Northwestern Mutual\n\n#### Mike Nick\nSenior Engineer, Northwestern Mutual\n\n#### Karthik Satchitanand\nQuality & Automation Lead, MayaData\n\n#### Sid Sijbrandij\nCo-founder & CEO, GitLab\n\n#### Philippe Lafoucrière\nDistinguished Engineer - Secure, GitLab\n\n#### Emilie Schario\nData Engineer, Analytics, GitLab\n\n#### Marin Jankovski\nEngineering Manager, GitLab\n\n#### Lee Matos\nSupport Engineering Manager, GitLab\n\n#### Jason Plum\nSenior Distribution Engineer, GitLab\n\n## About GitLab Commit\n\nGitLab Commit is a home to learning and collaboration, so we can all experience success through DevOps transformations. We're confident that this lineup of speakers will inspire our audience and empower them to make themselves, their teams and organizations, and the open source and tech communities better.\n\nWe'll be bringing GitLab Commit to Brooklyn on September 17 and London on October 9. To find additional information and register, please visit our [GitLab Commit](/events/commit) site. We look forward to contributing with you soon!\n",[278,268],{"slug":1827,"featured":6,"template":683},"gitlab-commit-speaker-announcement","content:en-us:blog:gitlab-commit-speaker-announcement.yml","Gitlab Commit Speaker Announcement","en-us/blog/gitlab-commit-speaker-announcement.yml","en-us/blog/gitlab-commit-speaker-announcement",{"_path":1833,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1834,"content":1840,"config":1846,"_id":1848,"_type":17,"title":1849,"_source":18,"_file":1850,"_stem":1851,"_extension":21},"/en-us/blog/gitlab-acquisitions",{"title":1835,"description":1836,"ogTitle":1835,"ogDescription":1836,"noIndex":6,"ogImage":1837,"ogUrl":1838,"ogSiteName":671,"ogType":672,"canonicalUrls":1838,"schema":1839},"A guide to GitLab’s soft landing acquisitions","Find the team a new home, release your technology to a wider user base, and continue to build products you love through a soft-landing acquisition.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680671/Blog/Hero%20Images/soft-landing-acquisitions.jpg","https://about.gitlab.com/blog/gitlab-acquisitions","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"A guide to GitLab’s soft landing acquisitions\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Eliran Mesika\"}],\n        \"datePublished\": \"2019-07-30\",\n      }",{"title":1835,"description":1836,"authors":1841,"heroImage":1837,"date":1843,"body":1844,"category":14,"tags":1845},[1842],"Eliran Mesika","2019-07-30","\n\nA few months ago we published our [acquisitions handbook](/handbook/acquisitions/). A first of its kind, it provides a clear view on how we approach and carry out acquisitions at GitLab. We believe this handbook is the basis for effective communication and expectation setting.\n\nOur unique approach to acquisition is suited for companies which have built great technologies but were unable to reach the desired distribution and are nearing the end of their runway. For companies in this state we are offering an opportunity for soft landing in GitLab through acquisition, finding the team a new home, releasing the technology you developed to the greater GitLab user base, and continuing to build awesome products you love.\n\n## Is this relevant for your company?\n\nIf you’re a technology company:\n1. Operating in the expanded [DevOps space](/direction/)\n2. With a team of 10 employees or fewer\n3. At the end of your runway and/or thinking about winding down\n4. Open to a soft-landing acquisition and ready to move through the process quickly\n\n... then your company is potentially a great fit for our soft-landing acquisition process.\n\n## What GitLab has to offer\n\n1. Assets will be purchased for up to $1M total, all cash. GitLab stock will not be offered as part of the deal for the assets sold.\n2. We believe talent follows leadership they trust. In addition to the purchase price, GitLab will offer cash bonuses for founders and engineers to help in the transition, conditional on employee interviews and offer acceptance:\n   - Each founder with more than 10% ownership of the company will receive $250,000 paid as follows: $50,000 on closing and $200,000 as a retention bonus\n   - Each engineer will receive $60,000 paid as follows: $12,000 on closing and $48,000 as a retention bonus\n1. Triple our normal stock option grants for founders, normal stock option grants for non-founders\n\nWe invite you to take a closer look at our acquisitions [handbook page](/handbook/acquisitions/) and reach out to myself, the acquisitions lead,  eliran@gitlab.com, to start a discussion.\n\nIt's important to add that we're open to other types of acquisitions, aside from the soft-landing type. We've felt it's beneficiary to all sides of a soft-landing acquisition to have a streamlined, fast process, which is why we've created ours at GitLab. If you'd like to engage us in an acquisition conversation, again, feel free to reach out to me at eliran@gitlab.com.\n\nYou can also read about [one startup's experience of being acquired by GitLab](/blog/gemnasium-our-gitlab-journey/).\n\nCover image by [Pascal Meier](https://unsplash.com/photos/UYiesSO4FiM) on [Unsplash](https://unsplash.com)\n{: .note}\n",[995,1437,891],{"slug":1847,"featured":6,"template":683},"gitlab-acquisitions","content:en-us:blog:gitlab-acquisitions.yml","Gitlab Acquisitions","en-us/blog/gitlab-acquisitions.yml","en-us/blog/gitlab-acquisitions",{"_path":1853,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1854,"content":1859,"config":1864,"_id":1866,"_type":17,"title":1867,"_source":18,"_file":1868,"_stem":1869,"_extension":21},"/en-us/blog/gitlab-commit-cfp-closing-soon",{"title":1855,"description":1856,"ogTitle":1855,"ogDescription":1856,"noIndex":6,"ogImage":1761,"ogUrl":1857,"ogSiteName":671,"ogType":672,"canonicalUrls":1857,"schema":1858},"Apply to speak at GitLab Commit!","Share your story with the wider GitLab community.","https://about.gitlab.com/blog/gitlab-commit-cfp-closing-soon","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Apply to speak at GitLab Commit!\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Priyanka Sharma\"}],\n        \"datePublished\": \"2019-07-15\",\n      }",{"title":1855,"description":1856,"authors":1860,"heroImage":1761,"date":1861,"body":1862,"category":14,"tags":1863},[1804],"2019-07-15","\nHello there! The inaugural [GitLab Commit conferences](/events/commit) are coming this fall, and I'm thrilled to invite you to attend **and** speak. After taking over Brooklyn and London, GitLab will be heading to San Francisco in January and the [Call for Papers](https://docs.google.com/forms/d/e/1FAIpQLSdbDLOt7jYDlvZqgs2-IlOoLexszEZ0zGghA3HB-VEq_vVICA/formResponse) is now open. We believe that everyone can contribute, and so we want to hear from you, so apply now to share your insights, innovations, and inspirations. But don't wait too long; the Call for Papers closes on October 21 at 11:59 PM Pacific.\n\nOur community is essential to GitLab, and your unique points of view are what will power great GitLab Commit events. If you need help with your submissions, feel free to reach out to me directly on Twitter – [@pritianka](https://twitter.com/pritianka) – or send an email to the Commit team at commit@gitlab.com. We're delighted to support and elevate your voices.\n\nBelow is more information about the event. Check out what we're cooking up, and I look forward to seeing all of your talk proposals!\n\n## What is Commit?\n\nGitLab Commit brings together the GitLab community to connect, learn, and inspire. You’ll learn about exciting new technologies and hear how creators like you are innovating the future of software development.\n\nGitLab Commit is coming to San Francisco on Jan. 14, 2020!\n\nWe invite you to speak at [GitLab Commit](/events/commit) and share your software journey. We’re looking for stories that showcase the power of DevOps in action. Share the technologies and strategies you’ve employed, your challenges and successes, or a behind-the-scenes look at how you're building something incredible.\n\n**Results** is a [GitLab company value](https://handbook.gitlab.com/handbook/values/#results) – and the theme of this conference – so proposals that share clear results (such as improved cycle times by 30% or reduced MTTR by 45%) will be prioritized.\n\n## Session types\n\nWe're accepting proposals for 30-minute lectures or panels, 20-minute live coding demos, 10-minute lightning talks, and ideas for 'birds of a feather' discussions.\n\n## Tracks\n\n#### Cloud native\nLearn how to leverage cloud native technologies like Kubernetes, severless, and [multicloud](/topics/multicloud/) to build and run applications better and faster.\n\n#### DevOps in action\nExpect to walk away with practical advice and examples of how others navigated their DevOps transformations. These sessions focus on actions and results rather than high-level ideas.\n\n#### Live coding\nThese adrenaline-pumping sessions will feature doers on stage, live coding, debugging, and hacking. Join along on your laptop or just enjoy the show.\n\n#### Powered by GitLab\nSoftware has eaten the world, and we are all better for it. Hear how developers like you are building on GitLab to solve large-scale problems across the world, from humanitarian crises to space exploration.\n\n## Looking for inspiration?\n\nHere are some ideas to help you get started:\n\n* The single application for cloud native: How you utilize multiple (not necessarily all) GitLab product stages from Manage to Plan, Create, Verify, Package, Secure, Release, Configure, Monitor, and Protect your software DevSecOps lifecycle\n* Planning and managing DevOps: Tips, tricks, and lessons learned about how to organize, plan, and deliver across groups and projects. Share how you estimate, plan sprints, create boards, and keep your project moving forward.\n* Social coding: DevOps is a team effort – we learn from each other. In this track learn how to master Git, code reviews, and innersourcing to make it easier for you to share and ship faster.\n* Automated, secure, and reliable applications: From CI and CD to security, automation is the foundation of DevOps transformation. In this track, we are exploring best practices and insights into what it takes to rapidly iterate and deliver at the speed of business.\n* Cloud native and Kubernetes: GitLab + Kubernetes = Awesome\n\n## Deadline\n\nThe Call For Papers for GitLab Commit San Francisco closes October 21! [Get more details and to submit your talks here](https://forms.gle/cJGtGythtaoi4ucB8).\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/hi2D0Se_VnA\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n",[278,268],{"slug":1865,"featured":6,"template":683},"gitlab-commit-cfp-closing-soon","content:en-us:blog:gitlab-commit-cfp-closing-soon.yml","Gitlab Commit Cfp Closing Soon","en-us/blog/gitlab-commit-cfp-closing-soon.yml","en-us/blog/gitlab-commit-cfp-closing-soon",{"_path":1871,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1872,"content":1878,"config":1884,"_id":1886,"_type":17,"title":1887,"_source":18,"_file":1888,"_stem":1889,"_extension":21},"/en-us/blog/without-a-shadow-of-a-doubt",{"title":1873,"description":1874,"ogTitle":1873,"ogDescription":1874,"noIndex":6,"ogImage":1875,"ogUrl":1876,"ogSiteName":671,"ogType":672,"canonicalUrls":1876,"schema":1877},"Without a shadow of a doubt: Inside GitLab's CEO shadow program","Technical marketing manager Tye Davis did everything from joining investor meetings to battling with the flight simulator at GitLab Mission Control.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680653/Blog/Hero%20Images/sfbaybridge.jpg","https://about.gitlab.com/blog/without-a-shadow-of-a-doubt","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Without a shadow of a doubt: Inside GitLab's CEO shadow program\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Tye Davis\"}],\n        \"datePublished\": \"2019-07-11\",\n      }",{"title":1873,"description":1874,"authors":1879,"heroImage":1875,"date":1881,"body":1882,"category":14,"tags":1883},[1880],"Tye Davis","2019-07-11","\n\nWalking up to the iconic Millennium tower on Monday, [I](/company/team/#TyeD19) was a bit nervous for my first day of the [GitLab CEO shadow program](/handbook/ceo/shadow/). Sometimes, our impression of the CEO is someone who is intimidating and strictly business; they only care about things work related. That persona often results from not having access to the CEO, and the fear that one mistake in their presence may cost your job. The GitLab CEO shadow program proved to be a pleasant departure from this mindset.\n\nEntering GitLab “Mission Control,” I was met with a large apartment turned into a hybrid boardroom with a touch of living space. This is a unique working environment because GitLab is an [all-remote](/company/culture/all-remote/) company that allows GitLab team members to work from their choice of location (home, coffee shop, [van](/blog/how-remote-work-at-gitlab-enables-location-independence/), shared workspaces, surfboard, etc.). So, although you are physically at \"Mission Control,\" most of the CEO shadow program is done via video conferencing. There is no need to go from physical meeting room to meeting room, you simply go from conference call to conference call (woo efficiency!). Six monitors add to the office-like feel of the living room, displaying (amazing) sales data, locations of team members in over 50+ countries, and the DevOps toolchain landscape that GitLab replaces. The boardroom also offers access to gaming systems, a [flight simulator](https://en.wikipedia.org/wiki/X-Plane_(simulator)) and readily available drinks and snacks. I was able to calm my excitement and I settle into the room with the fellow CEO shadow, [Mayank](/company/team/#mayanktahil).\n\n![Mission Control center](https://about.gitlab.com/images/blogimages/ceoshadow_graphs.jpg){: .shadow.medium.center}\nInside GitLab's \"Mission Control.\"\n{: .note.text-center}\n\n### Hitting the ground running\n\nMy first face-to-face meeting with CEO [Sid Sijbrandij](/company/team/#sytses) was on our first CEO-specific call of the day, a public live stream on \"Sid's three biggest remote work challenges\" with [Leo Widrich](https://twitter.com/leowid), co-founder of Buffer. This was the first ice breaker into the CEO shadow program and helped me understand just how inclusive the shadow program is. Sid really made us feel like we belonged on the call by incorporating us into the discussion. His inclusivity lowered my stress a few notches, and I began to understand what was to come in the next few weeks: [transparency](https://handbook.gitlab.com/handbook/values/#transparency).\n\nThe second meeting took the inclusivity of the program a step further, as we joined a group call with the executive team from across the GitLab organization (aka the [E-group](/company/team/structure/#e-group)). You might expect some hesitation in allowing someone who is not an executive to join a meeting where top-level matters are discussed, but the CEO shadow program was made exactly for these types of experiences. The program gives participants full visibility into every working part of building an enterprise company. There was no resistance from the E-group team and upon joining the meeting, I was met with an overwhelming ‘welcome’ to our working session. This alleviated most of my nervousness and truly showcased GitLab’s [collaboration value](https://handbook.gitlab.com/handbook/values/#collaboration) by displaying ‘no ego’ and ‘kindness’ from the executive team.\n\n### The feeling of welcomeness was constant\n\n There were very few circumstances where Mayank and I were not included in meetings due to the sensitivity of the subject. The most eye-opening experience for me was meeting with potential investors in GitLab that represent some of the largest and best-known investment firms in the world. These organizations discussed topics around GitLab’s vision and technology and the firms said they see the incredible upside of GitLab. If I was only able to attend one meeting during the whole program, I would choose this one. My confidence in the direction this company is taking has increased after seeing firsthand how much interest there is from investors in GitLab’s growth. Observing the amount of planning leading up to these meetings between Sid and [Paul, our CFO](/company/team/#pmachle) was a great learning experience. Investors are excited about the future of GitLab as a result of all of the hard work of every GitLab team member. My only disappointment is that the program is only two weeks long and that I won’t get to continue to be part of these developing relationships.\n\n![Shadowing the CEO](https://about.gitlab.com/images/blogimages/tyeshadowingceo.jpg){: .shadow.small.center}\nDoing my best impression of shadowing the CEO's activity in his everyday engagements\n{: .note.text-center}\n\n### Takeaways\n\nThe shadow program was an incredibly enlightening experience. Joining this program gave me an accurate and deeply intuitive understanding of the life of a CEO. Sid has mastered the high velocity of responsibility and full situational awareness that is needed to effectively lead our company as CEO. He also acknowledges that he always has room for improvement – so much so that he has a section of flaws that are listed on the GitLab [CEO handbook page](/handbook/ceo/#flaws). One big takeaway from the shadow program is listed on the CEO page. This is something I believe is the biggest factor to collaborate effectively is what Sid notes about his approach, “Not a flaw but something to know about me, I have [strong opinions weakly held](https://blog.codinghorror.com/strong-opinions-weakly-held/). Or, as someone said, I come in hot but am open to new evidence.” This is applicable across the company (and personally) as we all [iteratively](https://handbook.gitlab.com/handbook/values/#iteration) build a tool that best fits our customer needs, and we must be receptive of adjusting accordingly if new evidence corrects our product vision.\n\nBusiness aside, Sid has some pretty funny GitLab stories. If you ever get the chance to ask him about Burning Man, I promise it’ll be a good laugh. My time in the CEO shadow program was unique, educational, and inspirational. I am thankful for this opportunity and hope that one day I’ll reciprocate in a future exec role. Extra shout out to [Cheri](/company/team/#cheriholmes) who coordinates diligently so that all of us CEO shadows are set up for success. Looking back, the most stressful part of the CEO shadow program was the anxiety the X-Plane flight simulator brought when trying to land an airplane (the landing didn't go well).\n\nPhoto by [Landry Gapangwa](https://unsplash.com/@gapangwa91?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/@gapangwa91?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)\n{: .note}\n",[890,1437,891],{"slug":1885,"featured":6,"template":683},"without-a-shadow-of-a-doubt","content:en-us:blog:without-a-shadow-of-a-doubt.yml","Without A Shadow Of A Doubt","en-us/blog/without-a-shadow-of-a-doubt.yml","en-us/blog/without-a-shadow-of-a-doubt",{"_path":1891,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1892,"content":1898,"config":1903,"_id":1905,"_type":17,"title":1906,"_source":18,"_file":1907,"_stem":1908,"_extension":21},"/en-us/blog/beautifying-our-ui",{"title":1893,"description":1894,"ogTitle":1893,"ogDescription":1894,"noIndex":6,"ogImage":1895,"ogUrl":1896,"ogSiteName":671,"ogType":672,"canonicalUrls":1896,"schema":1897},"What we're doing to beautify our UI","We’re actively working to make our UI more aesthetically pleasing. Learn how we started with a UX spike and where we’re going next.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680648/Blog/Hero%20Images/UXpost.jpg","https://about.gitlab.com/blog/beautifying-our-ui","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"What we're doing to beautify our UI\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Christie Lenneville\"}],\n        \"datePublished\": \"2019-07-02\",\n      }",{"title":1893,"description":1894,"authors":1899,"heroImage":1895,"date":1900,"body":1901,"category":14,"tags":1902},[1727],"2019-07-02","\n\nDesigners like to create beautiful UIs. That’s no surprise.\n\nBut visual design can be really difficult to maintain in an open source product like GitLab, where we have thousands of contributors and a strikingly fast feature velocity.\n\n## Why it’s hard\n\nWe deliberately keep the contribution barrier for GitLab as low as possible, which means small UI bugs tend to slip into the product. We’ve also had a historical tendency to focus our efforts more on value-added delivery than visual refinement.\n\nVelocity and feature delivery are really important, so this mindset isn’t a bad thing. But, aesthetics are important, too. They have a real and meaningful impact on usability and credibility, both of which are key concerns for GitLab’s UX team.\n\n## What we’re doing about it\n\nWe’re working hard to make GitLab the most usable DevOps tool on the market. Part of that effort is making our UI as visually pleasing as we can without sacrificing speed. At a high level our plan is to:\n\n### 1. Focus on tactical fixes that can happen right away\n\nThis blog post includes some examples of what we’ve already accomplished and shows you where to find what we’re doing next.\n\n### 2. Update our visual design strategy\n\nVisual design trends evolve at a pretty rapid clip, and we’re due for an update. That’s why we’re so pleased to have [Jeremy Elder](/company/team/#jeremyelder) join our team as a senior product designer with a dedicated focus on visual design. Along with being an [excellent visual designer](https://dribbble.com/jeremyelder), Jeremy brings a deep background in illustration and design systems. He’s already jumped in to help refine a number of UI issues (after only one month of being on the team). We can’t wait to see where he takes us!\n\n### 3. Build out our design system\n\nToday, [Pajamas](https://design.gitlab.com/) is more of an idea than a reality, but not for much longer. We’re aggressively designing, documenting, and building out reusable components that will bring refinement and consistency to our UI and enable our product designers and frontend engineers to move much faster. That only means good things for our future velocity!\n\n## More about tactical fixes\n\nIn June 2019, a small team of GitLab product designers, [Annabel Gray](/company/team/#annabeldunstone), [Marcel van Remmerden](/company/team/#mvremmerden), and [Jarek Ostrowski](/company/team/#jaaaaarek), went heads down for almost three weeks on a UX spike. During this period, they rapidly closed 43 issues in our [Beautifying our UI](https://gitlab.com/groups/gitlab-org/-/epics/989) epic (take a look to see what we’re still planning to do).\n\nThey addressed a lot of issues during the UX spike, but I’d like to highlight a few that are especially exciting:\n\n### New threaded discussion design\n\nOur previous design for threaded discussions included a lot of boxes and borders, making it difficult to quickly scan the page to find related content. Marcel removed some of the visual cruft and used subtle background colors to help users distinguish between components more easily.\n\nWhile we have other long-term changes we’d like to make to discussions, this was a great start.\n\n![Before](https://about.gitlab.com/images/blogimages/beautifying-our-ui/discussion-before.jpg){: .shadow.center.medium}\nBefore\n{: .note.text-center}\n\n![After](https://about.gitlab.com/images/blogimages/beautifying-our-ui/discussion-after.jpg){: .shadow.center.medium}\nAfter\n{: .note.text-center}\n\nWe're happy to see that members of the wider GitLab community noticed the effort on this change and responded positively.\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Thanks \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> for quick/easy upgrade to GitLab 12.0, glad to see discussions UI design cleaned up \u003Ca href=\"https://t.co/Va28ssb20Y\">https://t.co/Va28ssb20Y\u003C/a>\u003C/p>&mdash; David Puplava (@DavidPuplava) \u003Ca href=\"https://twitter.com/DavidPuplava/status/1143010489460514821?ref_src=twsrc%5Etfw\">June 24, 2019\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### Prioritized merge request “changes” in the content hierarchy\n\nIn a merge request, **Changes** is one of the most-clicked tabs. Unfortunately, at certain breakpoints, the tab was hidden, requiring users to scroll to see it (or sometimes they were even forced to resize their window).\n\nAnnabel fixed the tab component throughout the product, accounting for all breakpoints, whether or not one or both sidebars are open, and whether or not the tab bar includes buttons. This ensures that the **resolved discussions** component wraps to the next line on smaller screen sizes, leaving more room for **Changes** to always display correctly.\n\n![Before](https://about.gitlab.com/images/blogimages/beautifying-our-ui/breakpoints-before.jpg){: .shadow.center.medium}\nBefore\n{: .note.text-center}\n\n![After](https://about.gitlab.com/images/blogimages/beautifying-our-ui/breakpoints-after.jpg){: .shadow.center.medium}\nAfter\n{: .note.text-center}\n\n### Align merge request icons\n\nAs a final example, Jarek focused on correctly aligning the icons on the merge request page. It’s a subtle change that refines the visual design and makes the page easier to scan (scheduled for release in 12.1).\n\n![Before](https://about.gitlab.com/images/blogimages/beautifying-our-ui/mricons-before.jpg){: .shadow.center.medium}\nBefore\n{: .note.text-center}\n\n![After](https://about.gitlab.com/images/blogimages/beautifying-our-ui/mricons-after.jpg){: .shadow.center.medium}\nAfter\n{: .note.text-center}\n\n### We’re excited to do more\n\nThis recent spike was a great start, but we’re all excited to make more improvements to GitLab's UI. We’re currently exploring how we could [make the UI for our discussions easier to understand](https://gitlab.com/gitlab-org/gitlab-design/issues/437) and the best ways to [display threads](https://gitlab.com/gitlab-org/gitlab-ce/issues/53937). We’re also in the process of creating [new default avatars](https://gitlab.com/gitlab-org/gitlab-ce/issues/62185).\n\nIf any of these topics interest you or if you have some feedback on our ideas, please chime in and let us know what you think of the UI as it evolves, we would love to hear from you!\n\nPhoto by [Martin Reisch](https://unsplash.com/@safesolvent?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/@safesolvent?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText).\n",[1039,1038,1037],{"slug":1904,"featured":6,"template":683},"beautifying-our-ui","content:en-us:blog:beautifying-our-ui.yml","Beautifying Our Ui","en-us/blog/beautifying-our-ui.yml","en-us/blog/beautifying-our-ui",{"_path":1910,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1911,"content":1916,"config":1922,"_id":1924,"_type":17,"title":1925,"_source":18,"_file":1926,"_stem":1927,"_extension":21},"/en-us/blog/removing-mysql-support",{"title":1912,"description":1913,"ogTitle":1912,"ogDescription":1913,"noIndex":6,"ogImage":967,"ogUrl":1914,"ogSiteName":671,"ogType":672,"canonicalUrls":1914,"schema":1915},"Why we're ending support for MySQL in 12.1","GitLab will be ending support for MySQL starting with our 12.1 release – here's why.","https://about.gitlab.com/blog/removing-mysql-support","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Why we're ending support for MySQL in 12.1\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Kenny Johnston\"}],\n        \"datePublished\": \"2019-06-27\",\n      }",{"title":1912,"description":1913,"authors":1917,"heroImage":967,"date":1919,"body":1920,"category":14,"tags":1921},[1918],"Kenny Johnston","2019-06-27","\nIn July of 2017 [GitLab documented that we would be deprecating support for MySQL](https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests/1756).\nWell, the 12.1 release marks the conclusion of our\ndeprecation period and it will [no longer support MySQL](https://gitlab.com/gitlab-org/gitlab-ce/issues/52442).\nIt wasn't an easy decision, but we wanted to share with you why we did it.\n\n## It wasn't great for our use case\n\nThere are lots of great use cases for MySQL, our specific needs just didn't seem to be a good fit. [Our use of MySQL\nhad a number of limitations](https://gitlab.com/gitlab-org/gitlab-ce/issues/51173#issues). In most cases, it wasn't\nas simple as adding support to MySQL, but that by bending MySQL we typically broke PostgreSQL. To name a few limitations:\n\n* We can't [support nested groups with MySQL in a performant way](https://gitlab.com/gitlab-org/gitlab-ce/issues/30472#note_27747600)\n* We have to use hacks to increase limits on columns and this can lead to [MySQL refusing to store data](https://gitlab.com/gitlab-org/gitlab-ce/issues/49583)\n* MySQL [can't add](https://gitlab.com/gitlab-org/gitlab-ce/issues/40168) `TEXT` type column without `length` specified\n* MySQL doesn't [support partial indexes](https://dba.stackexchange.com/questions/106589/to-have-postgresql-like-partial-index-in-mysql-5-5)\n* These limitations have already created a number of places where MySQL was already not supported (including with [Geo](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/11914/diffs))\n\n## It made us slower\n\nIn order to work around some of the pain points above, we ended of creating a lot of [MySQL](https://gitlab.com/gitlab-org/gitlab-ee/blob/7ef7c604729c2627914bcc0ece3355786a9a3413/ee/db/migrate/20180831134049_allow_many_prometheus_alerts.rb#L30)-[specific](https://gitlab.com/gitlab-org/gitlab-ee/blob/7ef7c604729c2627914bcc0ece3355786a9a3413/db/migrate/prometheus_metrics_limits_to_mysql.rb)\ncode. In some cases this led to [merge requests that were twice as complex](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16793)\nbecause they had to support a second database backend. Creating and maintaining this code is a drain on our cycle time and velocity, and it puts a\ndampener on our value of iteration.\n\nIt also made us slower because our CI system would run our test suites twice, once on each backend. Removing support\nfor MySQL reduces the time for our CI jobs, and reduces the costs. [These costs ended up being considerable](/company/team/structure/working-groups/gitlab-com-cost/),\nand it was difficult to justify the expense with the small number of users choosing MySQL.\n\n## We couldn't take advantage of either backend\n\nBy providing support for both database backends (PostgreSQL and MySQL) we were unable to truly take advantage\nof either. Where we wanted to utilize specific performance and realiability capabilities unique to a backend,\nwe had to instead choose the lowest common denominator. As an example (there are [more](https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/24987#note_186506464)), we wanted to use PostgreSQL's `LATERAL JOIN` for optimizing dashboards events, but [couldn't because it was not available in MySQL](https://gitlab.com/gitlab-org/gitlab-ce/issues/31806#note_32117488).\n\n## Most of our customers are on PostgreSQL\n\nUsing [Usage Ping](https://docs.gitlab.com/ee/administration/settings/usage_statistics.html#usage-ping) data we got a clear sense that the vast majority of our customers had already moved to PostgreSQL.\nWe've seen a steady migration to PostgreSQL and recently had less than 1200 GitLab instances reporting their usage of\nMySQL. At the time there were 110,000 instances using PostgreSQL. Of those still using MySQL the majority were using 11.0 or earlier.\n\nThis gave us a lot of confidence that GitLab users still on MySQL could migrate to the bundled PostgreSQL backend\nif they choose to upgrade to 12.1 and beyond, or remain on MySQL in older versions of GitLab.\n\nAs a side note – we don't use MySQL ourselves, and not doing so meant we weren't encountering issues BEFORE our users.\n\n## Need help migrating?\n\nIf you are one of those users, please check out our [migration docs](https://docs.gitlab.com/ee/update/index.html) for a guide on upgrading from MySQL to PostgreSQL.\n",[912],{"slug":1923,"featured":6,"template":683},"removing-mysql-support","content:en-us:blog:removing-mysql-support.yml","Removing Mysql Support","en-us/blog/removing-mysql-support.yml","en-us/blog/removing-mysql-support",{"_path":1929,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1930,"content":1936,"config":1942,"_id":1944,"_type":17,"title":1945,"_source":18,"_file":1946,"_stem":1947,"_extension":21},"/en-us/blog/cofounder-relations",{"title":1931,"description":1932,"ogTitle":1931,"ogDescription":1932,"noIndex":6,"ogImage":1933,"ogUrl":1934,"ogSiteName":671,"ogType":672,"canonicalUrls":1934,"schema":1935},"Co-founders: Key conversations build lasting relationships","Our CEO sits down with leadership psychologist Banu Hantal to discuss his relationship with GitLab co-founder Dmitriy Zaporozhets.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680642/Blog/Hero%20Images/cofounders_phone.jpg","https://about.gitlab.com/blog/cofounder-relations","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"The secret to an enduring co-founder relationship? Have those crucial conversations\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sara Kassabian\"}],\n        \"datePublished\": \"2019-06-21\",\n      }",{"title":1937,"description":1932,"authors":1938,"heroImage":1933,"date":1939,"body":1940,"category":14,"tags":1941},"The secret to an enduring co-founder relationship? Have those crucial conversations",[1178],"2019-06-21","\n\nIn the latest installment of our [Pick Your Brain](/blog/tags.html#pick-your-brain) series, leadership psychologist [Banu Hantal](https://www.banuhantal.com/) interviews our CEO [Sid Sijbrandij](/company/team/#sytses) about his relationship with co-founder and engineering fellow [Dmitriy Zaporozhets](/company/team/#dzaporozhets). In their discussion, Sid shares GitLab’s origin story and talks about how transparent communication with Dmitriy helps keep their partnership strong.\n\n## The beginning of GitLab\n\nDmitriy and Sid’s partnership started in the same place as most modern-day relationships: online. Dmitriy started GitLab while he was working elsewhere, and within a year of GitLab’s launch, 300 people had contributed code.\n\nSid saw that GitLab had potential as a service and started GitLab.com independently of Dmitriy. Sid didn’t need Dmitriy’s permission to do this, because [GitLab was (and partially remains) open source](/blog/gitlab-is-open-core-github-is-closed-source/), but reached out to Dmitriy to let him know about the next iteration of the project. Dmitriy was gracious and celebrated the fact that Sid was expanding the impact of GitLab.\n\nFor about a year, Sid invested in building GitLab.com while also working as a consultant until Dmitriy posted a tweet saying, “I want to work on GitLab full time.” That tweet changed GitLab’s story.\n\n“It was quite unusual to post that to the entire world. He was employed and everything,” says Sid. “I emailed Dmitriy and I said ‘Hey, I saw your tweet, how much do you want to earn to start working on GitLab?’”\n\nBy this time, there were a few big companies that were using GitLab.com and they were asking Sid to add new features to the product. Once Dmitriy came on board, it was possible to build those features quicker.\n\n“I went to the local Western Union money office, and when I said I wanted to wire money from the Netherlands to the Ukraine, they were like, ‘Do you know this person or is this someone you met over the internet?’”\n\n“You didn’t even know what Dmitriy looked like?!” exclaims Banu.\n\n“At that point my mental image of Dmitriy was like a pink mob boss because that was his avatar,” says Sid, but that didn’t last for long. They finally met in person in Krakow shortly after making plans to commit their efforts to GitLab full time.\n\n## Communication makes for happy co-founders\n\n\"Do you think having a mostly remote relationship is an advantage or disadvantage?\" asks Banu.\n\n\"I don't think it matters that much,\" says Sid. \"I think you do the same things, and you've got to make sure there's regular communication. To this day we have a call every single week. When there’s something important he gets a heads up so he doesn’t feel misinformed.\"\n\nIf there is an issue that is clearly contentious, Sid says, they put all the information on the table and discuss the problem directly.\n\n“I think surprises are really bad. You want to make sure if there’s something important that you get a heads up, and that there is a regular cadence of communication.”\n\nThough Dmitriy and Sid rarely get the chance to interact in person today, there is very little conflict in their relationship.\n\n## What to do when one co-founder is the CEO\n\n“What you don’t want is the [Peter Principle](https://en.wikipedia.org/wiki/Peter_principle), where the only way for an engineer to advance is to become a manager,” says Sid. “And then, oftentimes, you lose a great engineer and get a bad manager.”\n\nSo, they elected to structure GitLab the company so there are more leadership opportunities for engineers by offering a dual-career track. While Sid is co-founder and CEO of the company, Dmitriy is a co-founder and engineering fellow. A fellowship offers a path to advancement for engineers that does not involve people management.\n\nThough GitLab was first built as an alternative to GitHub, it has since expanded its technical capabilities ten-fold, explains Sid. In fact, it was Dmitriy that first built the [CI solution](/solutions/continuous-integration/) and continuous testing framework which is a core component to our product today.\n\n“I was like, he can do whatever he wants – he’s a co-founder and so far his hunches pay off. At a certain point someone contributed to that and then they joined the company and said, 'Let’s integrate the two products.' First Dmitriy told him he was wrong, and then together they came to me and I told them they were wrong, and we ended up doing it and it was the best thing that ever happened to GitLab.”\n\n“How would you describe your relationship with Dmitriy?” asks Banu.\n\nThere are three dimensions to the partnership between Sid and Dmitriy. They are co-founders, there is a hierarchical relationship with Sid as CEO, and of course, a friendship.\n\n“I think it’s frequently better to fall in love with each other’s work and then build a relationship based on that, rather than fall in love with the person and then try to build a business,” says Sid. “Friendships based on business tend to last longer than businesses based on friendships.”\n\nWatch the full conversation between Sid and Banu here:\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/gpQKtSKMzkI?start=6\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nPhoto by [Pavan Trikutam](https://unsplash.com/@ptrikutam) on [Unsplash](https://unsplash.com/photos/71CjSSB83Wo)\n{: .note}\n",[890,804,848],{"slug":1943,"featured":6,"template":683},"cofounder-relations","content:en-us:blog:cofounder-relations.yml","Cofounder Relations","en-us/blog/cofounder-relations.yml","en-us/blog/cofounder-relations",{"_path":1949,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1950,"content":1956,"config":1963,"_id":1965,"_type":17,"title":1966,"_source":18,"_file":1967,"_stem":1968,"_extension":21},"/en-us/blog/announcing-gitlab-devsecops",{"title":1951,"description":1952,"ogTitle":1951,"ogDescription":1952,"noIndex":6,"ogImage":1953,"ogUrl":1954,"ogSiteName":671,"ogType":672,"canonicalUrls":1954,"schema":1955},"Announcing GitLab for DevSecOps","GitLab brings development, security, and operations into a single application.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671668/Blog/Hero%20Images/integrated.jpg","https://about.gitlab.com/blog/announcing-gitlab-devsecops","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Announcing GitLab for DevSecOps\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Erica Lindberg\"}],\n        \"datePublished\": \"2019-06-20\",\n      }",{"title":1951,"description":1952,"authors":1957,"heroImage":1953,"date":1959,"body":1960,"category":14,"tags":1961},[1958],"Erica Lindberg","2019-06-20","\n\n[DevOps](/topics/devops/) adoption continues to mature, and as organizations get better at breaking down silos in the development and delivery process to ship software faster, security is moving to the forefront. In fact, [Forrester predicted that 2019 would be the year of security](https://www.forrester.com/report/Predictions+2019+DevOps/-/E-RES144579): “Many organizations have succeeded in automating continuous release and deployment for some applications but face increasing risk from lack of governance and fragmented toolchains.”\n\n[DevSecOps](/topics/devsecops/) is the natural next iteration of DevOps and today we are excited to announce that we are bringing developers, operations professionals, and the security team together in the first single application for the entire DevSecOps lifecycle. Building upon the [security features](/pricing/feature-comparison/) we’ve added over the past 12 months (SAST, DAST, dependency scanning, and container scanning), we’ve also released Auto Remediation, Security Dashboards, and will release [Security Approvals](https://gitlab.com/gitlab-org/gitlab-ee/issues/9928) in 12.1, creating an application with security and compliance built in. Additionally, we’ve expanded our operations capabilities: In addition to our Kubernetes-native integrations and multicloud deployment support, we’ve added [Feature Flags](/direction/release/feature_flags/), an [Operations Dashboard](https://docs.gitlab.com/ee/user/operations_dashboard/), and will release [Incident Management](/direction/service_management/incident_management/) in 12.1.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/zRUwU6ZE-QA\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nWith GitLab 12.0, releasing on June 22, we continue to support DevSecOps with the addition of Visual Review Tools, project dependency list, and Merge Trains. As our CEO, [Sid Sijbrandij](/company/team/#sytses), says, “GitLab 12.0 marks a key step in our journey to create an inclusive approach to DevSecOps.” And users are already seeing the benefits:\n\n“We already have a frontend team, an SDK and native app team, an SRE team, and a services team all collaborating on development, security, and operations in GitLab,” said Cillian Dwyer, site reliability engineer, Glympse. “Because we're together, we're able to collaborate and ship faster.”\n\n“As a project, we’re excited to see all of the updates GitLab has made. GitLab makes it easy for us to work on community contributions and CI in general,” said Eduardo Silva, maintainer of [Fluent Bit](https://fluentbit.io/) (a Fluentd sub-project), the cloud native, open source logging solution to unify data collection and consumption.\n\n## DevSecOps in a single application\n\nThe [advantages of a single application](/handbook/product/single-application/) are numerous: A single sign-on eliminates the need to request access to each separate tool, context switching is reduced which improves cycle time, and work is tracked in one place so you don’t have to do detective work to find the information you need. According to Forrester’s [Manage Your Toolchain Before It Manages You report](/resources/whitepaper-forrester-manage-your-toolchain/), over 40% of enterprises anticipate improved quality, security, and developer productivity by using an out-of-the-box solution. For security professionals, this means that balancing velocity with security is possible.\n\nSecurity has traditionally been the “final hurdle” in the development lifecycle, tacked on at the end and often reviewed long after the developer committed their code. When security is separate from the DevOps workflow, it becomes a potential bottleneck to delivery. DevSecOps aims to integrate security best practices in the DevOps workflow to ensure every piece of code is tested upon commit. GitLab takes that a step further by building [security capabilities](/direction/secure/#auto-remediation) into the [CI/CD workflow](/topics/ci-cd/), empowering developers to identify vulnerabilities and remove them early, and by providing the security team with their own dashboard to view items not resolved by the developers.\n\n![GitLab DevSecOps diagram](https://about.gitlab.com/images/secure/security-diagram.svg){: .medium.center}\n\nGitLab integrates and automates security into the CI/CD pipeline.\n{: .note.text-center}\n\nThe approach is to support decision makers with actionable tools that make it simpler to take the right action and learn from it. Instead of security features automatically blocking a pipeline or preventing a new version from being released to production, users can interact with the tool and perform a risk assessment based on the information provided. When triaging vulnerabilities, users can confirm by creating an issue to solve the problem or dismiss them in the case of false positives.\n\n### Secure features in GitLab\n\nWe started our DevSecOps journey by empowering developers to spot potential vulnerabilities while coding by embedding [Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) and [Dynamic Application Security Testing (DAST)](https://docs.gitlab.com/ee/user/application_security/dast/), [Container Scanning](https://docs.gitlab.com/ee/user/application_security/container_scanning/), and [Dependency Scanning](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/) into the CI/CD pipeline.\n\n![GitLab static application security testing feature](https://about.gitlab.com/images/secure/sast.png){: .shadow.medium.center}\n\nDetected vulnerabilities are shown directly in the merge request.\n{: .note.text-center}\n\nSAST scans the application source code and binaries to spot potential vulnerabilities before deployment, and DAST analyzes your running web application for runtime vulnerabilities and runs live attacks against the review app. Information is shown directly in the merge request and results are sorted by the priority of the vulnerability.\n\nLikewise, Dependency Scanning and Container Scanning are built into GitLab CI/CD and available as part of [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/) to provide security by default. Container Scanning runs a security scan to ensure your environment does not have any known vulnerability. Dependency scanning analyzes external dependencies (e.g. Ruby gem libraries), alerting the developer if vulnerable dependencies need updating. Results are shown in both the merge request and pipeline views.\n\n> “Having automated security scans built into GitLab merge requests spanning across the entire DevOps lifecycle go together perfectly with Rancher and K3s. Our joint customers have more confidence that new vulnerabilities are not being introduced into their code before, during and after deployment.” - Shannon Williams, co-founder at Rancher\n\nThe next iteration of our security journey included making GitLab a viable product for the security team by automating what can be automated and ensuring security teams have the view they need to understand the current security status of their applications.\n\n![GitLab Security Dashboard](https://about.gitlab.com/images/secure/security-dashboard.png){: .shadow.medium.center}\nThe group-level Security Dashboard in GitLab gives an overview of vulnerabilities for all projects within the group and sub-groups.\n{: .note.text-center}\n\nThe [Security Dashboard](https://docs.gitlab.com/ee/user/application_security/security_dashboard/) is available at both the group and product level and can be used as a primary tool for security teams. In addition to providing an overview of security status, the Security Dashboard can be used to start a remediation process and provides data visualizations for easy consumption of performance information.\n\nFinally, we are rapidly iterating on Auto Remediation to automate vulnerability fixes. Auto Remediation aims to automate vulnerability solution flow, and automatically create a fix. The fix is then tested, and if it passes all the tests already defined for the application, it is deployed to production. GitLab can then monitor performances of the deployed app, and revert all the changes in case performances are decreasing dramatically, warning the user about the entire process and reducing the need for manual actions. You can [learn more about Auto Remediation and our progress here](https://gitlab.com/groups/gitlab-org/-/epics/759).\n\n> \"By adding automated security processes into code delivery, GitLab is furthering productivity by allowing organizations to focus on getting their applications to market not only quickly but securely. We look forward to continuing to work with GitLab as they build out more capabilities in their application, and help companies using GitLab further their multicloud strategy.\" - Bassam Tabbara, CEO of Upbound\n\nOverall, with security automated throughout the developer workflow and DevSecOps delivered in a single application, we believe companies will continue to advance the way they deliver code, shortening release cycles and focusing on the innovation they will bring to market. For more information on what shipped with 12.0, watch out for the release post on June 22.\n\nCover image by [Katie Burkhart](https://unsplash.com/@katieanalyzes) on [Unsplash](https://unsplash.com/photos/ks_e5Rf-Cn0)\n{: .note}\n",[536,1962],"DevSecOps",{"slug":1964,"featured":6,"template":683},"announcing-gitlab-devsecops","content:en-us:blog:announcing-gitlab-devsecops.yml","Announcing Gitlab Devsecops","en-us/blog/announcing-gitlab-devsecops.yml","en-us/blog/announcing-gitlab-devsecops",{"_path":1970,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1971,"content":1977,"config":1983,"_id":1985,"_type":17,"title":1986,"_source":18,"_file":1987,"_stem":1988,"_extension":21},"/en-us/blog/google-gitlab-serverless-webinar",{"title":1972,"description":1973,"ogTitle":1972,"ogDescription":1973,"noIndex":6,"ogImage":1974,"ogUrl":1975,"ogSiteName":671,"ogType":672,"canonicalUrls":1975,"schema":1976},"Container apps on serverless: Write once, deploy anywhere","Containers, serverless, and microservices, oh my! Cut to the chase and learn how to write apps once and deploy anywhere with emerging technologies.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666851/Blog/Hero%20Images/gitlab-serverless-blog.png","https://about.gitlab.com/blog/google-gitlab-serverless-webinar","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Write once, deploy anywhere: Containerized applications on modern serverless platforms\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Tina Sturgis\"}],\n        \"datePublished\": \"2019-06-13\",\n      }",{"title":1978,"description":1973,"authors":1979,"heroImage":1974,"date":1980,"body":1981,"category":14,"tags":1982},"Write once, deploy anywhere: Containerized applications on modern serverless platforms",[1333],"2019-06-13","\n\nUsing containers has become standard practice in app development today. We all get the value of why you want to build with containers. But as a developer, why should you care about [serverless](/topics/serverless/)? It’s simple, you can eliminate worry about the infrastructure that your app is going to run on and focus on the impact of the app itself. Specifically the business logic of how the app will interact with things like the end users and/or operating systems.\n\nThe concepts of serverless quickly move the conversation towards one around a microservices architecture. As we move away from building applications in a monolith, moving towards serverless and eliminating the need to worry about that infrastructure begin to make a lot more sense.\n\nSo now, how do we take these concepts that we hear and/or read about that increase velocity, flexibility, and scalability, and put them into action for your own application development?\n\nFind out at our webinar, \"Running containerized applications on modern serverless platforms\" on Jun. 25, 2019 with GitLab and Google experts. We'll take a deep dive into how new and emerging technologies like Kubernetes, Knative, Cloud Run, and GitLab Serverless can provide great stability and scalability while lowering costs and increasing the pace of innovation.\n\n[Reserve your spot.](https://webinars.devops.com/running-containerized-applications-on-modern-serverless-platforms)\n{: .alert .alert-gitlab-purple .text-center}\n",[1100,995,232,110,1059],{"slug":1984,"featured":6,"template":683},"google-gitlab-serverless-webinar","content:en-us:blog:google-gitlab-serverless-webinar.yml","Google Gitlab Serverless Webinar","en-us/blog/google-gitlab-serverless-webinar.yml","en-us/blog/google-gitlab-serverless-webinar",{"_path":1990,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":1991,"content":1997,"config":2004,"_id":2006,"_type":17,"title":2007,"_source":18,"_file":2008,"_stem":2009,"_extension":21},"/en-us/blog/sfdx-promo-trailhead-blog",{"title":1992,"description":1993,"ogTitle":1992,"ogDescription":1993,"noIndex":6,"ogImage":1994,"ogUrl":1995,"ogSiteName":671,"ogType":672,"canonicalUrls":1995,"schema":1996},"Salesforce developers can now use GitLab for complete DevOps","Learn what’s possible with GitLab and Salesforce, whether you’re looking to reduce cycle time or increase collaboration across cross-functional teams.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680624/Blog/Hero%20Images/gitlab-salesforce.png","https://about.gitlab.com/blog/sfdx-promo-trailhead-blog","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Salesforce developers can now use GitLab's single application for the DevOps lifecycle\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mayank Tahilramani\"}],\n        \"datePublished\": \"2019-05-29\",\n      }",{"title":1998,"description":1993,"authors":1999,"heroImage":1994,"date":2001,"body":2002,"category":14,"tags":2003},"Salesforce developers can now use GitLab's single application for the DevOps lifecycle",[2000],"Mayank Tahilramani","2019-05-29","\n\nGreat news – we're partnering with Salesforce to offer developers more [agile delivery practices](/solutions/agile-delivery/) and [increased automation](https://docs.gitlab.com/ee/topics/autodevops/) throughout the DevOps lifecycle. Developers can leverage the following capabilities from GitLab for Salesforce DX: [Source Code Management (SCM)](/solutions/source-code-management/), [Continuous Integration (CI) and Continuous Delivery (CD)](/solutions/continuous-integration/), [Project Management](https://about.gitlab.com/solutions/agile-delivery/), and [much more](/pricing/feature-comparison/). Many businesses already run on Salesforce and are just starting to explore the latest and greatest that Salesforce DX has to offer in terms of tooling and functionality to rapidly build apps and enhancements onto their platform. Our partnership with Salesforce will help our customers to reduce cycle times and [deliver business value at the speed of business](/blog/align-business-strategy-and-app-delivery/).\n\n## How GitLab + Salesforce DX work together\n\nSalesforce has been investing in APIs and platform features that allow developers to create and administer Salesforce-connected apps in a more direct and efficient way. With GitLab, developers can now supplement Salesforce development tools through a [templatized CI/CD pipeline](https://gitlab.com/sfdx/sfdx-cicd-template) which leverages [Scratch Orgs](https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_scratch_orgs.htm) and [packaging](https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_dev2gp_plan_pkg_types.htm) for a structured and frictionless development experience. It’s easier than ever to get started with new Salesforce projects using our new [Salesforce project template](https://gitlab.com/sfdx/sfdx-project-template), and adopt a collaborative development workflow across teams.\n\nFor example, Salesforce development projects stored in GitLab SCM enable developers to work in a Git-based workflow similar to [GitLab Flow](https://docs.gitlab.com/ee/topics/gitlab_flow.html), while transparently collaborating through [issue tracking](https://docs.gitlab.com/ee/user/project/issues/) and [merge requests](https://docs.gitlab.com/ee/user/project/merge_requests/). In this case, each developer can seamlessly create an ad hoc Git branch focused on specific development and functionality of code, allowing for small but continuous incremental changes. Each commit within a branch goes through automated testing and deployment into a Scratch Org.\n\nUpon approval, the changes are then packaged and deployed into a Sandbox Org and, ultimately, into production. GitLab CI/CD aims to automate the use of packaging for predictable Salesforce deployments. In this workflow example, each developer is able to leverage short-lived Scratch Orgs for development and testing of code in a much more Agile fashion.\n\n![Tanuki Badge](https://about.gitlab.com/images/blogimages/gitlab-salesforce-tanuki-badge.png){: .small.right.wrap-text}\n\n## Get hands on with a new Trailhead module and promo\n\nLearning by doing is the best way to get started. Check out our new Trailhead Module, \"[Build an automated CI/CD pipeline with GitLab](https://trailhead.salesforce.com/content/learn/projects/automate-cicd-with-gitlab)\" and learn how to automate your Salesforce development to increase productivity. Earn your Salesforce/GitLab Tanuki badge today!\n\n[Get started now.](/free-trial/)\n{: .alert .alert-gitlab-purple .text-center}\n",[995,232,680],{"slug":2005,"featured":6,"template":683},"sfdx-promo-trailhead-blog","content:en-us:blog:sfdx-promo-trailhead-blog.yml","Sfdx Promo Trailhead Blog","en-us/blog/sfdx-promo-trailhead-blog.yml","en-us/blog/sfdx-promo-trailhead-blog",{"_path":2011,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2012,"content":2018,"config":2025,"_id":2027,"_type":17,"title":2028,"_source":18,"_file":2029,"_stem":2030,"_extension":21},"/en-us/blog/gitlab-identified-by-gartner-as-eapt-visionary",{"title":2013,"description":2014,"ogTitle":2013,"ogDescription":2014,"noIndex":6,"ogImage":2015,"ogUrl":2016,"ogSiteName":671,"ogType":672,"canonicalUrls":2016,"schema":2017},"GitLab earns visionary status in Gartner agile planning","We're happy to announce GitLab has been named a 'Visionary' in Gartner's EAPT Magic Quadrant.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680619/Blog/Hero%20Images/construction-blueprint.jpg","https://about.gitlab.com/blog/gitlab-identified-by-gartner-as-eapt-visionary","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab named a 'Visionary' in 2019 Gartner Enterprise Agile Planning Tool Magic Quadrant\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"John Jeremiah\"}],\n        \"datePublished\": \"2019-05-22\",\n      }",{"title":2019,"description":2014,"authors":2020,"heroImage":2015,"date":2022,"body":2023,"category":14,"tags":2024},"GitLab named a 'Visionary' in 2019 Gartner Enterprise Agile Planning Tool Magic Quadrant",[2021],"John Jeremiah","2019-05-22","\n\nGartner recently named [GitLab a ‘Visionary’](/analysts/gartner-eapt21/) in their Magic Quadrant research into Enterprise Agile Planning Tools. We believe that planning and delivery must be closely linked to enable product and project teams to streamline and accelerate delivery. In many organizations, disconnected tools create organizational islands, preventing teams from collaborating, sharing, and learning. Our vision for Concurrent DevOps is to enable teams to:\n\n- Bridge the gaps between PMs, Developers, Ops, and Security.\n- Build and manage their epics and roadmaps.\n- Prioritize work and organize sprints and Kanban boards to track the development and delivery of value to customers.\n\n## Everyone can contribute\n\nOur vision is to make it simple, easy, and fast for people to contribute and deliver value to their users. We believe that a [single application](/handbook/product/single-application/), preconfigured to work by default across the DevOps lifecycle, will enable faster cycle time, delivering innovation and value.\n\n## Easier workflows, increasing collaboration and productivity\n\nEnterprise Agile and Planning are critical activities that often determine the overall success of a project. Teams must work on the right things at the right time, and unless your planning processes are linked to your delivery actions, the potential for a disconnect is remarkably high.\n\nAt Hemmersbach, using GitLab helped them decrease the time from planning to production by 6.5 days. Working in a single environment, they are also achieving 60 builds per day where previously they were performing a single daily build.\n\n>“GitLab is the one tool that connects our whole team. You always see GitLab open and everything is based on GitLab. GitLab is the backbone of our software development.”  – Alexander Schmid, Head of Software Development, Hemmersbach\n\nGitLab solves the disconnect by enabling Enterprise Agile Planning within the same application that is used to manage the development and delivery.  Now, [Product Managers and Project Managers](/solutions/agile-delivery/) can groom their backlog and epics, build their roadmaps, and plan sprints without losing touch with the actual development and delivery flow. Kanban boards provide a visual and interactive way to manage the status and flow of issues through delivery.\n\n![burndown](https://about.gitlab.com/images/home/burndown-chart.png){: .shadow.medium.center}\n\n[Value Stream Management](/solutions/value-stream-management/) offers insight into planning and delivering projects so that teams can find and remove bottlenecks from their value stream.\n\nDownload the report and learn more about why Gartner named GitLab an Enterprise Agile Planning 'Visionary.'\n\n[Download the full report](/analysts/gartner-eapt21/)\n{: .alert .alert-gitlab-purple .text-center}\n\nGartner, Magic Quadrant for Enterprise Agile Planning Tools, 18 April 2019, Keith Mann, Mike West, Thomas Murphy, Nathan Wilson\n{: .note}\n\nGartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings or other designation. Gartner research publications consist of the opinions of Gartner’s research organization and should not be construed as statements of fact. Gartner disclaims all warranties, express or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.\n{: .note}\n\nImage by \u003Ca href=\"https://pixabay.com/users/pisauikan-4552082/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2682641\">pisauikan\u003C/a> from \u003Ca href=\"https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2682641\">Pixabay\u003C/a>\n{: .note}\n",[826,995,890,680],{"slug":2026,"featured":6,"template":683},"gitlab-identified-by-gartner-as-eapt-visionary","content:en-us:blog:gitlab-identified-by-gartner-as-eapt-visionary.yml","Gitlab Identified By Gartner As Eapt Visionary","en-us/blog/gitlab-identified-by-gartner-as-eapt-visionary.yml","en-us/blog/gitlab-identified-by-gartner-as-eapt-visionary",{"_path":2032,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2033,"content":2039,"config":2044,"_id":2046,"_type":17,"title":2047,"_source":18,"_file":2048,"_stem":2049,"_extension":21},"/en-us/blog/gitlab-first-deployed-kubernetes-api-to-multiple-clouds",{"title":2034,"description":2035,"ogTitle":2034,"ogDescription":2035,"noIndex":6,"ogImage":2036,"ogUrl":2037,"ogSiteName":671,"ogType":672,"canonicalUrls":2037,"schema":2038},"GitLab deploys into multiple clouds from kubectl using Crossplane","We're proud to be advancing our commitment to multicloud DevOps.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680612/Blog/Hero%20Images/crossplane.png","https://about.gitlab.com/blog/gitlab-first-deployed-kubernetes-api-to-multiple-clouds","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab deploys into multiple clouds from kubectl using Crossplane\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2019-05-20\",\n      }",{"title":2034,"description":2035,"authors":2040,"heroImage":2036,"date":2041,"body":2042,"category":14,"tags":2043},[699],"2019-05-20","\n\nToday the [Crossplane community](https://crossplane.io) is demonstrating how GitLab is the first real-world application [deployed across multiple clouds via Crossplane](http://blog.crossplane.io/crossplane-composes-fully-managed-services-in-kubernetes-to-deploy-gitlab-into-multiple-clouds/), the open source multicloud control plane. When [Crossplane launched](/blog/opensource-multi-cloud-crossplane/), we were excited to learn about a project that is taking the complexity out of managing services across multiple clouds. We believe this is the last hurdle to [multicloud maturity](https://medium.com/gitlab-magazine/multi-cloud-maturity-model-2de185c01dd7).\n\nAs some of our competitors move closer to supporting one cloud, GitLab is committed to [multicloud DevOps](/topics/multicloud/). Today, our customers already can install and deploy from GitLab to any public cloud. In the future and as the Crossplane project matures, we plan to leverage Crossplane to help our customers take multicloud one step further to deploy GitLab entirely through the Kubernetes API into multiple clouds,  including the use of fully-managed services offered by the respective cloud providers.\n\n## Deploy GitLab with external managed services using kubectl\n\nReal-world applications like GitLab can now be deployed entirely from kubectl into multiple clouds using Crossplane, including their external managed services. Crossplane extends the Kubernetes API by adding resource claims and resource classes to support composability of managed service dependencies in Kubernetes, similar to persistent volume claims and storage classes. Crossplane is easily added to any existing Kubernetes cluster and cleanly layers on top of clusters provisioned by Anthos, EKS, AKS, and OpenShift.\n\nCluster administrators install Crossplane on a Kubernetes cluster, set cloud credentials, and specify which managed services they want to make available for self-service provisioning within the cluster. Policies guide binding to specific managed service offerings configured by the cluster administrator.\n\nApplication owners can consume and compose these managed services on-demand with the Kubernetes patterns they’re familiar with today, without having to know about the infrastructure details or having to manage credentials.\n\nThis provides an excellent separation of concerns and makes applications more portable, while retaining flexibility for cluster administrators to tailor how they want these managed services to be provisioned in their environments.\n\nFor production deployments, GitLab [recommends using external managed services](https://gitlab.com/charts/deploy-image-helm-base/blob/master/doc/installing.md) for Redis, PostgreSQL, and object storage. Crossplane supports declaring these managed services as resource claims in Kubernetes that dynamically bind to the appropriate cloud provider using resource classes configured by the cluster administrator to provide the managed service.\n\n### Deploy GitLab to multiple clouds using Crossplane with the following steps:\n\n#### Cluster Administrator:\n1. Install Crossplane on your Kubernetes cluster\n1. Set cloud provider credentials\n1. Provide managed services with resource classes\n\n#### Application Owner:\n1. Provision managed services with resource claims\n1. Bind resource claims into the exported GitLab Helm chart\n1. Deploy the GitLab application with Crossplane managed services\n\nThat's it! GitLab is now up and running in your cloud of choice, using fully-managed services for Redis, PostgreSQL, and storage buckets!\n\nPlease see the [Crossplane blog post](http://blog.crossplane.io/crossplane-composes-fully-managed-services-in-kubernetes-to-deploy-gitlab-into-multiple-clouds/) to learn more about deploying GitLab to multiple clouds with external managed service dependencies, including the full instructions so you can follow along in your own environment.\n\n## Multicloud success in the enterprise\n\nWith [81 percent of enterprises](https://www.rightscale.com/blog/cloud-industry-insights/cloud-computing-trends-2018-state-cloud-survey) already adopting a multicloud strategy, technologies like Crossplane are key to enterprise adoption success. While the ability to choose any cloud to run on is important, the practicalities of developing and deploying applications in multiple clouds is complex, driving up development costs. Crossplane introduces a set of workload resource abstractions on top of existing managed services and cloud offerings to enable workload portability across cloud providers. This allows developers to produce complex applications that can be deployed anywhere, while enabling operational teams to manage cloud infrastructure by policy and business priorities.\n\n“We’re showing a real-world example of the future of multicloud today,” said Bassam Tabbara, CEO of Upbound and maintainer on Crossplane. “GitLab is a production application that relies on multiple fully-managed services, so by abstracting these services and integrating them with the declarative Kubernetes API, we are demonstrating the ability to standardize on a single declarative API to manage it all.”\n\n## Find us at KubeCon Barcelona this week\n\nGitLab will be at KubeCon Barcelona this week and we would love to meet you to talk to you about how GitLab can help you with your Multicloud strategy.\n\nJoin us at the Multicloud 360 event at KubeCon on Tuesday, from 8:30 pm to midnight, alongside Upbound, Google Cloud, Digital Ocean and CockroachDB. [RSVP here](https://www.eventbrite.com/e/multicloud-360-tickets-60623662005) to claim your spot.\n\n![multicloud 360](https://about.gitlab.com/images/blogimages/multicloud-360.jpeg)\n\nIn addition visit GitLab at the KubeCon Booth, S21, to learn more about GitLab and Kubernetes and be sure to check out everything else we are involved in [here](/blog/kubernetes-kubecon-barcelona/).\n",[680,1356],{"slug":2045,"featured":6,"template":683},"gitlab-first-deployed-kubernetes-api-to-multiple-clouds","content:en-us:blog:gitlab-first-deployed-kubernetes-api-to-multiple-clouds.yml","Gitlab First Deployed Kubernetes Api To Multiple Clouds","en-us/blog/gitlab-first-deployed-kubernetes-api-to-multiple-clouds.yml","en-us/blog/gitlab-first-deployed-kubernetes-api-to-multiple-clouds",{"_path":2051,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2052,"content":2058,"config":2064,"_id":2066,"_type":17,"title":2067,"_source":18,"_file":2068,"_stem":2069,"_extension":21},"/en-us/blog/building-an-award-winning-culture-at-gitlab",{"title":2053,"description":2054,"ogTitle":2053,"ogDescription":2054,"noIndex":6,"ogImage":2055,"ogUrl":2056,"ogSiteName":671,"ogType":672,"canonicalUrls":2056,"schema":2057},"How we're building an award-winning culture at GitLab","We're proud to see GitLab recognized as one of Inc. Magazine's Best Workplaces in 2019!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670139/Blog/Hero%20Images/gitlab-contribute-team-photo.png","https://about.gitlab.com/blog/building-an-award-winning-culture-at-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How we're building an award-winning culture at GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Betsy Church\"}],\n        \"datePublished\": \"2019-05-16\",\n      }",{"title":2053,"description":2054,"authors":2059,"heroImage":2055,"date":2061,"body":2062,"category":14,"tags":2063},[2060],"Betsy Church","2019-05-16","\n\nWe’re delighted to share that GitLab has been named one of [Inc. Magazine’s Best Workplaces in 2019](https://www.inc.com/best-workplaces)!\n\nIn its fourth annual ranking for the private company sector, Inc.’s Best Workplaces list recognizes companies that have created exceptional workplaces through vibrant cultures, employee engagement, and stellar benefits.\n\nAlong with nearly 2,000 other participating companies, GitLab submitted an initial application followed by an anonymous employee survey, which gathered information about our team members’ confidence in the future, management effectiveness, trust, perks, and more.\n\nThere are many reasons we’re proud of the culture we’ve built and continue to sustain at GitLab, but we think it’s best to hear about it straight from our people.\nHere’s what a few of our [team members](/company/team/) from across the globe value most about life at GitLab:\n\n\n> “GitLab has a world-class team and industry-changing product velocity. I'm constantly learning from the people around me, and I've yet to hear anyone reject an idea because ‘It's just too hard.’ As a UX practitioner, we're often used to seeing our efforts get pushed down a backlog, but at GitLab, we see product refinements continually (and quickly) delivered into production. It's exciting and motivating.” [_– Christie Lenneville, UX Director_](/company/team/#clenneville)\n\n\n> “Working for GitLab is about something bigger than myself – it's bigger than my team, it's bigger than the employees – it's about partnering with the entire community to create better software.\nSimultaneously I get to help blaze a new trail – scaling an amazing culture with remote teams from around the globe.”\n[_– Joel Krooswyk, Manager, Customer Success_](/company/team/#JoelKroos)\n\n\n> “There are so many things that make GitLab special.\nTo start, of course, it's the people. I think this is due to the unique way in which we work – totally remotely from all around the globe.\nThere is a better chance of obtaining the best talent for the role when there aren't restrictions placed on location.\nThe flexibility also allows me to have time back for my family and life.\nThe stress is lower, I am happier working, and the overall work-life balance is just better here.”\n[_– Candace Byrdsong Williams, Diversity, Inclusion and Belonging Partner_](/company/team/#cwilliams3)\n\n\n> “Working at GitLab gives me confidence because we work with the highest level of transparency.\nBeing able to work remotely not only saves me on average two hours of daily commute time, but also makes it so efficient to respond to customers on time at any time.” [_– Xiaogang Wen, Solutions Architect_](/company/team/#xiaogang_gitlab)\n\n\n> “I love working at GitLab for a variety of reasons, but the flexibility in creating work-life harmony in my life tops my list.\nI work closely with our executive team here, and they have been so supportive and encouraging when family-related conflicts arise.\nThey are constantly reminding me that “family first” is our mantra, and give me ease of mind to take time away when needed.\nOutside of that, Sid, our co-founder and CEO, told me if it’s a beautiful day out and I just want to go enjoy it, I should do that.\nMoments like these make me so proud to be a part of the GitLab team.” [_– Cheri Holmes, Manager, Executive Assistant_](/company/team/#cheriholmes)\n\n\nWe celebrate this news as many of our team members are returning home from [GitLab Contribute](/events/gitlab-contribute/), the next iteration of our company [summits](/company/culture/contribute/previous/).\nHere's a glimpse of the fun we had together in New Orleans:\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/xdtPNXtkBhE\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\nThank you to all of our team members around the globe who contribute to making GitLab a great place to work.\n\nInterested in joining our fast-growing, [all-remote](/company/culture/all-remote/) team? [Check out our vacancies](/jobs/).\n",[891,848,680,890],{"slug":2065,"featured":6,"template":683},"building-an-award-winning-culture-at-gitlab","content:en-us:blog:building-an-award-winning-culture-at-gitlab.yml","Building An Award Winning Culture At Gitlab","en-us/blog/building-an-award-winning-culture-at-gitlab.yml","en-us/blog/building-an-award-winning-culture-at-gitlab",{"_path":2071,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2072,"content":2077,"config":2084,"_id":2086,"_type":17,"title":2087,"_source":18,"_file":2088,"_stem":2089,"_extension":21},"/en-us/blog/git-ransom-campaign-incident-report-atlassian-bitbucket-github-gitlab",{"title":2073,"description":2074,"ogTitle":2073,"ogDescription":2074,"noIndex":6,"ogImage":967,"ogUrl":2075,"ogSiteName":671,"ogType":672,"canonicalUrls":2075,"schema":2076},"Git ransom campaign incident report","This is a coordinated effort to help educate and inform users on secure best practices relating to the recent Git ransomware incident.","https://about.gitlab.com/blog/git-ransom-campaign-incident-report-atlassian-bitbucket-github-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Git ransom campaign incident report\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Atlassian Bitbucket, GitHub, GitLab\"}],\n        \"datePublished\": \"2019-05-14\",\n      }",{"title":2073,"description":2074,"authors":2078,"heroImage":967,"date":2080,"body":2081,"category":14,"tags":2082},[2079],"Atlassian Bitbucket, GitHub, GitLab","2019-05-14","\n\nToday, Atlassian Bitbucket, GitHub, and GitLab are issuing a joint blog post, in a coordinated effort to help educate and inform users of the three platforms on secure best practices relating to the recent Git ransomware incident. Though there is no evidence Atlassian Bitbucket, GitHub, or GitLab products were compromised in any way, we believe it’s important to help the software development community better understand and collectively take steps to protect against this threat.\n\nOn Thursday, May 2, the security teams of Atlassian Bitbucket, GitHub, and GitLab learned of a series of user account compromises across all three platforms. These account compromises resulted in a number of public and private repositories being held for ransom by an unknown actor. Each of the teams investigated and assessed that all account compromises were the result of unintentional user credential leakage by users or other third parties, likely on systems external to Bitbucket, GitHub, or GitLab.\n\nThe security and support teams of all three companies have taken and continue to take steps to notify, protect, and help affected users recover from these events. Further, the security teams of all three companies are also collaborating closely to further investigate these events in the interest of the greater Git community. At this time, we are confident that we understand how the account compromises and subsequent ransom events were conducted. This coordinated blog post will outline the details of the ransom event, provide additional information on how our organizations protect users, and arm users with information on recovering from this event and preventing others.\n\n## Event details\n\nOn the evening of May 2 (UTC), all three companies began responding to reports that user repositories, both public and private, were being wiped and replaced with a single file containing the following ransom note:\n\n> To recover your lost data and avoid leaking it: Send us 0.1 Bitcoin (BTC) to our Bitcoin address 1ES14c7qLb5CYhLMUekctxLgc1FV2Ti9DA and contact us by Email at admin@gitsbackup.com with your Git login and a Proof of Payment. If you are unsure if we have your data, contact us and we will send you a proof. Your code is downloaded and backed up on our servers. If we dont receive your payment in the next 10 Days, we will make your code public or use them otherwise.\n\nThrough immediate independent investigations, all three companies observed that user accounts were compromised using legitimate credentials including passwords, app passwords, API keys, and personal access tokens. Subsequently, the bad actor performed command line Git pushes to repositories accessible to these accounts at very high rates, indicating automated methods. These pushes overwrote the repository contents with the ransom note above and erased the commit history of the remote repository. Incident responders from each of the three companies began collaborating to protect users, share intelligence, and identify the source of the activity. All three companies notified the affected users and temporarily suspended or reset those accounts in order to prevent further malicious activity.\n\nDuring the course of the investigation, we identified a third-party credential dump being hosted by the same hosting provider where the account compromise activity had originated. That credential dump comprised roughly one third of the accounts affected by the ransom campaign. All three companies acted to invalidate the credentials contained in that public dump.\n\nFurther investigation showed that continuous scanning for publicly exposed `.git/config` and other environment files has been and continues to be conducted by the same IP address that conducted the account compromises, as recently as May 10. These files can contain sensitive credentials and personal access tokens if care is not taken to prevent their inclusion, and they should not be publicly accessible in repositories or on web servers. This [problem](https://en.internetwache.org/dont-publicly-expose-git-or-how-we-downloaded-your-websites-sourcecode-an-analysis-of-alexas-1m-28-07-2015/) is [not](https://laravel-news.com/psa-hide-your-gitconfig-directory) a new one. More information on the `.git` directory and the `.git/config` file is available [here](https://git-scm.com/docs/gitrepository-layout) and [here](https://git-scm.com/docs/git-config#_configuration_file). Additional IPs residing on the same hosting provider are also exhibiting similar scanning behavior. We are confident that this activity is the source of at least a portion of the compromised credentials.\n\nKnown ransom activity ceased on May 2. All known affected users have had credentials reset or revoked, and all known affected users have been notified by all three companies.\n\n## How to protect yourself\n\nEnable multi-factor authentication on your software development platform of choice.\n- [Bitbucket](https://confluence.atlassian.com/bitbucket/two-step-verification-777023203.html)\n- [GitHub](https://help.github.com/en/articles/securing-your-account-with-two-factor-authentication-2fa)\n- [GitLab](https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html)\n\nUse strong and unique passwords for every service.\nStrong and unique passwords prevent credential reuse if a third party experiences a breach and leaks credentials.\nUse a password manager (if approved by your organization) to make this easier!\n\nUnderstand the risks associated with the use of personal access tokens.\nPersonal access tokens, used via Git or the API, circumvent multi-factor authentication.\nTokens have may have read/write access to repositories depending on scope and should be treated like passwords.\nIf you enter your token into the clone URL when cloning or adding a remote, Git writes it to your `.git/config` file in plain text, which may carry a security risk if the `.git/config` file is publicly exposed.\nWhen working with the API, use tokens as environment variables instead of hardcoding them into your programs.\n\nDo not expose `.git` directories and `.git/config` files containing credentials or tokens in public repositories or on web servers.\n[Information on securing `.git/config` files on popular web servers is available here](https://en.internetwache.org/dont-publicly-expose-git-or-how-we-downloaded-your-websites-sourcecode-an-analysis-of-alexas-1m-28-07-2015/).\n\n## How to recover an affected repository\n\nIf you have a full, current copy of the repository on your computer, you can force push to the current HEAD of your local copy using:\n`git push origin HEAD:master --force`.\n\nOtherwise, you can still clone the repository and make use of:\n[`git reflog`](https://git-scm.com/docs/git-reflog) or\n[`git fsck`](https://git-scm.com/docs/git-fsck) to find your last commit and change the `HEAD`.\n\nAdditional assistance on Git usage is available in the following resources:\n- [Git documentation](https://git-scm.com/doc)\n- [How to move `HEAD`](https://stackoverflow.com/questions/34519665/how-to-move-head-back-to-a-previous-location-detached-head-undo-commits/34519716#34519716)\n- [Use `git fsck` to recover a deleted branch](https://opensolitude.com/2012/02/29/recover-git-branch.html)\n\nShould you require additional assistance recovering your repository contents, please refer to the following:\n- Bitbucket:\nPlease contact Bitbucket Support by filing a request at [support.atlassian.com/contact/#/](https://support.atlassian.com/contact/#/) and selecting “Bitbucket Cloud” when prompted for a product.\n- GitHub:\nPlease contact GitHub Support at [github.com/contact](https://github.com/contact).\n- GitLab:\nPlease contact GitLab Support via [support.gitlab.com](https://support.gitlab.com/).\n\n## What the software development platform community is doing to protect users\n\nAll three platforms provide robust multi-factor authentication options:\n- [Bitbucket](https://confluence.atlassian.com/bitbucket/two-step-verification-777023203.html)\n- [GitHub](https://help.github.com/en/articles/securing-your-account-with-two-factor-authentication-2fa)\n- [GitLab](https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html)\n\n**Bitbucket** provides the ability for admins to require two-factor authentication (2FA) and the ability to restrict access to users on certain IP addresses ([IP Whitelisting](https://confluence.atlassian.com/bitbucket/control-access-to-your-private-content-862621261.html)) on their Premium plan.\n\n**GitHub** provides [token scanning](https://help.github.com/en/articles/about-token-scanning) to notify a variety of service providers if secrets are published to public GitHub repositories. GitHub also provides [extensive guidance on preventing unauthorized account access](https://help.github.com/en/articles/preventing-unauthorized-access). We encourage all users to [enable two-factor authentication](https://help.github.com/en/articles/about-two-factor-authentication).\n\n**GitLab** provides secrets detection in 11.9 as part of the [SAST functionality](/releases/2019/03/22/gitlab-11-9-released/#detect-secrets-and-credentials-in-the-repository). We also encourage users to [enable 2FA here](https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html), and set up [SSH keys](https://docs.gitlab.com/ee/ssh/).\n\nThanks to the security and support teams of Atlassian Bitbucket, GitHub, and GitLab, including the following individuals for their contributions to this investigation and blog post: Mark Adams, Ethan Dodge, Sean McLucas, Elisabeth Nagy, Gary Sackett, Andrew Wurster (Atlassian Bitbucket); Matt Anderson, Howard Draper, Jay Swan, John Swanson (GitHub); Paul Harrison, Anthony Saba, Jayson Salazar, Jan Urbanc, Kathy Wang (GitLab).\n",[2083,680,994],"git",{"slug":2085,"featured":6,"template":683},"git-ransom-campaign-incident-report-atlassian-bitbucket-github-gitlab","content:en-us:blog:git-ransom-campaign-incident-report-atlassian-bitbucket-github-gitlab.yml","Git Ransom Campaign Incident Report Atlassian Bitbucket Github Gitlab","en-us/blog/git-ransom-campaign-incident-report-atlassian-bitbucket-github-gitlab.yml","en-us/blog/git-ransom-campaign-incident-report-atlassian-bitbucket-github-gitlab",{"_path":2091,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2092,"content":2098,"config":2103,"_id":2105,"_type":17,"title":2106,"_source":18,"_file":2107,"_stem":2108,"_extension":21},"/en-us/blog/github-adds-package-registry",{"title":2093,"description":2094,"ogTitle":2093,"ogDescription":2094,"noIndex":6,"ogImage":2095,"ogUrl":2096,"ogSiteName":671,"ogType":672,"canonicalUrls":2096,"schema":2097},"Packaging now standard, dependency proxy next?","GitHub follows GitLab by adding a package registry.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680578/Blog/Hero%20Images/package-registry.jpg","https://about.gitlab.com/blog/github-adds-package-registry","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Packaging now standard, dependency proxy next?\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2019-05-10\",\n      }",{"title":2093,"description":2094,"authors":2099,"heroImage":2095,"date":2100,"body":2101,"category":14,"tags":2102},[699],"2019-05-10","\n\nToday, GitHub announced that [GitHub package registry](https://github.com/features/package-registry) is in public beta. Following up on GitHub’s Actions announcement late last year, it appears that GitHub is embarking on integrating more DevOps tools into a single application experience for its users.\n\nGitLab has been building a single application for the entire DevOps lifecycle since combining CI with SCM in 2012, and released integrated packaging back in 2016 – starting with a Docker registry – and adding Maven and NPM in 2018. You can find our plans for adding further packaging capabilities [on our public packaging roadmap](/direction/package/).\n\nGitLab’s private, secure container registry and artifact repositories are built in and preconfigured to work seamlessly with GitLab source code management and CI/CD pipelines.\n\nWe are also embarking on making package management more secure and auditable for the users of packages with a [Dependency Proxy](/direction/package/#dependency-proxy. GitLab users will be able to block and delay packages that are suspect and trace where vulnerable packages were used. This will increase performance, cost efficiency, and the stability of your tests and deployments.\n\n\"It is good for users that Microsoft is now innovating with new features for GitHub after the acquisition,” said Sid. “GitLab already offers package registries, along with features in [all 10 stages of a DevOps lifecycle](/stages-devops-lifecycle/), including deployment, security, and monitoring. We have seen that customers definitely value the benefits of a single application for DevOps.”\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/sexHPOVbAoA\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nPhoto by [Leone Venter](https://unsplash.com/photos/mTkXSSScrzw?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)\n{: .note}\n",[680],{"slug":2104,"featured":6,"template":683},"github-adds-package-registry","content:en-us:blog:github-adds-package-registry.yml","Github Adds Package Registry","en-us/blog/github-adds-package-registry.yml","en-us/blog/github-adds-package-registry",{"_path":2110,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2111,"content":2116,"config":2121,"_id":2123,"_type":17,"title":2124,"_source":18,"_file":2125,"_stem":2126,"_extension":21},"/en-us/blog/suspicious-git-activity-security-update",{"title":2112,"description":2113,"ogTitle":2112,"ogDescription":2113,"noIndex":6,"ogImage":1328,"ogUrl":2114,"ogSiteName":671,"ogType":672,"canonicalUrls":2114,"schema":2115},"Repositories held for ransom by using valid credentials","We’ve learned of suspicious Git activity on GitLab. Affected users have been notified.","https://about.gitlab.com/blog/suspicious-git-activity-security-update","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Repositories held for ransom by using valid credentials\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2019-05-03\",\n      }",{"title":2112,"description":2113,"authors":2117,"heroImage":1328,"date":2118,"body":2119,"category":14,"tags":2120},[699],"2019-05-03","\nWe've learned of suspicious Git activity using valid credentials (a password or personal access token) on GitLab. We identified the source based on a support ticket filed by [Stefan Gabos](https://security.stackexchange.com/questions/209448/gitlab-account-hacked-and-repo-wiped) yesterday, and immediately began investigating the issue. This is a user insecure practices issue, and is not specific to GitLab, as other git repositories are affected by this as well. We are issuing this advisory to all git repo users so that we can help heighten awareness of this issue and help git's user community protect their own data.\n\nThe breaches seem to rely on the attacker having knowledge of the affected users' passwords in order [to wipe their Git repositories and hold them for ransom](https://www.zdnet.com/article/a-hacker-is-wiping-git-repositories-and-asking-for-a-ransom/). We have notified affected GitLab users and are working as quickly as possible to resolve the issue.\n\n> *“As a result of our investigation, we have strong evidence that the compromised accounts have account passwords being stored in plaintext on a deployment of a related repository. We strongly encourage the use of password management tools to store passwords in a more secure manner, and enabling two-factor authentication wherever possible, both of which would have prevented this issue.”*\n> *- Kathy Wang, Senior Director, Security*\n\n## How you can protect yourself\n\nThese breaches seemed to rely on the attacker having knowledge of the affected user’s password. We highly recommend strong passwords and unique passwords for everything (using a good password manager helps manage this). We strongly recommend all GitLab users enable [two-factor authentication](https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html) and use [SSH keys](https://docs.gitlab.com/ee/user/ssh.html) to strengthen your GitLab account.\n\nYou may further protect your groups by applying the [“Require all users in this group to setup Two-factor authentication”](https://docs.gitlab.com/ee/security/two_factor_authentication.html#enforcing-2fa-for-all-users-in-a-group) setting in the Group settings under “Permissions, LFS, 2FA”.\n\nIn this case, it can help to prevent a breach.\n\n## Mitigation\n\nWe believe that no data has been lost, unless the owner/maintainer of the repository did not have a local copy and the GitLab copy was the only one. In some cases, repository files were changed. After updating account credentials, we recommend making use of `git` commands to restore your repository to its previous state. If you have a full current copy of the repository on your computer, you can force push to the current HEAD of your local copy using:\n\n`git push origin HEAD:master --force`\n\nOtherwise, you can still clone the repository and make use of:\n\n- [git reflog](https://git-scm.com/docs/git-reflog) or\n- [git fsck](https://git-scm.com/docs/git-fsck) to find your last commit and change the HEAD\n\nAs this is related to the use of `git`, GitLab does not have its own documentation or examples, but we have found these articles that may be of use:\n\n- [Git documentation](https://git-scm.com/doc)\n- [How to move HEAD](https://stackoverflow.com/questions/34519665/how-to-move-head-back-to-a-previous-location-detached-head-undo-commits/34519716#34519716)\n- [Use git fsck to recover a deleted branch](https://opensolitude.com/2012/02/29/recover-git-branch.html)\n\n## Details\n\nOn May 2, 2019 at approximately 10:00pm GMT GitLab received the first report of a repository being wiped with a single file left in place that demanded a bitcoin ransom be paid for the return of data:\n\n```\nTo recover your lost data and avoid leaking it: Send us 0.1 Bitcoin (BTC) to our Bitcoin address 1ES14c7qLb5CYhLMUekctxLgc1FV2Ti9DA and contact us by Email at admin@gitsbackup.com with your Git login and a Proof of Payment. If you are unsure if we have your data, contact us and we will send you a proof. Your code is downloaded and backed up on our servers. If we dont receive your payment in the next 10 Days, we will make your code public or use them otherwise.\n```\n\nWe began to receive multiple reports, and were able to search through logs and repositories to determine the extent of the impact. A few repositories had the ransom threat left behind, some repositories were simply wiped, and a few accounts appeared to be successfully accessed by the attacker but not modified. All total, 131 users and 163 repositories were, at a minimum, accessed by the attacker. Affected accounts were temporarily disabled, and the owners were notified.\n\nWe noticed the following items in reference to this incident:\n\n- The source IP of the attacks came from the 185.234.216.0/24 range.\n- The attacker appeared to use some type of “update script” in an attempt to perform the accesses, and the nature of the individual accesses strongly suggested the use of plaintext passwords that were locally stored.\n- Virtually all of the repositories were private repositories.\n- None of the accounts impacted had two-factor authentication enabled.\n\nSince not all of the accesses resulted in both a repository wipe and a ransom note, this suggests that the attacker’s update script was possibly not working properly. This could be a result of a generic script being used against GitLab as well as GitHub and Bitbucket.\n\n## Conclusion\n\nWe are continuing our investigation, and if we uncover more details that we feel will benefit our users and the security community at large, we will communicate that information as quickly and as transparently as possible. We are constantly looking for ways to improve our security and would appreciate any comments and questions you might have.\n",[994],{"slug":2122,"featured":6,"template":683},"suspicious-git-activity-security-update","content:en-us:blog:suspicious-git-activity-security-update.yml","Suspicious Git Activity Security Update","en-us/blog/suspicious-git-activity-security-update.yml","en-us/blog/suspicious-git-activity-security-update",{"_path":2128,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2129,"content":2135,"config":2142,"_id":2144,"_type":17,"title":2145,"_source":18,"_file":2146,"_stem":2147,"_extension":21},"/en-us/blog/gitlab-journey-from-azure-to-gcp",{"title":2130,"description":2131,"ogTitle":2130,"ogDescription":2131,"noIndex":6,"ogImage":2132,"ogUrl":2133,"ogSiteName":671,"ogType":672,"canonicalUrls":2133,"schema":2134},"GitLab’s journey from Azure to GCP","GitLab Staff Engineer Andrew Newdigate shares how we completed our migration to Google Cloud Platform, and how we overcame challenges along the way.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671280/Blog/Hero%20Images/gitlab-gke-integration-cover.png","https://about.gitlab.com/blog/gitlab-journey-from-azure-to-gcp","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab’s journey from Azure to GCP\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Chrissie Buchanan\"}],\n        \"datePublished\": \"2019-05-02\",\n      }",{"title":2130,"description":2131,"authors":2136,"heroImage":2132,"date":2138,"body":2139,"category":14,"tags":2140},[2137],"Chrissie Buchanan","2019-05-02","\n\nLast June, we had to face the facts: Our SaaS infrastructure for GitLab.com was not ready for mission-critical workloads, error rates were just too high, and availability was too low. To address these challenges, we decided to migrate from Azure to Google Cloud Platform (GCP) and document the journey publicly, end to end. A lot has happened since [we first talked about moving to GCP](/blog/moving-to-gcp/), and we’re excited to share the results.\n\nAt [Google Cloud Next '19](https://cloud.withgoogle.com/next/sf), GitLab Staff Engineer [Andrew Newdigate](/company/team/#suprememoocow) presented our migration experience and the steps we took to make it happen. Migrations seldom go as planned but we hope that others can learn from the process. Check out the video to learn more about our journey from Azure to GCP, and find some of our key takeaways below.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/Ve_9mbJHPXQ\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nThere were several reasons why we decided on the Google Cloud Platform. One top priority was that we wanted GitLab.com to be suitable for mission-critical workloads, and GCP offered the performance and consistency we needed. A second reason is that we believe [Kubernetes](/solutions/kubernetes/) is the future, especially with so much development geared toward [cloud native](/topics/cloud-native/). Another priority was price. For all of these reasons and more, Google was the clear choice as a partner going forward.\n\nOur company values are important to us and we apply them to all aspects of our work and our migration from Azure to GCP is no exception.\n\n## Three core values guided this project:\n\n###  Efficiency\n\nAt GitLab, [we love boring solutions](https://handbook.gitlab.com/handbook/values/#boring-solutions). The goal of the project was really simple: Move GitLab.com to GCP. We wanted to find the least complex and most straightforward solution to achieve this goal.\n\n### Iteration\n\nWe focus on shipping the [minimum viable change](https://handbook.gitlab.com/handbook/values/#minimal-viable-change-mvc) and work in steps. When we practice iteration, we get feedback faster, we’re able to course-correct, and we reduce cycle times.\n\n### Transparency\n\nWe work [publicly by default](https://handbook.gitlab.com/handbook/values/#public-by-default), which is why we made [this project accessible to everyone](https://gitlab.com/gitlab-com/migration/) and [documented our progress](https://docs.google.com/document/d/1p3Brri44_SKyakViKB-LGWCmCcwILW6z2A8a8eWFyFc/edit?usp=sharing) along the way.\n\n## How we did it\n\nLooking for the simplest solution, we considered whether we could just stop the whole site: Copy all the data from Azure to GCP, switch the DNS over to point to GCP, and then start everything up again. The problem was that we had too much data to do this within a reasonable time frame. Once we shut down the site, we'd need to copy all the data between two cloud providers, and once the copy was complete, we'd need to verify all the data (about half a petabyte) and make sure it was correct. This plan meant that GitLab.com could be down for _several days_, and considering that thousands and thousands of people rely on GitLab on a daily basis, this wouldn’t work.\n\n![GitLab Geo diagram](https://about.gitlab.com/images/gitlab_ee/gitlab_geo_diagram_migrate.png){: .medium.center}\n\nWe went back to the drawing board. We were working on another feature called [Geo](https://docs.gitlab.com/ee/administration/geo/index.html) which allows for full, read-only mirrors of GitLab instances. Besides browsing the GitLab UI, Geo instances can be used for cloning and fetching projects as well as for a planned failover to migrate GitLab instances.\n\nWe hoped that by taking advantage of the replication capabilities we were building for Geo, we could migrate the entire GitLab.com site to a secondary instance in GCP. The process might have taken weeks or months, but thankfully the site would be available throughout the synchronization process. Once all the data was synchronized to GCP, we could verify it and make sure it was correct. Finally, we could just promote the GCP environment and make it our new primary.\n\nThis new plan had many advantages over the first one. Obviously, GitLab.com would be up during the synchronization and we would only have a short period of downtime, maybe an hour or two, rather than weeks. We could do full QA, load testing, and verify all data before the failover.\n\n>\"If it could work for us on GitLab.com, it would pretty much work for any other customer who wanted to use Geo. We could be confident in that.\" - Andrew Newdigate, Infrastructure Architect at GitLab\n\n![Helm charts](https://about.gitlab.com/images/blogimages/gitlab-journey-from-azure-to-gcp/helm_charts.png){: .medium.center}\n\nWe were also working on another major project to install and run GitLab on Kubernetes. Much like Omnibus is a package installer for installing GitLab _outside_ a Kubernetes environment, GitLab’s helm charts [install GitLab inside a Kubernetes environment](https://docs.gitlab.com/charts/). The plan evolved to use helm charts to install GitLab in GCP while still using Geo for replication.\n\nIt became apparent there were problems with this approach as we went along:\n\n*   The changes we needed to make to the application to allow it to become fully cloud native were extensive and required major work.\n*   The timeframes of the GCP migration and cloud native projects wouldn’t allow us to carry them out simultaneously.\n\nWe ultimately decided it would be better to postpone the move to Kubernetes until after migration to GCP.\n\nWe went to the next iteration and decided to use Omnibus to provision the new environment. We also migrated all file artifacts, including CI Artifacts, Traces (CI log files), file attachments, LFS objects and other file uploads to [Google Cloud Storage](https://cloud.google.com/storage/) (GCS), moving about 200TB of data off our Azure-based file servers into GCS. Doing this reduced the risk and the scale of the Geo migration.\n\nThe steps for the migration were now fairly straightforward:\n\n*   Set up a Geo secondary in GCP.\n*   Provision the new environment with Omnibus.\n*   Replicate all the data from GitLab.com in Azure to GCP.\n*   Test the new environment and verify all the data is correct.\n*   Failover to the GCP environment and promote it to primary.\n\nThere was only one major unknown left in this plan: The actual failover operation itself.\n\nUnfortunately, **Geo didn’t support a failover operation**, and nobody knew exactly how to do it. It was essential that we executed this perfectly, so we used our value of iteration to get it right.\n\n![GitLab failover procedure issue template](https://about.gitlab.com/images/blogimages/gitlab-journey-from-azure-to-gcp/issue_template.png){: .medium.center}\n\n*   We set up the failover procedure as an issue template in the GitLab migration issue tracker with each step as a checklist item.\n*   Every time we practiced, we created a new issue from the template and followed the checklist step by step.\n*   After each failover, we would review and consider how we could improve the process.\n*   We would submit these changes as merge requests to the issue template.\n\nThe merge requests were thoroughly reviewed before being approved by the team and through this very tight, iterative feedback loop, the checklist grew to cover every possible scenario we experienced. In the beginning, things almost never went according to plan, but with each iteration, we got better. In the end, there were _over 140 changes_ in that document before we felt confident enough to move forward with the failover. We let Google know and an amazing team was assembled to help us. The failover went smoothly and we didn't experience any major problems.\n\n## Results\n\nGoing back to the goals of the project: Did we make GitLab.com suitable for mission-critical workloads? Firstly, let's consider availability on GitLab.com.\n\n![GitLab Pingdom chart](https://about.gitlab.com/images/blogimages/gitlab-journey-from-azure-to-gcp/errors_per_day.png){: .shadow.medium.center}\n\nThis [Pingdom](https://www.pingdom.com/) graph shows the number of errors we saw per day, first in Azure and then in GCP. The average for the pre-migration period was 8.2 errors per day, while post-migration it’s down to **just one error a day**.\n\n![GitLab availability](https://about.gitlab.com/images/blogimages/gitlab-journey-from-azure-to-gcp/gitlab_availability.png){: .shadow.medium.center}\n\nLeading up to the migration, our availability was 99.61 percent. [In our October update](/blog/gitlab-com-stability-post-gcp-migration/) we were at 99.88 percent. As of April 2019, we've improved to **99.93 percent** and are on track to reach our target of 99.95 percent availability.\n\n![GitLab latency chart](https://about.gitlab.com/images/blogimages/gitlab-journey-from-azure-to-gcp/latency.png){: .shadow.medium.center}\n\nThis latency histogram compares the site performance of GitLab.com before and after moving to GCP. We took data for one week before the migration and one week after the migration. The GCP line shows us that the latencies in GCP drop off quicker, which means GitLab.com is not only faster, it’s more predictable, with fewer outlier values taking an unacceptably long time.\n\n[GitLab users have also noticed the increased stability](https://www.reddit.com/r/gitlab/comments/9f71nq/thanks_gitlab_team_for_improving_the_stability_of/), which is an encouraging sign that we've taken steps in the right direction.\n\nIt's important to note that these improvements can't be attributed to the migration alone – we explore some other contributing factors in [our October update](/blog/gitlab-com-stability-post-gcp-migration/).\n\n\n## What we learned\n\n* Having this amount of visibility into a large-scale migration project is pretty unusual, but it gave us an opportunity to put our values to the test. By opening our documentation to the world, we can collaborate and help others on their own migration journey.\n*  Working by our values gave us the ability to get the quick feedback we needed. Even though we weren’t able to use GitLab on Kubernetes during the migration, we course-corrected and came up with the right solutions.\n* We were able to see exactly how Google developers work and got an up-close look into how one of the fastest-moving companies in the world actually manages its [DevOps lifecycle](/topics/devops/). This knowledge will have a long-term impact on GitLab and how we support these organizations in the future.\n\nIf you would like to learn more about how we migrated to GCP, feel free to take a look at the **[issue tracker](https://gitlab.com/gitlab-com/migration/)** and our **[project documentation](http://bit.ly/2UrlU4s)**.\n",[1100,1458,2141,1059],"GKE",{"slug":2143,"featured":6,"template":683},"gitlab-journey-from-azure-to-gcp","content:en-us:blog:gitlab-journey-from-azure-to-gcp.yml","Gitlab Journey From Azure To Gcp","en-us/blog/gitlab-journey-from-azure-to-gcp.yml","en-us/blog/gitlab-journey-from-azure-to-gcp",{"_path":2149,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2150,"content":2155,"config":2160,"_id":2162,"_type":17,"title":2163,"_source":18,"_file":2164,"_stem":2165,"_extension":21},"/en-us/blog/running-a-consistent-serverless-platform",{"title":2151,"description":2152,"ogTitle":2151,"ogDescription":2152,"noIndex":6,"ogImage":1974,"ogUrl":2153,"ogSiteName":671,"ogType":672,"canonicalUrls":2153,"schema":2154},"Run a consistent serverless platform with GitLab and Knative","Portability of your serverless platform is now easy with GitLab and Knative.","https://about.gitlab.com/blog/running-a-consistent-serverless-platform","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Run a consistent serverless platform with GitLab and Knative\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Daniel Gruesso\"}],\n        \"datePublished\": \"2019-05-02\",\n      }",{"title":2151,"description":2152,"authors":2156,"heroImage":1974,"date":2138,"body":2158,"category":14,"tags":2159},[2157],"Daniel Gruesso","\nThis past April, [Cloud Run](https://cloud.google.com/run/) was announced at Google Cloud Next. As a Google Cloud partner, GitLab had the opportunity to participate and demo our integration during the talk titled, \"[Run a consistent serverless platform anywhere with Kubernetes and Knative](https://youtu.be/lb_bRRAgEyc?t=1100).\"\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/lb_bRRAgEyc?start=1100\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nJust as Kubernetes has become the de facto default platform for running containers, Knative is shaping up to become the answer for running [serverless](/topics/serverless/) workloads in Kubernetes. Cloud Run brings all the benefits of Knative in a fully managed service or as an add-on to your Kubernetes cluster (called “Cloud Run on GKE”), abstracting developers from the complexities of deploying Kubernetes, Knative, and managing a cluster. This empowers developers to focus on adding value vs having to deploy and manage infrastructure.\n\nAt GitLab we believe in the power of open source and adopted Kubernetes and Knative from early on. During the talk, we demoed how GitLab enables operators to deploy Knative with ease so that developers can start deploying Functions-as-a-service (FaaS) or serverless applications using GitLab’s built-in features. GitLab also provides the configured Istio-Ingress endpoints automatically, which operators can then use to configure DNS for their domain, as well as providing the option to bind the domain to the ingress endpoint (via ConfigMap) so that the serving controller can configure the routes. This is all done with a single click.\n\nAfter provisioning your project with the required [serverless templates](https://docs.gitlab.com/ee/update/removals.html), GitLab will automatically build and deploy your application or function as a Knative service, provide you with the endpoint where the service is provisioned, and display load/invocation metrics for your function.\n\n![GitLab Serverless](https://docs.gitlab.com/ee/update/removals.html){: .shadow.small.center.wrap-text}\n\nWhile it’s still early on, we are very excited to partner with both Google Cloud and the Knative community to bring all this awesome functionality to the GitLab community.\n\n{::options parse_block_html=\"true\" /}\n\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>&nbsp;&nbsp;\nLearn more about [GitLab Serverless](https://docs.gitlab.com/ee/user/project/clusters/serverless)\n&nbsp;&nbsp;\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n{: .alert .alert-webcast}\n\n{::options parse_block_html=\"true\" /}\n\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>&nbsp;&nbsp;\nLearn more about [Cloud Run](http://cloud.google.com/run)\n&nbsp;&nbsp;\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n{: .alert .alert-webcast}\n",[1458,278,2141,1100,1059],{"slug":2161,"featured":6,"template":683},"running-a-consistent-serverless-platform","content:en-us:blog:running-a-consistent-serverless-platform.yml","Running A Consistent Serverless Platform","en-us/blog/running-a-consistent-serverless-platform.yml","en-us/blog/running-a-consistent-serverless-platform",{"_path":2167,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2168,"content":2174,"config":2180,"_id":2182,"_type":17,"title":2183,"_source":18,"_file":2184,"_stem":2185,"_extension":21},"/en-us/blog/gemnasium-our-gitlab-journey",{"title":2169,"description":2170,"ogTitle":2169,"ogDescription":2170,"noIndex":6,"ogImage":2171,"ogUrl":2172,"ogSiteName":671,"ogType":672,"canonicalUrls":2172,"schema":2173},"Gemnasium: Our GitLab journey","We joined GitLab as a small startup and quickly became an integral part of the company. We want to share our success story with the startup community.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679751/Blog/Hero%20Images/gemnasium-gitlab-cover.png","https://about.gitlab.com/blog/gemnasium-our-gitlab-journey","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Gemnasium: Our GitLab journey\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Philippe Lafoucrière\"}],\n        \"datePublished\": \"2019-04-30\",\n      }",{"title":2169,"description":2170,"authors":2175,"heroImage":2171,"date":2177,"body":2178,"category":14,"tags":2179},[2176],"Philippe Lafoucrière","2019-04-30","\n\nGoing through acquisition is never easy, and often fails eventually. Two common scenarios can occur:\nEither the two companies are of similar size, and in this “merger” configuration employees are\nscared of duplicate jobs; or the buyer is slightly bigger than the seller, and there's a risk of losing\nthe culture and cohesion of the team. Ours was the latter: We were afraid of being absorbed and\ndigested completely, and eventually not working on the same subjects anymore, or not together.\nI’ve spent years building a trusting relationship with my team, and I was worried about\ntheir future in this new adventure.\n\nThis story is different. We’ve been at GitLab for over a year now, and it's all been for the best.\nWe still have the pleasure of working together, even though the team has doubled in size since.\nI wanted to share some reflections on Gemnasium's experience of being acquired by and integrated into GitLab:\n\n## Negotiating the acquisition\n\nWe had our share of ups and downs during the development of Gemnasium. I learned to be very\ncautious about my business relations. This due diligence is always a critical step, especially for\nthe buyer, to avoid any surprises and ensure the quality of the purchased product.\nDuring that step, we couldn’t answer all the requests from GitLab, since sharing algorithms and\nsource code was putting us at risk. But we explained why and managed to provide something\nclose enough to fulfil the requirement. We had open and healthy discussions at that point with\nGitLab, and it helped to create the trust we were looking for.\n\n## Joining GitLab\n\nWhen we joined the company, I was amazed to see everyone contributing to the [handbook](/handbook/).\nLiterally everyone, including PeopleOps, Sales, and Marketing. Committing changes with Git is the\nDNA of the company, and really makes a difference. There’s no one left behind, struggling with\nthe inherent technical difficulties of contributing to a shared repository.\nThen I discovered what fuels GitLab to make it so special: Slack. A lot of companies already use\nSlack, often for the best. But with GitLab being an all-remote company, Slack is a main communication\nchannel for everyone, including with other teams. At the time, GitLab was already present in\n40 countries (vs more than 50 as of today), which means a lot of time zones covered. There’s\nalways someone available to help and answer questions.\nEven administrative problems are taken care of by the People Ops team in a few minutes. Not\ndays, not weeks – minutes. It allows all employees to focus on what really matters: Delivering and\nmaking the product better. No need to follow up anymore, nothing to complain about; the burden\nis just gone, and everybody moves on. When you make the life of your employees easier, they are\nhappier and more productive. As simple as that.\n\n## Concluding the Gemnasium story\n\nThe acquisition, like everything else at GitLab, went extremely quickly – so quickly that we didn’t have the\nopportunity to bond one last time together as a team. That was a concern to me, also because\nthe onboarding was overwhelming. So many questions, so many processes and new concepts to\ndigest. Our Product Manager Fabio Busatto was really helpful and did everything he could\nto get up to speed as soon as possible. It felt obvious that we would benefit from having a “retreat”\nin a common place, to close the Gemnasium story, and put the new GitLab one on track. “We don’t\ndo that at GitLab, we’re a remote company,” was the first answer I got. I didn’t have to insist\ntoo much to convince our CEO [Sid](/company/team/#sytses), and I promised to keep everything cheap and neat. We already had two\nteam members in Quebec City, so it made sense to organize something here, to save on travel.\n“[Everything starts with an issue](/handbook/communication/#everything-starts-with-an-issue)” at GitLab, so I created\n[one to make this case](https://gitlab.com/gitlab-com/people-ops/General/issues/99).\nA few days later, the idea and budget were approved without any trouble. We could spend a\nwhole week altogether, and it was a great experience for all of us. The feedback from the team\nwas very positive, and it boosted morale as well.\n\n## Becoming the Secure Team\n\nAs an official part of GitLab, the Gemnasium team became the Security Products\nTeam, now called the [Secure Team](/handbook/engineering/development/sec/secure/). Our scope is much broader than just dependency scanning, and\nwe were expected to deploy SAST, DAST, and Container Scanning solutions. It took us less than a month\nto deliver an [MVC](https://handbook.gitlab.com/handbook/values/#minimal-viable-change-mvc) of dependency scanning, based on Gemnasium. We were already working\nremotely, using GitLab, so the pipeline and other parts of the equation were familiar to us. Before the\nnext milestone following our arrival, Gemnasium was running on GitLab infrastructure.\n[Dmitriy](/company/team/#dzaporozhets) (CTO) and Sid (CEO) were really present, taking the pulse of the team, and helping us\nto remove any roadblocks. They didn’t try to force us to do this integration their way. It was really\na collaboration and every meeting began with them asking, “How can we help you?”\n\n## Transitioning from manager to individual contributor\n\nAfter a few months, it became obvious that the team was performing well and heading in the right direction.\nWe had results, customers, and a huge roadmap ahead of us. It was time to start hiring new engineers.\nBack then, I was meeting with a lot of customers, gathering feedback and ideas to help our product\nmanager, and helping with pre-sales. Hiring new engineers can be very time consuming, and\nwith our expectations for the Secure Team, that means a full-time job for a while. Instead of\nforcing me to stop what I was doing and start right away with the recruiting, my manager\ndecided to leverage my skills. I was recently promoted to a Distinguished Engineer position,\nwhich also means switching from the [management branch to the Individual Contribution path](/handbook/engineering/career-development/#individual-contribution-vs-management).\n\nThis is a big shift for me and the team, but in the end, it results in more space and latitude to\nwork on various subjects: Developing our Security Products is much more than just a roadmap\nand implementation. We need to understand the competition, discuss strategic partnerships,\nidentify risks and opportunities, and many other things left aside during all our regular processes.\nBeing my own boss for the last 10 years taught me to be efficient and put the team in the best position for success.\n\n> The bureaucracy that's often associated with large organizations\nis very limited, even after growing to more than 500 people\n\nMy manager, [Dalia Havens](/company/team/#dhavens), has been nothing but supportive\nin this area since the beginning, and a great [servant leader](https://en.wikipedia.org/wiki/Servant_leadership).\nGitLab has been successful so far because the bureaucracy that's often associated with large organizations\nis very limited, even after growing to more than 500 people. As soon as a roadblock is identified,\nwe can discuss collaborate to fix the problem, sometimes right away.\nReducing the number of steps necessary to actually achieve or deliver something is one of the keys\nto happiness for a team used to iterating daily.\n\nI think this is the main reason for the success of this acquisition. At no time did GitLab try to put us in a box.\nAs soon as the results are there, we’re free to experiment, to innovate, and more importantly, to build our own future.\n\n## Experimenting and innovating\n\nOne good example of this freedom to explore is the [auto-remediation feature](/direction/secure/#auto-remediation).\nIn 2014, we shipped our second iteration of the Auto-Update in Gemnasium. While the\nalgorithm behind the update sets had been improved, we were aware that the setup was far from\nsimple, which was against the philosophy behind Gemnasium: In order to work, our algorithm\nhad to run the pipeline, maybe multiple, consecutive times (with different update sets).\nThis was clearly hard to achieve for our users, and for our developers (we didn’t know anything about the test suite).\nBeing part of GitLab would solve that issue, as we would eventually be able to pilot the pipeline\nfor that. Even better, we would be able to hide the runs from the users.\n\nAfter a few customer meetings, it was obvious that this feature was a competitive advantage, and we decided to push\nit more. The whole team was excited to contribute to what would be the first MVC, as our product\nmanager helped to refine the feature, gluing all the pieces together. This step was essential:\nIt allowed everyone to contribute and influence the roadmap. Even as the company gets bigger\nevery day, we still feel empowered and a part of the decision-making process.\n\nThese past 12 months have been extremely exciting and rewarding. While we’re now fully integrated\ninto GitLab, we still feel the fresh air of freedom we had during the Gemnasium years. Even\nbetter, we can focus on what we love, and stop worrying about the short-term future.\n\nIf you're interested in being acquired by GitLab, we're actively looking for startups to join us.\nPlease visit our [acquisitions handbook](/handbook/acquisitions/) to find out more and to see if you\nare the right fit.\n",[890,994,1437],{"slug":2181,"featured":6,"template":683},"gemnasium-our-gitlab-journey","content:en-us:blog:gemnasium-our-gitlab-journey.yml","Gemnasium Our Gitlab Journey","en-us/blog/gemnasium-our-gitlab-journey.yml","en-us/blog/gemnasium-our-gitlab-journey",{"_path":2187,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2188,"content":2194,"config":2201,"_id":2203,"_type":17,"title":2204,"_source":18,"_file":2205,"_stem":2206,"_extension":21},"/en-us/blog/the-gitlab-handbook-by-numbers",{"title":2189,"description":2190,"ogTitle":2189,"ogDescription":2190,"noIndex":6,"ogImage":2191,"ogUrl":2192,"ogSiteName":671,"ogType":672,"canonicalUrls":2192,"schema":2193},"The GitLab handbook by numbers","Two GitLab team-members take a fresh look at GitLab's open source team handbook, charting its evolution over the years to the weighty tome it is today.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670434/Blog/Hero%20Images/handbook-cover.jpg","https://about.gitlab.com/blog/the-gitlab-handbook-by-numbers","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"The GitLab handbook by numbers\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Lukas Eipert\"},{\"@type\":\"Person\",\"name\":\"Lee Matos\"}],\n        \"datePublished\": \"2019-04-24\",\n      }",{"title":2189,"description":2190,"authors":2195,"heroImage":2191,"date":2198,"body":2199,"category":14,"tags":2200},[2196,2197],"Lukas Eipert","Lee Matos","2019-04-24","\nSharing and retrieving information is a crucial part of everyday work life.\nWhere do you get information from, be it about hiring processes, social media guidelines, or reporting expenses?\nAt GitLab, all of that can be found in [the handbook](https://handbook.gitlab.com/) – have a look, it's public!\n[Sid](/company/team/#sytses), our CEO, [wrote about the importance and the open sourcing of our handbook][sid-blog-post] about two and a half years ago.\nBack then we were just shy of 100 employees.\nIn this post we will look at how the handbook has developed over time, how we interact with it,\nand how it still works for over 550 employees.\n\n[sid-blog-post]: /blog/our-handbook-is-open-source-heres-why/\n\n## One book to guide them all\n\nAt the time of writing, the handbook contains about 605,000 words.\nWhile probably a bit less captivating than the tales of Frodo and Middle Earth,\nwe have composed more pages than \"The Lord of the Rings\" and \"The Hobbit\" combined, since the [first commit][first-commit] in 2015.\nIt would take around 50 hours of continuous reading to cover the whole handbook, front to back.\n\n### Is it overwhelming to read through it all?\n\nIt would be, but as the handbook covers a wide range of topics, you probably don't need to read every single word.\nAs the handbook changes over time it is not necessary to memorize it all, but it is more important to remember how to retrieve information.\nSo as long as you know where to find something, you are on the safe side.\n\n> It would take around 50 hours of continuous reading to cover the whole handbook, front to back\n\n[first-commit]: https://gitlab.com/gitlab-com/www-gitlab-com/blob/2d2ced8f79da96fe981a3a6f6cf5918fa2dd992a/source/team-handbook/index.html\n\n## One book to be written by them all\n\n![Graph showing the growth of the handbook over time (May 2015 - April 2019)](https://about.gitlab.com/images/blogimages/evolution_handbook/handbook-history.png){: .shadow.center}\n*\u003Csmall>Graph showing the growth of the handbook, broken down by subcategory, over time (May 2015 – April 2019)\u003C/small>*\n\nCurrently all knowledge in the handbook is spread across 550 unique web pages, with the average page containing around 1,100 words.\nThe most words have been written in the subcategory engineering (138,000 words), with marketing a close second (115,000 words).\nTypically, as teams grow, more of their processes get documented in the handbook, which leads to a natural growth of the respective category.\n\n> The most words have been written in the subcategory engineering (138,000 words)\n\n### Who contributes to the handbook?\n\nYou might think that there is someone special who writes all those pages, but it's important\nto remember that [everyone can contribute](https://handbook.gitlab.com/handbook/company/mission/) to the handbook. It is actually part of our [onboarding process]\nto improve something about the handbook – whether that's clarifying wording or making it easier to find something.\nNothing is exempt from change; even [our core values are adjusted over the course of time][values-history].\n\n### How do you make changes to the handbook?\n\nIf someone at GitLab or from the wider community wants to change something, they follow a simple workflow that is familiar to every GitLab user:\n\n1. Create a merge request which introduces the change.\n2. Discuss the merge request with the stakeholders.\n3. Iterate on the change and come to an agreement.\n4. Let the merge request be merged.\n\nMore important changes (not every typo of course!) are then announced via Slack or our [company call].\nThe handbook also has its own [changelog] which you can check regularly to see what has been changed over time.\n\n[onboarding process]: https://handbook.gitlab.com/handbook/people-group/general-onboarding/\n[values-history]: https://gitlab.com/gitlab-com/www-gitlab-com/commits/master/source/handbook/values/index.html.md\n[company call]: https://handbook.gitlab.com/handbook/communication/\n[changelog]: https://handbook.gitlab.com/handbook/about/changelog/\n\n## One book to be read by them all\n\nIn 2018 we had several hundred thousand page views on pages in the handbook. It is hard to tell which views come from GitLab team-members and which from the wider community.\nAmong the most-read pages are our [Markdown Guide], the pages about [global compensation], our [values], the [hiring process], our [product], [benefits], and how to [communicate].\nThese pages are topics of general interest to people within and outside the company.\nWhat could be a better resource to potential candidates than those pages that show the inner workings of GitLab?\n\n### How do you find anything in the handbook?\n\nThe handbook has a search function; you can use the [index page](https://handbook.gitlab.com/) as an entry point, or just use your favorite search engine to find information.\nWhenever someone asks a question in our Slack, there is a high probability that someone will answer with a link to the handbook.\nIf someone asks a question that has no answer in the handbook, we highly encourage people to add that information to document it and make it easier for future GitLab team-members to find answers.\n\n> Whenever someone asks a question in our Slack, there is a high probability that someone will answer with a link to the handbook\n\n[Markdown Guide]: https://handbook.gitlab.com/handbook/markdown-guide/\n[global compensation]: https://handbook.gitlab.com/handbook/total-rewards/compensation/\n[product]: https://handbook.gitlab.com/handbook/product/\n[communicate]: https://handbook.gitlab.com/handbook/communication/\n[values]: https://handbook.gitlab.com/handbook/values/\n[benefits]: https://handbook.gitlab.com/handbook/total-rewards/benefits/\n[hiring process]: https://handbook.gitlab.com/handbook/hiring/\n\n## One book to be the future\n\nWe hope that this glimpse into the handbook is as interesting for you as it was for us.\nIn an all-remote company it is especially important to write everything down, so that no matter\nwhere you are in the world or what time zone you choose to work in, the information you need is accessible.\nAt the moment we are happy to say that we think that the handbook works as well for us now as it did with 100 employees.\nIt aligns with our [values] more than ever.\n\nFor us it is the most transparent way to collaborate on documentation of company internals.\nWe are able to efficiently iterate on topics, resulting in more in-depth coverage over time.\nPersonally the authors cannot see many reasons why the handbook should not be able to scale even further.\nEventually it will evolve further, from the three tomes we have today, to a digital encyclopedia.\nWe are definitely excited to see what the future holds!\n\nHave you taken inspiration from our handbook? Let us know by tweeting [@gitlab](https://twitter.com/gitlab).\n\nPhoto by [Beatriz Pérez Moya](https://unsplash.com/photos/XN4T2PVUUgk?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/search/photos/books?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)\n{: .note}\n",[848,723,890,804],{"slug":2202,"featured":6,"template":683},"the-gitlab-handbook-by-numbers","content:en-us:blog:the-gitlab-handbook-by-numbers.yml","The Gitlab Handbook By Numbers","en-us/blog/the-gitlab-handbook-by-numbers.yml","en-us/blog/the-gitlab-handbook-by-numbers",{"_path":2208,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2209,"content":2215,"config":2221,"_id":2223,"_type":17,"title":2224,"_source":18,"_file":2225,"_stem":2226,"_extension":21},"/en-us/blog/industry-moving-to-single-application-for-devops",{"title":2210,"description":2211,"ogTitle":2210,"ogDescription":2211,"noIndex":6,"ogImage":2212,"ogUrl":2213,"ogSiteName":671,"ogType":672,"canonicalUrls":2213,"schema":2214},"The industry moves toward single DevOps lifecycle applications","Today's acquisition of ElectricCloud is further validation of a shift towards DevOps consolidation.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663648/Blog/Hero%20Images/gitlab-joins-cd-foundation.jpg","https://about.gitlab.com/blog/industry-moving-to-single-application-for-devops","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"The industry is moving towards a single application for the DevOps lifecycle\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2019-04-18\",\n      }",{"title":2216,"description":2211,"authors":2217,"heroImage":2212,"date":2218,"body":2219,"category":14,"tags":2220},"The industry is moving towards a single application for the DevOps lifecycle",[699],"2019-04-18","\n\nToday [CloudBees acquired ElectricCloud](https://www.cloudbees.com/press/cloudbees-acquires-market-leader-electric-cloud-creating-continuous-delivery-powerhouse) to strengthen their continuous delivery model.\nWith this acquisition we’re seeing the industry move in the direction that GitLab set forth.\nWe’ve seen Atlassian and GitHub follow our lead when we were the first to offer continuous\nintegration as part of code-hosting, and today with the CloudBees announcement we are seeing\na shift towards DevOps consolidation. Enterprises are demanding products that span a larger\npart of the DevOps lifecycle. This acquisition further validates GitLab's approach of a single,\nintegrated application for developers.\n\nGitLab focuses on the entire DevOps lifecycle. From the initial stages of your application creation\nprocess to the delivery of the software to market, GitLab helps you every step of the way.\nIn addition, instead of rearchitecting legacy software to be cloud native, GitLab was built to\nsupport cloud native deployments, helping enterprises embrace the cloud native way of developing software.\n\nWith GitLab you get a single application built from the ground up to provide a seamless experience\nacross every stage of the software development, delivery, and operations lifecycle.\nGitLab’s approach is to design components that fit, rather than taking separate tools that weren’t\ndesigned to work together and trying to integrate them. This approach ensures organizations\ncan increase cycle times and take advantage of more collaborative workflows.\n\n![GitLab's DevOps lifecycle](https://about.gitlab.com/images/blogimages/dev-ops-plan-to-monitor.png){: .medium.center}\n\nWatch how GitLab helps with everything from planning to monitoring here:\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/nMAgP4WIcno\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n*\u003Csmall>Note: This demo covers up to GitLab 11.3 – we are now on GitLab 11.9 and have shipped more features since this was recorded.\u003C/small>*\n\nWe invite you to get started with GitLab to see how we can help move your software development\nprocess between developer and operations teams. We value your feedback and look forward to\ncontinuing to lead forward the industry.\n",[995,680],{"slug":2222,"featured":6,"template":683},"industry-moving-to-single-application-for-devops","content:en-us:blog:industry-moving-to-single-application-for-devops.yml","Industry Moving To Single Application For Devops","en-us/blog/industry-moving-to-single-application-for-devops.yml","en-us/blog/industry-moving-to-single-application-for-devops",{"_path":2228,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2229,"content":2235,"config":2241,"_id":2243,"_type":17,"title":2244,"_source":18,"_file":2245,"_stem":2246,"_extension":21},"/en-us/blog/google-cloud-next-anthos-kubernetes",{"title":2230,"description":2231,"ogTitle":2230,"ogDescription":2231,"noIndex":6,"ogImage":2232,"ogUrl":2233,"ogSiteName":671,"ogType":672,"canonicalUrls":2233,"schema":2234},"Google Cloud Next: Doubling down on Kubernetes and multi-cloud","Everything you need to know from last week’s big event.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668514/Blog/Hero%20Images/multi-cloud-future.jpg","https://about.gitlab.com/blog/google-cloud-next-anthos-kubernetes","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Google Cloud Next: Doubling down on Kubernetes and multi-cloud\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Melissa Smolensky\"}],\n        \"datePublished\": \"2019-04-16\",\n      }",{"title":2230,"description":2231,"authors":2236,"heroImage":2232,"date":2238,"body":2239,"category":14,"tags":2240},[2237],"Melissa Smolensky","2019-04-16","\nLast week at Google Next we saw Google bet big on Kubernetes. Google announced Anthos,\na multi-cloud platform based on Kubernetes, as well as Cloud Run, Google Cloud’s commercial Knative offering.\nThe key technology at the center of these two big announcements is Kubernetes.\nAs [Janakiram MSV](https://twitter.com/janakiramm) stated in a [Forbes article](https://www.forbes.com/sites/janakirammsv/2019/04/14/everything-you-want-to-know-about-anthos-googles-hybrid-and-multi-cloud-platform/#68ffc6d05b66) in regards to Anthos,\n\n> The core theme of Anthos is application modernization. Google envisages a future where all enterprise applications will run on Kubernetes.\n\nAnd in his [New Stack article](https://thenewstack.io/how-google-cloud-run-combines-serverless-with-containers/) about Cloud Run,\n\n> Like the way it offered a managed Kubernetes service before any other provider, Google moved fast in exposing Knative through Cloud Run to developers.\n\nFor a quick overview of the news at Google Next, [Brandon Jung](https://twitter.com/brandoncjung),\nVP of Alliances at GitLab, gives a quick recap of the news and how it impacts GitLab. Take a look.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/teRaXAPbfoA\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nLaunched by Google in 2014 at the first DockerCon, Kubernetes has become the de facto standard\nfor container orchestration. This May, 12,000 people will gather at KubeCon Barcelona to\nlearn how to implement and use Kubernetes to drive forward cloud native application development within their organizations.\n\nHere at GitLab we embraced Kubernetes early on as well, and we are continuing to take our\ndedication further, putting the power of Kubernetes in the developer workflow.\nEven the CNCF uses GitLab to provide cross-project\ncontinuous integration and interoperability testing.\n\n## Kubernetes throughout every step of the software development lifecycle\n\n“By allowing people to quickly connect Kubernetes clusters to their projects we are helping many\nenterprises embrace the cloud native way of building applications,” says Sid Sijbrandij, CEO at GitLab.\n“By providing a single application we allow enterprise developer and operations teams to embrace\nKubernetes every step of the way in their software development process.\nWe’ve seen a large financial institution go from a single build every two weeks to over 1,000\nself-served builds a day using GitLab. It is wonderful to see the scale we can unlock for organizations\nby providing access to Kubernetes in the developer workflow.”\n\n## GitLab plus Kubernetes\n\nIf you are looking to get started using [Kubernetes with GitLab](/solutions/kubernetes/),\nyou can easily connect any existing Kubernetes cluster on any platform to GitLab by using\nGitLab’s native Kubernetes integration. GitLab even makes it easy to set up and configure new\nclusters with just a few clicks using the Google Kubernetes Engine (GKE) integration.\nOnce connected, teams can install managed applications like Helm Tiller, Ingress,\nand Prometheus to their cluster with a single click in the GitLab interface.\nConnected clusters are available as a deploy target from GitLab CI/CD and are monitored\nusing GitLab’s bundled Prometheus capabilities.\n\nWe love seeing the community embrace GitLab and Kubernetes.\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">getting back to grips with \u003Ca href=\"https://twitter.com/hashtag/GitLab?src=hash&amp;ref_src=twsrc%5Etfw\">#GitLab\u003C/a> CICD with \u003Ca href=\"https://twitter.com/hashtag/Terraform?src=hash&amp;ref_src=twsrc%5Etfw\">#Terraform\u003C/a> jobs and knocked up a \u003Ca href=\"https://twitter.com/hashtag/Kubernetes?src=hash&amp;ref_src=twsrc%5Etfw\">#Kubernetes\u003C/a> cluster for the runner! \u003Ca href=\"https://twitter.com/hashtag/devops?src=hash&amp;ref_src=twsrc%5Etfw\">#devops\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/devoops?src=hash&amp;ref_src=twsrc%5Etfw\">#devoops\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/nomorejenkins?src=hash&amp;ref_src=twsrc%5Etfw\">#nomorejenkins\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/SRE?src=hash&amp;ref_src=twsrc%5Etfw\">#SRE\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/GCP?src=hash&amp;ref_src=twsrc%5Etfw\">#GCP\u003C/a>\u003C/p>&mdash; Ferris Hall (@Ferrish07) \u003Ca href=\"https://twitter.com/Ferrish07/status/1106252265218703360?ref_src=twsrc%5Etfw\">March 14, 2019\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">I&#39;ve just posted a little experience report. I&#39;m now using \u003Ca href=\"https://twitter.com/hashtag/Kubernetes?src=hash&amp;ref_src=twsrc%5Etfw\">#Kubernetes\u003C/a>  to spread my build load, thanks to \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> and \u003Ca href=\"https://twitter.com/GCPcloud?ref_src=twsrc%5Etfw\">@GCPcloud\u003C/a>. \u003Ca href=\"https://t.co/KGQ9kyEEP5\">https://t.co/KGQ9kyEEP5\u003C/a>\u003C/p>&mdash; Paul Hicks (@tenwit) \u003Ca href=\"https://twitter.com/tenwit/status/1104828372197113856?ref_src=twsrc%5Etfw\">March 10, 2019\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"pl\" dir=\"ltr\">GitLab CI/CD &amp;&amp; Kubernetes by Bruno Fonseca \u003Ca href=\"https://t.co/ZDymOsbKfc\">https://t.co/ZDymOsbKfc\u003C/a>\u003C/p>&mdash; Paulo George Bezerra (@paulobezerr) \u003Ca href=\"https://twitter.com/paulobezerr/status/1108049894877659136?ref_src=twsrc%5Etfw\">March 19, 2019\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\nCover image by [Cody Schroeder](https://unsplash.com/@codyrs) on [Unsplash](https://unsplash.com/photos/L99UKlcUBJY?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)\n{: .note}\n",[1458,278,2141,1100,1059],{"slug":2242,"featured":6,"template":683},"google-cloud-next-anthos-kubernetes","content:en-us:blog:google-cloud-next-anthos-kubernetes.yml","Google Cloud Next Anthos Kubernetes","en-us/blog/google-cloud-next-anthos-kubernetes.yml","en-us/blog/google-cloud-next-anthos-kubernetes",{"_path":2248,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2249,"content":2255,"config":2262,"_id":2264,"_type":17,"title":2265,"_source":18,"_file":2266,"_stem":2267,"_extension":21},"/en-us/blog/gitlab-is-an-sca-contender",{"title":2250,"description":2251,"ogTitle":2250,"ogDescription":2251,"noIndex":6,"ogImage":2252,"ogUrl":2253,"ogSiteName":671,"ogType":672,"canonicalUrls":2253,"schema":2254},"Forrester names GitLab challenger in software composition","GitLab has been recognized by analysts as a challenger in Software Composition Analysis.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669950/Blog/Hero%20Images/security-cameras.jpg","https://about.gitlab.com/blog/gitlab-is-an-sca-contender","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab is named a Challenger in The Forrester Wave™: Software Composition Analysis, Q2 2019\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Cindy Blake\"}],\n        \"datePublished\": \"2019-04-12\",\n      }",{"title":2256,"description":2251,"authors":2257,"heroImage":2252,"date":2259,"body":2260,"category":14,"tags":2261},"GitLab is named a Challenger in The Forrester Wave™: Software Composition Analysis, Q2 2019",[2258],"Cindy Blake","2019-04-12","\n\nWhile GitLab is best known in the traditional DevOps space, we have also begun to grow out our expertise in application security, which may come as a [surprise to security professionals](https://www.linkedin.com/pulse/ciso-cheat-sheet-git-cindy-blake-cissp), who may not have encountered us previously. We may have started out focused on traditional developer tools, however, as GitLab has added capabilities to cover the entire Software Development\nLifecycle (SDLC), this now includes not only a market-leading [Continuous Integration](/blog/gitlab-leader-continuous-integration-forrester-wave/)\nsolution but also, more recently, integrated [application security testing built into the CI/CD pipeline](/solutions/security-compliance/).\nOur single, end-to-end application enables security testing that is tightly aligned to today’s\nrapid, [iterative cycles of DevOps](/solutions/security-compliance/) development and the modern\ninfrastructure that accompanies cloud native applications.\n\n## Who was included?\n\nFor The Forrester Wave™: Software Composition Analysis, Q2 2019, participating vendors were required to\nhave most of the following capabilities out of the box:\n- Ability to provide remediation advice on both open source license risk and vulnerabilities;\n- Ability to integrate into SDLC automation tools;\n- Ability to provide proactive vulnerability management;\n- Ability to edit and create policies; and\n- Ability to visually report on open source risk.\n\nParticipating vendors were also required to have more than $10M in revenue and have\ninterest from Forrester clients or relevance to them.\n\n## GitLab is a new challenger\n\nHaving only added security capabilities in December 2017, GitLab has been excluded from\nother analyst application security reports that only look at more established players.\nIn our first official security-oriented analyst evaluation, we are excited not only to get the\nword out about GitLab’s security capabilities, but also to have this opportunity for analyst\nfeedback and insight into how GitLab compares. We take to heart not only areas where we\nshine – but also where improvement is needed. With GitLab,\n“[everyone can contribute](/community/contribute/),” and the feedback gained from\nForrester is another valuable contribution. We also welcome [your participation](/community/contribute/) and invite you to help us\nunderstand what you would like to see as our security capabilities grow.\n\nBased on this analyst report and analyst interaction feedback, we are already addressing improvement opportunities in our\n[roadmap](/direction/secure/#upcoming-releases) and [vision](/direction/secure/#direction).\n\n**Check out our [complete SCA response](/analysts/forrester-sca/) for links to specific updates and response comments.**\n\nAs a company dedicated to releasing incrementally, delivering first on breadth and then\non depth, it is not uncommon for GitLab to initially place in more of a challenger position,\nas our feature set generally does not have the same maturity as established players in the space.\nHowever, when GitLab enters a space, we do so boldly, with clear intentions and a solid strategy.\nGitLab’s strategy for application security testing and software composition analysis focuses\nmore equally on both the developer and the security professional than traditional solutions.\nYou will find some areas in strategy where we were not scored as highly as we believe we\nshould be, due to our more aggressive focus on development.\n\n## Updates since the evaluation\n\nGitLab has shipped a [major new release every month](/releases/categories/releases/)\nfor 90 consecutive months. Forrester evaluated GitLab 11.6 for this report while versions\n[11.7](/releases/2019/01/22/gitlab-11-7-released/), [11.8](/releases/2019/02/22/gitlab-11-8-released/), and\n[11.9](/releases/2019/03/22/gitlab-11-9-released/) have since been released. You will find several features\nthat Forrester felt were lacking have already been added, including improvements to the\nsecurity dashboard, additional languages added to SAST scanning, and secrets detection.\nWhen using Forrester’s scoring tool, be sure to adjust the criteria for our current capabilities.\nA list of what’s been added since Forrester’s evaluation can be found on our [complete SCA response](/analysts/forrester-sca/).\n\n## Forrester’s key takeaway: “Remediation, policy management, and reporting are key differentiators”\n\nForrester says, “As developers continue to use open source to accelerate the release of new\napplication functionality, remediation, policy management, and reporting will dictate which\nproviders will lead the pack. Vendors that can provide developers with remediation advice\nand even create patches position themselves to significantly reduce business risk.”\n\nThis takeaway is closely aligned with GitLab's [vision for application security testing](/direction/secure/#direction)\nand our work in progress for [auto remediation](https://gitlab.com/groups/gitlab-org/-/epics/133). While not available in the evaluated version (11.6), today’s GA release, (11.9), [can detect a more current patch available](/releases/2019/03/22/gitlab-11-9-released/#vulnerability-remediation-merge-request) and\nenable the developer to create a [new branch and apply the patch](https://docs.gitlab.com/ee/user/application_security/security_dashboard/#create-a-merge-request-from-a-vulnerability)\nwith one click. Upcoming versions will [automatically run the pipeline and present the results](https://gitlab.com/groups/gitlab-org/-/epics/275) to the developer to accept or reject.\nBy automating remediations that are readily apparent, developers and security can focus on\nvulnerabilities whose remediation is not as straightforward.\n\nThe fact that GitLab is a [single application](/) for the entire SDLC enables us to take\nremediation even further – actually running the pipeline in a separate branch,\neven [measuring the performance impact](https://gitlab.com/gitlab-org/gitlab-ee/issues/9382)\nof the patch. We isolate the cause and effect: the developer makes a code change, that code is\ntested and they see the results before merging the code with others’. It also allows us to do [Dynamic scanning](https://docs.gitlab.com/ee/user/application_security/dast/) in the same manner, before the\ncode is merged with anyone else’s. We do this by spinning up a\n[review app](https://docs.gitlab.com/ee/ci/review_apps/) in the pipeline report.\nThis fully functioning app reflects the developer’s code changes and can be used for user testing,\nperformance testing, and dynamic app security scanning.\n\n## GitLab's advice\n\nWe believe GitLab is ideal for enterprises who are:\n\n* Using GitLab for CI/CD.\n* Practicing iterative development via DevOps.\n* Using containers and serverless.\n\nFor the enterprise that has not invested in app sec tools, GitLab can quickly provide\nscanning, often necessary for regulatory compliance, with a single application.\nGitLab offers SAST, DAST, Dependency, Container Scanning, and License Management [with one app](/stages-devops-lifecycle/application-security-testing/) – no need to evaluate and buy from multiple vendors, then stitch together integration with the DevOps toolchain. In fact, GitLab customer, [Glympse Inc.](https://glympse.com/),\nstood up 40 repos with automated security testing, using all of the GitLab scans, in less time\nthan they could have installed just the individual tools – and as a bonus, they impressed their\nauditors with their process.\n\nFor the enterprise already deeply invested in traditional app sec tools, GitLab affords a\nbroader and [earlier scanning effort](/solutions/security-compliance/), using a tool that\ndevelopers are already using. GitLab can scan every code change, much the way that\nevery airplane passenger gets scanned through security. Save the deeper scans for\nlater and/or less frequent evaluation by the security team. Consider using GitLab on select\nprojects to experience the more efficient workflow and potentially reduce your scanning costs from costlier tools.\n\n## Our response\n\n We invite you to see our [complete response](/analysts/forrester-sca/), and as always, welcome\n [your contributions](/community/contribute/)!\n\n Cover image by [Scott Webb](https://unsplash.com/@scottwebb) on [Unsplash](https://unsplash.com/photos/yekGLpc3vro)\n{: .note}\n",[1458,890,804,680,994,954],{"slug":2263,"featured":6,"template":683},"gitlab-is-an-sca-contender","content:en-us:blog:gitlab-is-an-sca-contender.yml","Gitlab Is An Sca Contender","en-us/blog/gitlab-is-an-sca-contender.yml","en-us/blog/gitlab-is-an-sca-contender",{"_path":2269,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2270,"content":2276,"config":2281,"_id":2283,"_type":17,"title":2284,"_source":18,"_file":2285,"_stem":2286,"_extension":21},"/en-us/blog/khosla-ventures-gitlab-meeting",{"title":2271,"description":2272,"ogTitle":2271,"ogDescription":2272,"noIndex":6,"ogImage":2273,"ogUrl":2274,"ogSiteName":671,"ogType":672,"canonicalUrls":2274,"schema":2275},"Acquisitions, growth curves, and IPO strategies: A day at Khosla Ventures","A CEO Shadow’s take on GitLab’s annual investor meeting with Khosla Ventures.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671620/Blog/Hero%20Images/khosla-ventures-meeting.jpg","https://about.gitlab.com/blog/khosla-ventures-gitlab-meeting","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Acquisitions, growth curves, and IPO strategies: A day at Khosla Ventures\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Erica Lindberg\"}],\n        \"datePublished\": \"2019-04-08\",\n      }",{"title":2271,"description":2272,"authors":2277,"heroImage":2273,"date":2278,"body":2279,"category":14,"tags":2280},[1958],"2019-04-08","\n\nWhen I accepted the opportunity to participate in GitLab’s [CEO Shadow program](/handbook/ceo/shadow/), I knew exactly what to expect. In typical GitLab fashion, there was already a handbook page detailing the goal, the format, and the expectations of the program. Our co-founder and CEO, [Sid Sijbrandij](https://twitter.com/sytses), keeps his calendar [public by default](https://handbook.gitlab.com/handbook/values/#public-by-default) to GitLab team-members, so I was able to get a good understanding of the meetings I’d be attending, who’d be present, and what would be discussed. What I couldn’t have predicted is how an annual meeting between Sid and venture capitalist [Vinod Khosla](https://en.wikipedia.org/wiki/Vinod_Khosla) would turn out. \n\n## Skeptical about in-person meetings \n\nGitLab is an [all-remote](/company/culture/all-remote/) company. We don’t have any offices, and we communicate and collaborate via Zoom, Slack, Google docs, and GitLab. To me, this is normal, and, as an introvert, my biggest concern with participating in the CEO program was the energy drain I knew I would experience living in downtown San Francisco for three weeks and meeting with people in person. Luckily, even our CEO conducts most of his business remotely. \n\nHowever, many of our investors and board members are still, what I call, remote shy, and tend to default to in-person meetings. This is how I found myself traveling an hour and a half south to Menlo Park to meet with one of our investor groups, Khosla Ventures, for their annual meeting with Sid. Khosla Ventures (KV) is a venture capitalist firm founded by Vinod Khosla, co-founder of Sun Microsystems. KV and GitLab have a long history: They invested in our seed round, led our Series A, and has been a part of every fundraising round since. You could say Khosla Ventures is a big fan of GitLab, and the feeling is mutual. \n\n“I’m not sure what we’re going to get out of this. Khosla is the only investor that can get me to travel an hour and a half to meet in person, every year, without an agenda,” Sid told me. \n\nWhile I sincerely appreciate Sid’s dedication to all-remote, to [efficiency](https://handbook.gitlab.com/handbook/values/#efficiency), and to keeping things simple, I found his sentiment surprising. To me, this was a big deal. We were going to spend the day with some of the industry’s brightest minds in Silicon Valley. However, I equally appreciated his emphasis on the lack of agenda. At GitLab, [we work asynchronously](/handbook/communication/) and agendas allow people to prepare ahead of time so meetings can be interactive, discussion-oriented, and productive. A meeting without an agenda is unpredictable and can be a waste of time. \n\n## Khosla Ventures \n\nPulling up to Khosla Ventures in Menlo Park was a refreshing change of scenery from downtown San Francisco where I’d been staying. The mid-century modern style building is tucked behind lush greenery, and as soon as you enter you are unexpectedly greeted by quirky grape purple walls. Inside Khosla Ventures feels more like a creative incubator than an investor firm. \n\nWe first met with Bruce Armstrong, operating partner at Khosla Ventures and a GitLab board member. Top of mind for everyone was the board. With our plans to go public, we needed to hire new board members with public company experience. Earlier that week, I had the opportunity to sit in on a few conversations with potential board members and now I was getting the chance to hear how they were evaluating the candidates. Across the candidates, a pattern was emerging: They all had experience firing CEOs. For some CEOs this would be worrisome. For Sid, it appeared to be a point of pride: He wanted to hire the best people that were going to make the best decisions for the company in the long run. Period. \n\n## The brainstorm \n\nNext we met with Vinod, Bruce, and investment partners Brian Byun and Sven Strohband for a company brief and brainstorm session. Sid began with an update on the financials, and detailed our massive growth and expansion both in terms of people and product. There were no slides presented. Instead, Sid used our website as a visual aid. Nearly every question or discussion point was first addressed with a Google search to pull up the appropriate GitLab web page to reference. When discussing the progress of the product, he defaulted to our [homepage](https://about.gitlab.com/), where our product team has meticulously detailed our current and future feature set. During a discussion about competitors and potential partners, our [DevOps tools page](/competition/) was referenced for a single page view of all our competitors in context of exactly how we compete. \n\nI’ve been working at GitLab for two and a half years as a content writer on our marketing team and at times have been extremely frustrated with our marketing website—the content on it, how it’s organized, what we’re presenting, etc. It doesn’t look or operate in a way I’m familiar with so my instinct was to not trust it. But nothing we do at GitLab is “normal,” and witnessing our CEO use the website as a single source of public truth to inform our investors is just one example of what it means to be a [transparent company](https://handbook.gitlab.com/handbook/values/#transparency). We don’t hide behind “marketing speak” on our public facing website or develop behind closed walls. We tell the same story and share the same information with the company, the customers, the community, and yes, even the investors. \n\nWhile our website doesn’t have the same flashy graphics and pithy marketing copy I’m used to, it speaks the truth even when the truth makes people a little nervous about how we’re going to pull this off. We have an incredibly ambitious product roadmap to be built by an all remote team in a short amount of time.\n\n### Acquisition strategy\n\nSomething I’ve found surprising throughout my entire CEO Shadow experience is how external people underestimate GitLab’s ability to deliver on ambitious plans. The conversation often defaults to, “I see what you’re trying to do, but realistically, which categories are you really able to compete in?” And, unfalteringly Sid answers: all of them. There are some awkward laughs, and the question is reframed to “What part of the product are most of your customers using today?” We move on.\n\nThe conversation with Vinod Khosla was similar but different in tone. Vinod and the rest of the team were skeptical of our ambition but perhaps more attuned to Sid’s commitment to the direction and vision and thus more willing to dig into how we get there instead of why we won’t. \nPotential partnerships to help fill some of our missing functionality were discussed, but it was apparent that our plan was quickly encroaching into competitive territory among the leading contenders. \n\nInstead, there’s an acquisition strategy. To achieve our goal to deliver a single application for the entire DevOps lifecycle that is best-of-breed in every category, we are going to need some help and make some acquisitions. We already acquired [Gitter](/blog/gitter-acquisition/) and Gemnasium in order to enter into the ChatOps and security space more quickly than if we tried to build it all from scratch.\n\nNaturally, our acquisition strategy and offer was already [drafted and public in our handbook](/handbook/acquisitions/). This enabled the conversation to focus on thinking through potential companies and specific areas of our product where we may want to augment the productivity of our soon-to-be 500 internal developers with an acquisition. \n\n### The IPO date  \n\nGitLab [plans to go public on November 18, 2020](/company/strategy/#sequence) and prefers to remain an independent company with no plans of being acquired. While Vinod made it clear it’s strange to pick and make public an IPO date, at GitLab, we are driven by results and deadlines and even an IPO is no exception to the rule. The route we chose to go—traditional or direct listing—was another topic. \n\nDirect listings are historically uncommon. It wasn’t until [Spotify went public via a direct listing](https://techcrunch.com/2018/02/28/spotify-has-filed-to-go-public/) in 2018 that there was even a precedent for tech companies. Now, Slack and potentially Airbnb are rumored to be next, officially [making direct listings *a thing*](https://www.bloomberg.com/opinion/articles/2019-01-11/direct-listings-are-a-thing-now). As for GitLab, like everything else, it will come down to what’s right for us. I can report in good faith all options are being examined carefully and closely. The takeaway here is that while some might think it’s crazy of GitLab to set this ambitious goal, and Vinod might think it’s crazy to set a specific date, one thing is for sure: As a company, we’re ready and already thinking about what’s next. \n\n### Growth curves \nYou know you’re at a successful company when the VCs aren’t focused on how you’re going to meet your short-term goals or current [product vision](/direction/#vision) but are excited about the long-term vision. \n\n“Where is GitLab five years from now?” Vinod asked the room, as he stood up and drew a chart with three staggered S curves on it. He pointed to the first one, “This is where you are now.” Pointing to the other two he asked, “what comes next?” \n\nHe explained how Square started as a payment device, then to a point-of-sale system, found success, and instead of stagnating, entered into a new market via their Square Capital and Cash App offerings. You see similar trajectory with Facebook entering into the devices space with their newest Portal system. What was it going to be for GitLab? It seemed like an outrageous question to ask considering we still have this huge vision to complete but, unsurprisingly, Sid had thought about this and some things are already in the making. \n\n#### Growth curve #1: Meltano\n\n[Meltano](/blog/hey-data-teams-we-are-working-on-a-tool-just-for-you/) (model, extract, load, transform, analyze, notebook, orchestrate) is a start-up within GitLab aimed at becoming a complete solution for data teams. Similar in concept to GitLab, the goal is to create a single application for the entire data science lifecycle. The mission is similar as well: Make analytics accessible to everyone. If successful, Meltano will begin to bridge the gap between systems and data and bring the GitLab vision of everyone can contribute to even more people. \n\n#### Growth curve #2: Product assisted digital transformation  \n\nThe next idea was a real show stopper: product assisted digital transformation. Think code review as a service but expanded to culture, infrastructure, management, pipelines, process, and integrated directly into the product instead of being an outside service. Imagine if you could bootstrap and up-level your engineering teams’ skills with a product that comes with engineering best practices and support out-of-the-box. \n\n## Safe for another year\n\nAs it turns out, agenda-less meetings at Khosla Ventures can provide a ton of value. We walked out of Khosla’s office with a healthy dose of validation and criticism, and our brains buzzing with new horizons of potential to explore. I was already convinced GitLab is a great company to work for, but my experience at Khosla opened my eyes to just how unique our opportunity is. And, the on-site, half day, agenda-less meeting is good for another year. \n\nCover image by [Reza Rostampisheh](https://unsplash.com/@rezarp) on [Unsplash](https://unsplash.com/photos/-hcCm0kIaSg)\n{: .note}\n",[890,1437,891],{"slug":2282,"featured":6,"template":683},"khosla-ventures-gitlab-meeting","content:en-us:blog:khosla-ventures-gitlab-meeting.yml","Khosla Ventures Gitlab Meeting","en-us/blog/khosla-ventures-gitlab-meeting.yml","en-us/blog/khosla-ventures-gitlab-meeting",{"_path":2288,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2289,"content":2295,"config":2300,"_id":2302,"_type":17,"title":2303,"_source":18,"_file":2304,"_stem":2305,"_extension":21},"/en-us/blog/google-next-post",{"title":2290,"description":2291,"ogTitle":2290,"ogDescription":2291,"noIndex":6,"ogImage":2292,"ogUrl":2293,"ogSiteName":671,"ogType":672,"canonicalUrls":2293,"schema":2294},"What to check out at Google Cloud Next 2019","Support women who code by stopping by our booth, learn from a host of GitLab experts, and more.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679235/Blog/Hero%20Images/cloud-native-predictions-2019.jpg","https://about.gitlab.com/blog/google-next-post","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"What to check out at Google Cloud Next 2019\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mayank Tahilramani\"}],\n        \"datePublished\": \"2019-04-04\",\n      }",{"title":2290,"description":2291,"authors":2296,"heroImage":2292,"date":2297,"body":2298,"category":14,"tags":2299},[2000],"2019-04-04","\n\nIt’s that time of the year to indulge in all things innovative and new at Google Cloud Next 2019.\nAs an attendee last year, I was excited to learn about Google’s vision on ‘bringing the cloud to you’\nwith a focus on hybrid cloud and unveiling of GKE On-Prem. GitLab’s partnership with Google\nhas grown a lot since we launched our quick and easy [integration with GKE](/partners/technology-partners/google-cloud-platform/)\nlast year and we hope you will come out to see some of the new things we have going on.\n\n### Don't be shy, come say hi 👋\n\nCome visit us at our booth (#S1607), get scanned, and GitLab will donate $5 to your\ncharity of choice: [Rail Girls](http://railsgirls.com/) or [Django Girls](https://djangogirls.org/).\nThis also enters you for a chance to win an iPad Pro!\n\nWhile you're there, we would love to showcase and talk about:\n\n* GitLab’s [AutoDevOps](https://docs.gitlab.com/ee/topics/autodevops/) functionality.\n* Using GitLab to [secure your applications](/stages-devops-lifecycle/secure/).\n* How to get started with [GitLab for GCP on GKE](/partners/technology-partners/google-cloud-platform/) and GKE On-Prem.\n* GitLab [Serverless with Knative](/topics/serverless/) and [Cloud Run](https://cloud.google.com/blog/products/serverless/announcing-cloud-run-the-newest-member-of-our-serverless-compute-stack),\n* ... and much more!\n\n### Sit back, relax, and listen to some of our experts live\n\n* Check out [Brandon Jung](/company/team/#brandoncjung) (VP of Alliances) discuss [GitLab’s move from Azure to GCP](https://cloud.withgoogle.com/next/sf/sessions?session=ARC207) which includes a technical\noverview of the migration as well as lessons learned. Check out our customer case study [here](https://cloud.google.com/customers/gitlab/).\n\n* Come listen to [Kathy Wang](/company/team/#wangkathy) (Senior Director of Security) tell our journey [Towards Zero Trust at GitLab.com](https://cloud.withgoogle.com/next/sf/sessions?session=SEC220) along with key lessons learned. ([You can read more about the evolution of Zero Trust here](/blog/evolution-of-zero-trust/).)\n\n* Learn something new with [Daniel Gruesso](/company/team/#danielgruesso) (Product Manager) showcasing GitLab’s serverless functionality to [Run a consistent serverless platform anywhere with Kubernetes and Knative](https://cloud.withgoogle.com/next/sf/sessions?session=HYB218).\n\n### Get hands on with Qwiklabs\n\nLearn from [Dan Gordon](/company/team/#dbgordon) (Senior Technical Marketing Manager) at our [Spotlight Lab: Introduction to GitLab on GKE](https://cloud.withgoogle.com/next/sf/sessions?session=301353-133371). Here you will have the chance to deploy GitLab on GKE, migrate a GitHub repository into a GitLab Project, and set up a CI/CD pipeline with AutoDevOps to deploy your code to GKE.\n\nSo stop by and say hello!\n\nWe are proud to be a sponsor at this event and would love to see as many of you at our booth (S1607) to discuss GitLab [Serverless](/topics/serverless/) with Knative and Cloud Run, GitLab’s integration with GKE, GitLab AutoDevOps for CI/CD, Security functionalities, as well as GitLab’s support for GKE On-Prem.\n",[826,1059,110,995,232,804,994,954],{"slug":2301,"featured":6,"template":683},"google-next-post","content:en-us:blog:google-next-post.yml","Google Next Post","en-us/blog/google-next-post.yml","en-us/blog/google-next-post",{"_path":2307,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2308,"content":2314,"config":2319,"_id":2321,"_type":17,"title":2322,"_source":18,"_file":2323,"_stem":2324,"_extension":21},"/en-us/blog/why-gitlab-ci-cd",{"title":2309,"description":2310,"ogTitle":2309,"ogDescription":2310,"noIndex":6,"ogImage":2311,"ogUrl":2312,"ogSiteName":671,"ogType":672,"canonicalUrls":2312,"schema":2313},"Why GitLab CI/CD?","With GitLab’s out-of-the-box CI/CD, you can spend less time maintaining and more time creating.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678657/Blog/Hero%20Images/ci-cd-competitive-campaign-blog-cover.png","https://about.gitlab.com/blog/why-gitlab-ci-cd","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Why GitLab CI/CD?\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Chrissie Buchanan\"}],\n        \"datePublished\": \"2019-04-02\",\n      }",{"title":2309,"description":2310,"authors":2315,"heroImage":2311,"date":2316,"body":2317,"category":14,"tags":2318},[2137],"2019-04-02","\nDevOps speed is a competitive advantage for businesses. According to DORA, [companies that deploy more frequently perform better in the market](https://cloudplatformonline.com/2018-state-of-devops.html). Everyone wants to be able to do their jobs better and deploy more frequently, but as the organization grows, speed bumps keep getting in the way:\n\n*   **Too many integration points** – Connecting [CI/CD](/topics/ci-cd/) to all of the different tools in a [DevOps toolchain](/topics/devops/) is confusing and keeps adding more steps and more points of failure to the process.\n*   **Brittle tools** – We're spending more time maintaining and updating these tools than actually creating new features.\n*   **Slow modernization** – We want to leverage [microservices](/topics/microservices/) and [cloud native](/topics/cloud-native/) development, but we spend too much time putting out fires.\n\nWith these speed bumps come complicated workflows, lack of pipeline visibility, and confusion about processes. With the Total Cost of Ownership (TCO) going up as more resources go to maintenance, teams can't afford to innovate. As organizations scale, these complexities only get worse.\n\nThat sounds exhausting, doesn't it?\n\n## Current CI/CD tools\n\nAt GitLab, we love transparency so much we made it [one of our core values](https://handbook.gitlab.com/handbook/values/#transparency). It's also why [we list all other DevOps tools on our website](/competition/) (no, really). We think open and direct communication is the fastest way to get the feedback you need to make the right decisions. For DevOps teams, the right tools should make things easier but we've found that _more_ doesn't always mean _better_.\n\n### High maintenance\n\nIntegrating CI/CD tools with the rest of your toolchain can get complicated – managing and updating these tools regularly isn't any easier. Many teams rely on tool experts just to keep everything running smoothly.\n\n### Lack of cloud native compatibility\n\nAs more organizations look to leverage microservices and [cloud native](/topics/cloud-native/) development, they'll need CI/CD tools that support modern architecture. With some CI/CD platforms, teams still need additional plugins to connect to Kubernetes or a container registry. Teams using legacy CI/CD tools will need to upgrade in order to gain those cloud native capabilities.\n\n### Toolchain complexity\n\nToolchains sometimes have too much in common with [Rube Goldberg devices](https://www.youtube.com/watch?v=qybUFnY7Y8w). Adding on more applications, more platforms, and more handoffs increases complexity that slows down teams. Add to that the maintenance, plugin, and upgrade requirements to manage these separate tools, and productivity gets harder.\n\n## Why teams love GitLab CI/CD\n\nCI/CD tools should make engineers' lives easier by giving them greater visibility into their pipelines, without burdening them with complicated integrations and plugin maintenance. GitLab CI/CD is designed to be simple so teams can start using it right away.\n\n### Easy to use\n\nGitLab uses a YAML configuration that any developer can understand so you can build pipelines faster.\n\n### Cloud native CI/CD\n\nWith its built-in container registry and Kubernetes integration, GitLab supports cloud native development.\n\n### Simple architecture\n\nOne integrated application with one set of permissions.\n\n### Fast and efficient\n\nWith autoscaling runners, developers no longer have to wait on builds, and VMs spin up or down automatically to process queues at a lower cost.\n\n### Everything in one place\n\nGitLab CI/CD is already built into the same application that contains source code management, planning, monitoring, etc.\n\nAs a single application for the entire DevOps lifecycle, everything is in one conversation and visible across teams. With GitLab's out-of-the-box CI/CD, you can spend less time maintaining and more time creating. It's CI/CD that _just works_.\n\nWe invite you to explore GitLab CI/CD for yourself, and see why we were rated #1 in the Forrester CI Wave™.\n\n[Explore GitLab CI/CD](/solutions/continuous-integration/)\n{: .alert .alert-gitlab-purple.text-center}\n",[110,995,783],{"slug":2320,"featured":6,"template":683},"why-gitlab-ci-cd","content:en-us:blog:why-gitlab-ci-cd.yml","Why Gitlab Ci Cd","en-us/blog/why-gitlab-ci-cd.yml","en-us/blog/why-gitlab-ci-cd",{"_path":2326,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2327,"content":2333,"config":2340,"_id":2342,"_type":17,"title":2343,"_source":18,"_file":2344,"_stem":2345,"_extension":21},"/en-us/blog/zeit-launches-now-for-gitlab",{"title":2328,"description":2329,"ogTitle":2328,"ogDescription":2329,"noIndex":6,"ogImage":2330,"ogUrl":2331,"ogSiteName":671,"ogType":672,"canonicalUrls":2331,"schema":2332},"ZEIT launches Now for GitLab","This first-class integration can automatically deploy any GitLab project containing a static or dynamic website to ZEIT's global CDN.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670498/Blog/Hero%20Images/gitlab-zeit-cover.png","https://about.gitlab.com/blog/zeit-launches-now-for-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"ZEIT launches Now for GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sarup Banskota\"},{\"@type\":\"Person\",\"name\":\"Arunoda Susiripala\"}],\n        \"datePublished\": \"2019-04-01\",\n      }",{"title":2328,"description":2329,"authors":2334,"heroImage":2330,"date":2337,"body":2338,"category":14,"tags":2339},[2335,2336],"Sarup Banskota","Arunoda Susiripala","2019-04-01","\n\n**[ZEIT Now](https://zeit.co/now) is a [serverless](/topics/serverless/) deployment platform that takes the burden out of configuring the cloud**. Projects deploy to Now instantly, scale automatically, and require zero supervision.\n\n### Why we created Now\n\nWe believe that deployments should be fast, simple, reliable, and cost-effective. We want to **enable developers to focus on their core applications**, and not on configuring DNS, scalability, or other infrastructure. That's why we created Now – to allow you to just push code, while we take care of the infrastructure.\n\nGit is popular among us developers – our code is often backed by a Git repository hosted on GitLab or GitHub. For most of us, our workflow involves developing features in distinct branches, which get merged into a stable master branch (or its equivalent). For most teams, the strategy around deployments follows the same style – we first stage our work on feature-specific URLs, and then finally merge them into a production URL.\n\n**We want Now to enhance the developer workflow**. By sticking close to the source code, and integrating with code collaboration tools we love, we are helping enhance the code review and release process.\n\n### Now for GitLab\n\nIn this post, we showcase our most requested feature,  [Now for GitLab](https://zeit.co/gitlab). With this first-class GitLab integration, you can automatically deploy any GitLab project, and enjoy core Now features, including global CDN, Anycast DNS, HTTPS support, and DDOS Protection.\n\n### Benefits\n\nOnce set up, **Now builds and deploys automatically, for every commit you push to GitLab**. Each such deployment gets a unique URL and we keep all your deployments alive. Thanks to our usage-based pricing model, you only pay for actual invocations and don't have to worry about unused deployments.\n\n![GitLab commit](https://about.gitlab.com/images/blogimages/zeit-now/gitlab-commit.png){: .medium.center}\n\n*\u003Csmall>Being able to test a unique deployment for every commit allows you to merge changes to your project with confidence.\u003C/small>*\n\n**All deployments made within a merge request are listed chronologically on its page**. They can be tested at any time, allowing your team to try out changes as progress is made, and to iron out concerns before pushing a new feature to production.\n\n![track deployments on MR](https://about.gitlab.com/images/blogimages/zeit-now/deployments-mr.png){: .medium.center}\n\n*\u003Csmall>You can track all the deployments made towards a specific feature on its merge request page.\u003C/small>*\n\n**Every merge request receives a unique URL** based on its branch name. The URL points to the latest deployment made on the merge request branch. You can share the URL with your team or even publicly, for beta testing your changes.\n\n![staging](https://about.gitlab.com/images/blogimages/zeit-now/gitlab-staging.png){: .medium.center}\n\n*\u003Csmall>The unique URL for the merge request acts as a staging link that can be passed around to anybody in the team who is interested in tracking development updates on a specific feature.\u003C/small>*\n\n**Merged MRs are automatically deployed to production**. Once deployed, we automatically alias your deployment to the production domain name.\n\n![alias](https://about.gitlab.com/images/blogimages/zeit-now/gitlab-alias.png){: .medium.center}\n\n*\u003Csmall>Once a merge request lands on the [default branch](https://docs.gitlab.com/ee/user/project/repository/branches/default.html), it is automatically built, deployed, and aliased to the chosen production domain names.\u003C/small>*\n\n## Getting started with Now for GitLab\n\nWe offer a **powerful free tier** which allows you to deploy a small-scale production app without requiring a credit card. To get started, visit the [**ZEIT Sign up page**](https://zeit.co/signup) and click the `Continue with GitLab` button. When GitLab requests an authorization, click `Authorize`.\n\n![sign up for Now for GitLab](https://about.gitlab.com/images/blogimages/zeit-now/sign-up-zeit-gitlab.png){: .center}\n\n*\u003Csmall>By signing up for ZEIT with GitLab, you automatically connect Now with your GitLab account, making it easier to link to your GitLab projects.\u003C/small>*\n\nOnce you complete the authorization, you can [**link any existing GitLab project**](https://zeit.co/new) with your ZEIT account, or create a new one based on our [Quick Start templates](https://zeit.co/new).\n\n![quick start templates](https://about.gitlab.com/images/blogimages/zeit-now/templates.png){: .medium.center}\n\n*\u003Csmall>The Quick Start templates save you time from setting up boilerplate code for several popular projects, such as Next.js, Vue, or Hugo.\u003C/small>*\n\nPlease note that if you already have a ZEIT account, you can set up the connection to GitLab on your [ZEIT account page](https://zeit.co/account).\n\n## Prepare your project for Now\n\nTo be able to successfully process a GitLab project, Now needs to be provided with build and deployment information. This information can be provided via a [`now.json` configuration file](https://zeit.co/docs/v2/deployments/configuration).\n\nFor example, if you are interested in deploying Node.js serverless code, the `now.json` file could be framed as follows:\n\n    {\n      \"name\": \"GitLab Project\",\n      \"alias\": [\"gitlab-project.now.sh\"],\n      \"builds\": [{\n        \"src\": \"index.js\",\n        \"use\": \"@now/node\"\n       }]\n    }\n\n*\u003Csmall>[now.json](https://zeit.co/docs/v2/deployments/configuration) allows us to provide information about building, deploying, and aliasing a GitLab project with Now.\u003C/small>*\n\nMore information on configuring `now.json`, including all supported options, is available on its [docs page](https://zeit.co/docs/v2/deployments/configuration). We support building and deploying many popular technologies through our open-sourced official [Builders](https://zeit.co/docs/v2/deployments/builders/overview), including Python, Rust, PHP, and Go. We welcome your contributions toward new Builders to support your favorite technology. To help with that, we also have a [guide](https://zeit.co/docs/v2/deployments/builders/developer-guide/) in place that walks through the process of creating and publishing a Builder.\n\n### Custom domain names and Instant Rollbacks\n\nWhen a GitLab merge request is merged into the [default branch](https://docs.gitlab.com/ee/user/project/repository/branches/default.html), [Now for GitLab](https://zeit.co/gitlab) instantly triggers a new deployment. As soon as that deployment completes, it is **automatically aliased to the production domain names** that were specified through the `alias` property in `now.json`.\n\nWhen you deploy with Now, **we map all your code and configuration to a single, unique URL**. Now only performs a new build when the underlying code receives changes.\n\nIf you trigger a revert within GitLab on the [default branch](https://docs.gitlab.com/ee/user/project/repository/branches/default.html), the code and configuration perfectly match a deployment URL Now previously had. This allows us to perform the alias with the previous URL within milliseconds, thus providing an **Instant Rollback**.\n\n### Final words\n\nOur mission at ZEIT is to make the cloud accessible to everyone. The [Now for GitLab](https://zeit.co/gitlab) integration was one of our most requested features, and we are thrilled to make it available to you.\n\nPlease give [Now for GitLab](https://zeit.co/gitlab) a try, and let us know what you think. Our Twitter is [@zeithq](https://twitter.com/zeithq).\n",[110,232],{"slug":2341,"featured":6,"template":683},"zeit-launches-now-for-gitlab","content:en-us:blog:zeit-launches-now-for-gitlab.yml","Zeit Launches Now For Gitlab","en-us/blog/zeit-launches-now-for-gitlab.yml","en-us/blog/zeit-launches-now-for-gitlab",{"_path":2347,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2348,"content":2352,"config":2357,"_id":2359,"_type":17,"title":2360,"_source":18,"_file":2361,"_stem":2362,"_extension":21},"/en-us/blog/six-more-months-ci-cd-github",{"title":2349,"description":1701,"ogTitle":2349,"ogDescription":1701,"noIndex":6,"ogImage":1328,"ogUrl":2350,"ogSiteName":671,"ogType":672,"canonicalUrls":2350,"schema":2351},"Extending free use of CI/CD for GitHub on GitLab.com","https://about.gitlab.com/blog/six-more-months-ci-cd-github","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Extending free use of CI/CD for GitHub on GitLab.com\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"William Chia\"}],\n        \"datePublished\": \"2019-03-21\",\n      }",{"title":2349,"description":1701,"authors":2353,"heroImage":1328,"date":2354,"body":2355,"category":14,"tags":2356},[1707],"2019-03-21","\n\nUPDATE: We've [extended again until Mar. 22, 2020](/blog/ci-cd-github-extended-again/)\n\n[CI/CD is one of the best parts of GitLab](/topics/ci-cd/). Our robust feature set and powerful Runner architecture have earned us some strong industry accolades. While we believe using GitLab end to end as a single application is the best experience, we also believe in [playing well with others](/handbook/product/gitlab-the-product/#plays-well-with-others) so that you can use the tools you want without vendor lock-in. In this spirit, we built [CI/CD for external repos](https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/) and [CI/CD for GitHub](/solutions/github/) to allow you to host your code repositories on GitHub.com, GitHub Enterprise, BitBucket, or any Git server, while using GitLab CI/CD to build, test, and deploy your code.\n\nWe decided to extend the deadline for using CI/CD for external repos, including CI/CD for GitHub, until **Sep. 22, 2019**. You’ll now have an additional six months to enjoy CI/CD for external repos as a [Free or Bronze](/user on GitLab.com. This feature will continue to be part of the [Premium tier](/pricing/premium/) for GitLab Self-managed.\n\n## Always free for open source\n\nThis extension applies to private repos hosted on GitLab.com. As part of our commitment to open source, public projects get [all the features of Gold for free](/pricing/). GitLab CI/CD for GitHub works by automatically mirroring your repos to GitLab.com. As such, if you have a public project on GitHub, it will also be public on GitLab so you can always take advantage of GitLab CI/CD for public projects.\n\n## Why we're extending the offer\n\nIn full [transparency](https://handbook.gitlab.com/handbook/values/#transparency), there are a few reasons we decided on an extension.\n\nThe first reason is that we didn’t want to ruin anyone’s day by shutting off functionality without fair warning. We don’t currently have all of the instrumentation in place to give us confidence that we can appropriately notify users, so we'll spend some time in the coming months to build this ability. We want to give ample opportunity for everyone currently enjoying the functionality on GitLab.com Free and Starter to make the choice to upgrade or migrate.\n\nThe second reason is the changing CI/CD market landscape. With recent developments – like the [consolidation of the CI/CD market](/blog/ci-cd-market-consolidation/) and the launch of the [Continuous Delivery Foundation](/blog/gitlab-joins-cd-foundation/) – we’ve seen greater interest in using GitLab CI/CD with other Git hosting options. Extending the timeline will allow more folks to test it out.\n\nFinally, we want to take this time to capture additional feedback on how you use this feature so we can improve it. If you are using GitLab CI/CD with any external Git repository, like GitHub.com, GitHub Enterprise, BitBucket, or even  your own vanilla Git server, we’d love to hear why you keep your code where you do, what you like about GitLab CI/CD, and what we can improve. We have several open channels for feedback so please leave a comment on this post, send us a message on Twitter with the hashtag #GitLabCICD, or log an issue with a bug fix or feature request on our [open issue tracker](https://gitlab.com/gitlab-org/gitlab-ce/issues). We hope you enjoy an extra six months of usage and hope to hear from you soon.\n",[110,995,268],{"slug":2358,"featured":6,"template":683},"six-more-months-ci-cd-github","content:en-us:blog:six-more-months-ci-cd-github.yml","Six More Months Ci Cd Github","en-us/blog/six-more-months-ci-cd-github.yml","en-us/blog/six-more-months-ci-cd-github",{"_path":2364,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2365,"content":2371,"config":2376,"_id":2378,"_type":17,"title":2379,"_source":18,"_file":2380,"_stem":2381,"_extension":21},"/en-us/blog/atlassian-acquires-agilecraft",{"title":2366,"description":2367,"ogTitle":2366,"ogDescription":2367,"noIndex":6,"ogImage":2368,"ogUrl":2369,"ogSiteName":671,"ogType":672,"canonicalUrls":2369,"schema":2370},"What’s your plan?"," GitLab integrates planning every step of the way","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680500/Blog/Hero%20Images/planpost.jpg","https://about.gitlab.com/blog/atlassian-acquires-agilecraft","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"What’s your plan?\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2019-03-18\",\n      }",{"title":2366,"description":2367,"authors":2372,"heroImage":2368,"date":2373,"body":2374,"category":14,"tags":2375},[699],"2019-03-18","\n\nToday’s acquisition of AgileCraft by Atlassian brings up an interesting discussion: \nWhat’s the role of planning in today’s fast-moving software development lifecycle?\n\nIn DevOps, planning can’t be an after-thought or something only thought about at \nthe beginning. [Planning needs to be agile](https://about.gitlab.com/solutions/agile-delivery/), \nand integrated into what’s happening every day in the modern software shop. \nLike a quote from the Beatles song, “Life is what happens to you while you’re busy making other plans.”\n\nGitLab has democratized planning, making it an integral part of the software \ndevelopment workflow, with out-of-the-box project management, kanban boards, \nepics, time-tracking, and agile portfolio management - with \n[much more to come](https://about.gitlab.com/direction/plan/). \nMore importantly, though, GitLab’s planning features are intimately linked to \nall of the other [stages of software development](https://about.gitlab.com/stages-devops-lifecycle/). \nDevelopers, architects, and product managers can plan and re-plan together, \ncollaboratively and concurrently, with full visibility to the entire cycle.\n\nDon’t get us wrong - AgileCraft is a deep, well-thought out enterprise planning \ntool. But with GitLab, in addition to planning, you get an entire software development lifecycle tool out of the box.\n\n",[826,680,783],{"slug":2377,"featured":6,"template":683},"atlassian-acquires-agilecraft","content:en-us:blog:atlassian-acquires-agilecraft.yml","Atlassian Acquires Agilecraft","en-us/blog/atlassian-acquires-agilecraft.yml","en-us/blog/atlassian-acquires-agilecraft",{"_path":2383,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2384,"content":2390,"config":2396,"_id":2398,"_type":17,"title":2399,"_source":18,"_file":2400,"_stem":2401,"_extension":21},"/en-us/blog/quantifying-ux-validating-the-redesign-of-gitlabs-settings-pages",{"title":2385,"description":2386,"ogTitle":2385,"ogDescription":2386,"noIndex":6,"ogImage":2387,"ogUrl":2388,"ogSiteName":671,"ogType":672,"canonicalUrls":2388,"schema":2389},"Quantifying UX: How we validated the redesign of GitLab's settings pages","A GitLab senior UX designer shares how we determined whether a recent redesign improved the overall experience for users.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683361/Blog/Hero%20Images/user-testing-validating-redesign.jpg","https://about.gitlab.com/blog/quantifying-ux-validating-the-redesign-of-gitlabs-settings-pages","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Quantifying UX: How we validated the redesign of GitLab's settings pages\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Matej Latin\"}],\n        \"datePublished\": \"2019-03-13\",\n      }",{"title":2385,"description":2386,"authors":2391,"heroImage":2387,"date":2393,"body":2394,"category":14,"tags":2395},[2392],"Matej Latin","2019-03-13","\nThere are three main settings pages in GitLab: group settings, project settings, and admin settings. Shortly after I joined GitLab, the group settings page was redesigned to match a recent change that was implemented for the project settings, to “tidy up” all content into expandable sections. The idea was well intended, because these settings pages can be extremely long, full of diverse content and forms, and they’re very hard to read. It’s also difficult to find information when everything is simply “out there.”\n\nThe group and project settings pages were both redesigned in a short amount of time. Both are critical to using GitLab, which means that many users engage with them. This is great, because when that’s the case, we get lots of feedback after introducing changes. Unfortunately, in this case, the feedback was negative. [Users began to tell us that it was even harder to find the setting](https://gitlab.com/gitlab-org/gitlab-ce/issues/41230) they needed after the change was introduced. Instead of scrolling through the page and scanning it for relevant content, they now had to expand the sections and look for it there. The labels of these sections weren’t descriptive, so they often had to resort to guessing.\n\n![GitLab's project settings page](https://about.gitlab.com/images/blogimages/validate-redesign/project-settings.jpg){: .large.center}\n\n## Improvements to the settings pages\n\nI came up with some somewhat basic changes that could lead to significant improvements. In the issue titled [Improve settings pages design by prioritizing content: Discovery](https://gitlab.com/gitlab-org/gitlab-ce/issues/47405) I suggested we:\n* Prioritize the content by following the 80/20 principle (what do most users look for on these pages?).\n* Improve the labels for the expandable sections by making them descriptive.\n* Make the titles clickable (instead of just having the “expand/collapse” button) and\n* Shift content around if needed.\n\nThe 80/20 principle, also known as the [Pareto principle](https://en.wikipedia.org/wiki/Pareto_principle), suggests that 80 percent of effects come from 20 percent of causes. Further research suggests that this principle can be commonly observed in pretty much anything. So, in our case, applying the principle means: Can we prioritize the 20 percent of content that 80 percent of users look for?\n\nThis meant that we needed to rethink the information architecture (IA) of the page. If we introduce a section with prioritized content, as suggested in the improvements above and illustrated below, could we take some of the content that is commonly searched for and move it into that section?\n\n![Project settings page redesign concept](https://about.gitlab.com/images/blogimages/validate-redesign/redesign-concept.jpg){: .large.center}\n\nSoon after the discovery issue in milestone 11.2, I came up with a redesign that would accomplish all of the above. We started with the Group settings because it’s the simplest settings page, with the least amount of content. It took us longer than originally anticipated to implement the changes, and we shipped in 11.5, a little under three months later.\n\n![Redesigned project settings page](https://about.gitlab.com/images/blogimages/validate-redesign/group-settings-redesigned.jpg){: .large.center}\n\n## Some thoughts on designers conducting their own UX research\n\nIdeally, I would have done some UX research/validation before implementation to see if the new designs are actually better. But in this case, the changes were mostly general best practices in terms of UI design and information architecture, so I was confident that they were all going to result in improvements.\n\nBut I wanted to quantify the results and confirm whether they were actually better, and if so, by how much? Confidence in design is good (and even required sometimes), but we should never replace measurement of results with it. Besides, the group settings redesign was a pilot: if all turned out well, we would redesign project settings and admin settings in a similar fashion, so I wanted to be 100 percent sure and ran the test.\n\nIn addition, the UX department at GitLab has been striving to get into a position where designers can conduct their own UX research. We want designers to conduct research in a quick way that allows them to get the results they need to move forward. This can be done with some guidance from the UX research department, but it is not necessary for them to always be 100 percent involved.\n\n### Why should designers do their own research?\n\nIn this particular example, the validation was done after the implementation of the redesign, but ideally, this type of research would be done before a single line of code was written. Even sooner, it can be done on the same day that the designer mocked up the UI solution. The greatest benefit of doing this is that it eliminates waiting and speeds up the cycle of feedback. A lot. Instead of waiting for weeks for something to get implemented, a designer creates a test by themselves, coordinates with UX research, get participants to solve the test, and analyzes the results – all in the same day.\n\n## How do we validate UI design and IA changes?\n\nIn this case, the redesign introduced mostly UI and information architecture (IA) changes. How do you test these kind of changes, especially when you work remotely? The answer is surprisingly simple: Create two “click tests” on [Usability Hub](https://usabilityhub.com/): One for the design of the page as it is now (original) and one for the redesign. Most users complained that they didn’t know which section contained the item they were looking for. This was the most important problem that needed to be solved, so I came up with a simple test: show the participants the design (either original or the redesign) and ask them questions which they answered by clicking on a design. For example, they would see the following (the redesign):\n\n![Redesign of settings pages](https://about.gitlab.com/images/blogimages/validate-redesign/test-redesign.jpg){: .medium.center}\n\nAnd they would answer the following questions:\n\n* Where do you think you can change who can see the details of this group?\n* Where do you think you can add an extra layer of security for signing in?\n* Where do you think you can change the URL of this group?\n\nEach of these three questions were followed up by two additional ones:\n\n* How easy/difficult was it to find?\n* How confident are you that the setting is in the section you selected?\n\n![Test redesign follow up](https://about.gitlab.com/images/blogimages/validate-redesign/test-redesign-followup.jpg){: .medium.center}\n\nThe participants responded with a rating of 1 to 5 for each of the follow-up questions. With the main questions, we measured the time required to answer (click) and whether the answer was correct or not. The follow-up questions helped us measure perceived difficulty and confidence.\n\n### Assumptions to validate\n\nWe wanted to validate the following assumptions:\n\n| Assumption | Validated/invalidated |\n| ------ | ------ |\n| Users will need less time to find the settings | ✅ / ❌   |\n| A greater number of users will click on the correct areas | ✅ / ❌  |\n| Users will be more confident in their section choices (new compared to old) | ✅ / ❌  |\n| The perceived difficulty of the tasks will improve | ✅ / ❌ |\n\nWe decided that if three out of four of those assumptions were validated we would consider the redesign a success. You can preview the tests at the following links (feel free to complete them, but they’re not collecting results anymore):\n* [Original](https://app.usabilityhub.com/preview/87c510cf7078)\n* [Redesign](https://app.usabilityhub.com/preview/fc581c732b7e)\n\n## Results\n\nWe shared our tests on Twitter and with [GitLab First Look](/community/gitlab-first-look/), our UX Research mailing list. We received more than 600 responses, and the results were evenly distributed between the original versus the redesign. The findings weren’t really surprising, but they validated our redesigns. We knew our work improved the experience of our users and we could now apply a similar approach to the other settings pages.\n\n| Version | Task | Time required | Correct answers | Confidence (mean)* | Perceived difficulty (mean)* |\n| ------- | ---- | --------------| ----------------|-------------------|-----------------------------|\n| Original| 1    | 19.4s         | 77%             | 3.6               | 2.1                         |\n| Redesign| 1    | 25.9s         | 78%             | 4.1               | 1.9                         |\n| Original| 2    | 14.6s         | 34%             | 3.2               | 2.4                         |\n| Redesign| 2    | 8.7s          | 97%             | 4.1               | 1.9                         |\n| Original| 3    | 6.4s          | 49%             | 3.9               | 1.9                         |\n| Redesign| 3    | 16.1s         | 92%             | 3.7               | 2.5                         |\n\n*Confidence: higher is better*\n\n*Perceived difficulty: lower is better*\n\n*I only counted the correct answers for confidence and perceived difficulty.\n\nOriginal test: 389 participants — [Results](https://app.usabilityhub.com/tests/87c510cf7078/results/e20614040355) \u003Cbr>\nRedesign test: 266 participants — [Results](https://app.usabilityhub.com/tests/fc581c732b7e/results/b016819adc5a)\n\n![Results heatmap](https://about.gitlab.com/images/blogimages/validate-redesign/results-heatmap.jpg){: .shadow.medium.center}\n\n*\u003Csmall>The heatmap feature in Usability Hub allowed us to see that the majority of users were clicking in the correct area, so they were finding what they were looking for.\u003C/small>*\n\nBy running such tests, we now have data that can help us quantify the user’s experience – in other words, we can measure the design’s impact. It took some users longer to find what they were looking for in the redesign, but their confidence in the correctness of their answer improved and the tasks were also perceived as less difficult.\n\nMost encouraging was the huge difference in how many respondents answered correctly compared to the original. We saw an increase from 34 to 97 percent in the second question and 49 to 92 percent in the third question, which proved that the redesign solves the problem that most users complained about: finding things.\n\nIf we look back to our assumptions, we validated three out of four, fulfilling the success criteria that we established at the start. The only assumption that wasn’t validated was that \"Users will need less time to find the settings.\" It took the participants longer to answer two out of the three questions.\n\n| Assumption | Validated/invalidated |\n| ------ | ------ |\n| Users will need less time to find the settings | ❌   |\n| A greater number of users will click on the correct areas | ✅  |\n| Users will be more confident in their section choices (new compared to old) | ✅  |\n| The perceived difficulty of the tasks will improve | ✅ |\n\n## What’s next?\n\nWe want to continue building on this success and improve all settings pages. Unfortunately, the project settings redesign did not make it into 11.7, but we are hopeful it will be included in one of the next few releases. We will then proceed to improve the other settings pages, as well as other improvements, such as [adding inline search](https://gitlab.com/gitlab-org/gitlab-ce/issues/50145). You can follow our progress through the [Improve and align settings pages UX](https://gitlab.com/groups/gitlab-org/-/epics/196) epic.\n\nAs we move forward, we want to do more of this kind of validation/research. We want to come to a place where designers have enough time and confidence in doing their own UX research and do it before implementation starts, in a single milestone, so we can keep moving fast and shipping more awesome things. If you have UX research skills and experience and want to work at GitLab, [check out our Careers page](/jobs/).\n\nYou can also read more about [how we conduct remote UX research at GitLab](/blog/conducting-remote-ux-research/).\n\nCover image by [Alvaro Reyes](https://unsplash.com/photos/qWwpHwip31M?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/search/photos/user-test?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)",[890,1039,1037],{"slug":2397,"featured":6,"template":683},"quantifying-ux-validating-the-redesign-of-gitlabs-settings-pages","content:en-us:blog:quantifying-ux-validating-the-redesign-of-gitlabs-settings-pages.yml","Quantifying Ux Validating The Redesign Of Gitlabs Settings Pages","en-us/blog/quantifying-ux-validating-the-redesign-of-gitlabs-settings-pages.yml","en-us/blog/quantifying-ux-validating-the-redesign-of-gitlabs-settings-pages",{"_path":2403,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2404,"content":2409,"config":2415,"_id":2417,"_type":17,"title":2418,"_source":18,"_file":2419,"_stem":2420,"_extension":21},"/en-us/blog/gitlab-joins-cd-foundation",{"title":2405,"description":2406,"ogTitle":2405,"ogDescription":2406,"noIndex":6,"ogImage":2212,"ogUrl":2407,"ogSiteName":671,"ogType":672,"canonicalUrls":2407,"schema":2408},"GitLab leads the industry forward with the CD Foundation","Today we're proud to announce we've joined the CD Foundation as a founding member.","https://about.gitlab.com/blog/gitlab-joins-cd-foundation","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab leads the industry forward with the CD Foundation\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2019-03-12\",\n      }",{"title":2405,"description":2406,"authors":2410,"heroImage":2212,"date":2411,"body":2412,"category":14,"tags":2413},[676],"2019-03-12","\n\nToday GitLab joined the [CD Foundation](https://cd.foundation/announcement/2019/03/12/the-linux-foundation-announces-new-foundation-to-support-continuous-delivery-collaboration/) as a founding member, to help foster collaboration and educate the industry on how to enable any software development team around the world to implement CI/CD best practices.\n\nAs one of the first to introduce cloud native CI/CD to the industry, we are excited to see so many companies come together to discuss ways to take the industry forward to ensure that code is able to get to production not only quickly, but securely. We are looking forward to lending our experience working with millions of developers and thousands of enterprises to drive forward the conversation on best practices and standards to streamline the code delivery promise.\n\n## But there is more to software delivery than CI/CD\n\nWhile it is great there is an eye on the best CI/CD practices, we believe there is more to delivering great software to market than just CI/CD, which is why at GitLab we are focused on providing a single application for the entire DevOps lifecycle.\n\nIt is not only about source code management or CI/CD but also about:\n- [Value stream management](/solutions/value-stream-management/): Understanding your teams' work and their workflow so they can deliver value to customers faster.\n- Operational excellence: Implementing dynamic infrastructure and robust observability to increase uptime and decrease mean time to resolution.\n- Security flow: Building security into every step of your code delivery process, to deliver secure software without slowing the pace of innovation.\n- Monitoring: Automatically monitor metrics so you know how any change in code impacts your production environment.\n\nOur entire [2019 product vision and beyond](/blog/gitlab-product-vision/) is about continuing to build out new capabilities across the entire DevOps lifecycle, to make it easier for enterprises to streamline their processes into one application, helping teams innovate at faster speeds.\n\nAs an open source company, we value the community’s contributions, in helping make GitLab what it is today. We look forward to continuing to drive the industry forward in CI/CD, as well as working with you to help deliver your products to market quickly and securely.\n\nPhoto by [YIFEI CHEN](https://unsplash.com/photos/FPMRxKd7MxI?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/search/photos/spiral-lights?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)\n{: .note}\n",[1458,2414,804],"CD",{"slug":2416,"featured":6,"template":683},"gitlab-joins-cd-foundation","content:en-us:blog:gitlab-joins-cd-foundation.yml","Gitlab Joins Cd Foundation","en-us/blog/gitlab-joins-cd-foundation.yml","en-us/blog/gitlab-joins-cd-foundation",{"_path":2422,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2423,"content":2429,"config":2434,"_id":2436,"_type":17,"title":2437,"_source":18,"_file":2438,"_stem":2439,"_extension":21},"/en-us/blog/ci-cd-market-consolidation",{"title":2424,"description":2425,"ogTitle":2424,"ogDescription":2425,"noIndex":6,"ogImage":2426,"ogUrl":2427,"ogSiteName":671,"ogType":672,"canonicalUrls":2427,"schema":2428},"The CI/CD market consolidation","The DevOps industry is consolidating. GitLab is here to stay.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679957/Blog/Hero%20Images/consolidate.jpg","https://about.gitlab.com/blog/ci-cd-market-consolidation","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"The CI/CD market consolidation\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2019-02-21\",\n      }",{"title":2424,"description":2425,"authors":2430,"heroImage":2426,"date":2431,"body":2432,"category":14,"tags":2433},[676],"2019-02-21","\n\nSince the beginning of the year, we’ve seen consolidation in the DevOps industry.\nIn January, we saw that [Travis CI was acquired by Idera](https://techcrunch.com/2019/01/23/idera-acquires-travis-ci/)\nand today we saw [Shippable acquired by JFrog](https://techcrunch.com/2019/02/21/jfrog-acquires-shippable-adding-continuous-integration-and-delivery-to-its-devops-platform/).\nContinuous integration is a key part of a developer’s workflow and important for\ngetting your code to market quickly. As enterprises continue to go cloud-native,\n[CI/CD](/topics/ci-cd/) is a key part of [delivering innovative software products](https://about.gitlab.com/blog/application-modernization-best-practices/)\nto market and staying ahead of competition.\n\nMost technology markets go through stages as they mature. When a young technology\nis first becoming popular, there tends to be an explosion of tools to support it.\nNew technologies have a lot of rough edges that make them difficult to use and\nearly tools tend to center around making the experience easier to adopt and use.\nOnce a technology matures, tool consolidation is a natural part of the life cycle.\n\n## Partnering on CI\n\nWith consolidation, it’s no secret that people get nervous about the partner they\nare choosing as their CI backbone.\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Where should OSS projects move to if currently using \u003Ca href=\"https://twitter.com/travisci?ref_src=twsrc%5Etfw\">@travisci\u003C/a>? \u003Ca href=\"https://t.co/TZJF80T1X9\">https://t.co/TZJF80T1X9\u003C/a>\u003C/p>&mdash; Carl DB (@carllerche) \u003Ca href=\"https://twitter.com/carllerche/status/1098669954759516162?ref_src=twsrc%5Etfw\">February 21, 2019\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\nHere at GitLab, our users are first and foremost in mind. We’re not going anywhere.\nIn fact, we continue to build out our [leadership team](https://www.businessinsider.com/gitlab-cmo-cro-ipo-2019-2) and have stated publicly,\nmany times over, that we’re on the road to IPO by November 2020. So we invite you\nto [try out GitLab](https://gitlab.com/users/sign_in#register-pane).\n\n## We make it easy - GitLab CI/CD for GitHub\n\nSo no matter where you store your code, we can help. If you host your code on\nGitHub, you can build, test, and deploy all on GitLab. You can follow along in\nthe video below or learn more [here](https://about.gitlab.com/solutions/github/) or follow the documentation [here](https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/github_integration.html).\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/qgl3F2j-1cI\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C/iframe>\n\nAnd if you’d like to try using GitLab end-to-end from planning to product monitoring,\nwe make it easy to move your code over to GitLab and use a single application for\nyour developer workflow.\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/VYOXuOg9tQI\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C/iframe>\n\n## #TravisAlums - GitLab is hiring\nLastly if you’re a Travis Alum, first off thank you for your work on advancing the industry forward.\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Can I ask a favor? Given the recent news I&#39;ve been sharing about Travis CI&#39;s recent layoffs, and your overwhelming support in my DMs, if you used Travis and are looking to hire, can you tweet using the hashtag \u003Ca href=\"https://twitter.com/hashtag/travisAlums?src=hash&amp;ref_src=twsrc%5Etfw\">#travisAlums\u003C/a> ?\u003C/p>&mdash; Carmen Hernández Andoh (@carmatrocity) \u003Ca href=\"https://twitter.com/carmatrocity/status/1098583889864478720?ref_src=twsrc%5Etfw\">February 21, 2019\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\nWe know that with any acquisition there are always folks who will find a good home\nin their new parent company and folks for whom the new situation will no longer\nbe a good fit. We hope for the former, but if you are looking for a [new opportunity](https://about.gitlab.com/jobs/),\nwe believe we have a great team of folks and are working on some of the most\nexciting challenges in this space.",[680,110],{"slug":2435,"featured":6,"template":683},"ci-cd-market-consolidation","content:en-us:blog:ci-cd-market-consolidation.yml","Ci Cd Market Consolidation","en-us/blog/ci-cd-market-consolidation.yml","en-us/blog/ci-cd-market-consolidation",{"_path":2441,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2442,"content":2448,"config":2454,"_id":2456,"_type":17,"title":2457,"_source":18,"_file":2458,"_stem":2459,"_extension":21},"/en-us/blog/gitlab-ci-cd-features-improvements",{"title":2443,"description":2444,"ogTitle":2443,"ogDescription":2444,"noIndex":6,"ogImage":2445,"ogUrl":2446,"ogSiteName":671,"ogType":672,"canonicalUrls":2446,"schema":2447},"GitLab CI/CD's 2018 highlights","We move quickly, always with an eye to the future, but let's take a moment to look back on how GitLab CI/CD has evolved in the past six months.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663779/Blog/Hero%20Images/cicd-2018_blogimage.jpg","https://about.gitlab.com/blog/gitlab-ci-cd-features-improvements","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab CI/CD's 2018 highlights\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jason Yavorska\"}],\n        \"datePublished\": \"2019-01-21\",\n      }",{"title":2443,"description":2444,"authors":2449,"heroImage":2445,"date":2451,"body":2452,"category":14,"tags":2453},[2450],"Jason Yavorska","2019-01-21","\nHello everyone, and happy New Year! For those who don't know me, my name is [Jason Yavorska](/company/team/#jyavorska) and I've been the product manager of GitLab CI/CD since around the middle of last year. 2018 was a big year for CI/CD improvements in GitLab, and I'm so proud of our team and what we've been able to deliver in partnership with you, our users. Even just looking back on the last six months of improvements, we've delivered a ton of changes that move our vision for CI/CD forward, address important asks from our users, and build the foundation for an amazing 2019.\n\nBelow are a few of the highlights from my time here so far; be sure to let me know in the comments if I missed something that meant a lot to you.\n\n## Access control for GitLab Pages\n\nOne of the most amazing things about working for an open core company like GitLab is that our community of users can play an outsized role in how our product grows and develops, thanks to their always impressive contributions. Last year we introduced [Access control for Pages (11.5)](https://gitlab.com/gitlab-org/gitlab-ce/issues/33422), a feature with 304 👍 that was actually part of our 2019 vision, and was built thanks to a significant community contribution from MVP [Tuomo Ala-Vannesluoma](https://gitlab.com/tuomoa).\n\nThis was not just a great feature, but also highlights how GitLab and community contributors can work together to do amazing things. It came out shortly after I joined as a new product manager here, and it really opened my eyes to the possibilities inherent in working together transparently and openly with our user community. Now I don't think I could ever go back to any other way of working.\n\n## Feature flags\n\nI'm always looking for ways to expand our horizons and bring more great capabilities into the CI/CD space, and the team achieved that last year with [Allow users to create and manage feature flags for their applications (11.4)](https://gitlab.com/gitlab-org/gitlab-ee/issues/6220). A major piece of our 2018 vision, feature flags are so important to continuous delivery workflows since they allow you to safely isolate delivering your code to production, from the moment users engage with it, giving you more control and better options when it comes to how and when you deliver software.\n\n![CI/CD feature flags](https://about.gitlab.com/images/blogimages/cicd-feature_flags.png){: .shadow.medium.center}\n\n## Pipelines for merge requests\n\nSometimes, what you do in one year may be valuable on its own, but it also helps establish a foundation for more in the future. A common request from the community last year had been to make pipelines more aware of merge requests, so that at runtime, information such as the target branch, merge request name and ID, and other information was available to the pipeline. In 2018 we introduced [`only/except: merge_requests` for merge request pipelines (11.6)](https://gitlab.com/gitlab-org/gitlab-ce/issues/15310), which created this linkage. One great way to take advantage of this feature already is to use it to only create [Review Apps](https://docs.gitlab.com/ee/ci/review_apps/) on merge requests, helping to save money on environments versus creating them for every pipeline.\n\nPerhaps even more exciting than this feature on its own, is that it will continue to evolve and grow into the ability to [Run a pipeline on what the merged result will be](https://gitlab.com/gitlab-org/gitlab-ee/issues/7380). I can already say with confidence that this will be a game changer for teams that want to prioritize keeping their `master` branch green. As far as predicting the future outside of GitLab, I'm still accepting merge requests for that 😉\n\n![pipelines for merge requests](https://about.gitlab.com/images/blogimages/cicd-mr_pipelines.png){: .shadow.medium.center}\n\n## Usability improvements for the merge request widget\n\nSpeaking of merge requests, in general the team has made a lot of improvements to how the merge request widget interacts with CI/CD. We added [JUnit XML Test Summary (11.2)](https://gitlab.com/gitlab-org/gitlab-ce/issues/45318), part of our 2018 vision to make testing a more interactive part of the CI pipeline. We also now [Show enhanced information on running deploys (11.5)](https://gitlab.com/gitlab-org/gitlab-ce/issues/25140), and [Link directly to changed pages in Review App (11.5)](https://gitlab.com/gitlab-org/gitlab-ce/issues/33418), which uses [Route Maps](https://docs.gitlab.com/ee/ci/environments/index.html#go-directly-from-source-files-to-public-pages-on-the-environment) to send you directly to the updated content. Both of these changes were welcome improvements that made it much easier to see what was going on, all in one place.\n\n![CI/CD review app link](https://about.gitlab.com/images/blogimages/cicd-reviewapp_link.png){: .shadow.medium.center}\n\n## #movingtogitlab\n\n[#movingtogitlab](https://twitter.com/hashtag/movingtogitlab?src=hash) was an exciting movement in 2018, and I wanted to ensure a great experience for everyone checking us out, even if they were just trying out GitLab CI or other features, and still using GitHub for repositories. One of the challenges that people ran into early on was the way status checks were named by GitLab CI, which didn't play nicely with the way GitHub expected them to work. The team was able to introduce [Name status checks consistently to support GitHub-integrated CI workflow (11.5)](https://gitlab.com/gitlab-org/gitlab-ce/issues/53902) as a change to unblock this, ensuring a valuable experience for everyone, even if you weren't ready to go \"all in\" on GitLab yet.\n\n## Stewardship\n\nHere at GitLab, we take [stewardship of open source](/company/stewardship/) seriously. I was very happy to move the `include:` keyword from paid to free, because I know how important it is for CI/CD users to support proper reuse instead of copy-pasted code. [Move \"include external files in .gitlab-ci.yml\" from Starter to Core (11.4)](https://gitlab.com/gitlab-org/gitlab-ce/issues/42861) (with a grand total of 267 👍 on the issue) achieved this, and opened up new doors, not just for avoiding duplication, but also for more secure ways of implementing common workflows by moving compliance, security, and governance job implementation to a centrally controlled location.\n\n## Honorable mentions\n\nThere wasn't enough time to cover everything in this post without making it a mile long, but there are a few other honorable mentions I want to call out:\n\n- [11.2: Manually stopping environments](https://gitlab.com/gitlab-org/gitlab-ce/issues/25388) (with 245 👍 from our users) added the ability to manually stop your environments, such as review apps, instead of only through pipeline automation.\n- [11.3: Improve handling of includes in `.gitlab-ci.yml` to better enable script reuse/templates](https://gitlab.com/gitlab-org/gitlab-ce/issues/51521) introduced a new way to `extend` your job definitions using templates, including from across different files.\n- [11.4: Run jobs only/except when there are changes for a given path or file](https://gitlab.com/gitlab-org/gitlab-ce/issues/19232) (with a whopping 424 👍) gave you the ability to control whether a job runs or not, based on which files were changed.\n- [11.4: Add support for interactive web terminal to Docker executor](https://gitlab.com/gitlab-org/gitlab-runner/issues/3467) let you connect an interactive to a build/deploy environment and troubleshoot on the live runner host.\n- [11.4: Add timed deployments to AutoDevOps incremental rollouts](https://gitlab.com/gitlab-org/gitlab-ee/issues/7545) enabled new deployment strategies where the rollout was done over time in phases.\n- [11.5: `parallel` job keyword to speed up pipelines](https://gitlab.com/gitlab-org/gitlab-ce/issues/21480) added an easy way to run parallel instances of a job without creating duplicate jobs in your `gitlab-ci.yml`.\n- [11.6: Allow pipelines to be deleted by project owners](https://gitlab.com/gitlab-org/gitlab-ce/issues/41875) (265 👍) gave control over removing old and invalid pipelines, as well as those which may have accidentally included sensitive information in the outputs.\n\n## What's next?\n\nOf course, the mission to improve GitLab CI/CD doesn't stop here. We're bringing [Brendan O'Leary](/company/team/#olearycrew) on board as the full-time product manager for CI (what we call the [Verify stage](/stages-devops-lifecycle/verify/)), freeing me up to focus entirely on CD (what we call [Release](/stages-devops-lifecycle/release/)). We're also significantly growing headcount for the engineering teams supporting us. Having full-time product managers and larger teams dedicated to each of these stages is going to allow us to deliver even more amazing things, even faster.\n\nI've touched on a couple points above, but tried to avoid making this a preview of what's coming for CI/CD in 2019. If you're interested in where Brendan and I are headed, you can visit our direction pages for [Verify (CI)](/direction/verify/) and [Release (CD)](/direction/release/), and feel free to reach out to us directly if you'd like to have a conversation – we'd love to chat about your ideas. Being a transparent, open core company, we also welcome participation in all of our public issues (which you'll find linked to from the above direction pages). For me, the best part of this job is interacting with you, the users of GitLab, so thank you for that opportunity. Here's to another great year of working together to make the job of delivering software fun and rewarding!\n\n## Just one more thing...\n\nI'd be remiss if I didn't mention how great GitLab is as a place to work. If you're interested in joining our all-remote team, we're constantly growing and looking for great PMs and others to join us. Check out [our jobs page](/jobs/) to learn more. I'd encourage you to apply even if you don't see an exact match – GitLab is great at finding the right fit for the right personality, even if that's not exactly listed on our hiring website. If you're really unsure, feel free to reach out to me directly ([@j4yav](https://twitter.com/j4yav)) and I'll help you get in touch with the right person.\n",[847,268,723,890,804],{"slug":2455,"featured":6,"template":683},"gitlab-ci-cd-features-improvements","content:en-us:blog:gitlab-ci-cd-features-improvements.yml","Gitlab Ci Cd Features Improvements","en-us/blog/gitlab-ci-cd-features-improvements.yml","en-us/blog/gitlab-ci-cd-features-improvements",{"_path":2461,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2462,"content":2467,"config":2473,"_id":2475,"_type":17,"title":2476,"_source":18,"_file":2477,"_stem":2478,"_extension":21},"/en-us/blog/iterating-on-sso",{"title":2463,"description":2464,"ogTitle":2463,"ogDescription":2464,"noIndex":6,"ogImage":967,"ogUrl":2465,"ogSiteName":671,"ogType":672,"canonicalUrls":2465,"schema":2466},"How we are iterating on Group Single Sign On for GitLab.com","Here's some insight into our approach to improving a key enterprise capability for GitLab.com, SSO.","https://about.gitlab.com/blog/iterating-on-sso","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How we are iterating on Group Single Sign On for GitLab.com\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Eric Brinkman\"}],\n        \"datePublished\": \"2019-01-17\",\n      }",{"title":2463,"description":2464,"authors":2468,"heroImage":967,"date":2470,"body":2471,"category":14,"tags":2472},[2469],"Eric Brinkman","2019-01-17","\n\nAt GitLab, we do things a little differently. We believe in shipping what we call the MVC, or minimum viable change, rather than waiting for something to be perfect. We’d rather our customers get their hands on a portion of the feature to ensure we are on the right track and that our next iteration is spot on, than wait several months to ship a full feature that may not be exactly what customers desire. In fact, [iteration is one of our six core values](https://handbook.gitlab.com/handbook/values/#iteration) at GitLab, and it’s something that drives our day-to-day decision making. In this blog post, we’ll take a look at how a recent enterprise authentication feature challenged our organization with respect to prioritization, core values, and [transparency](https://handbook.gitlab.com/handbook/values/#transparency) with customers. We’ll also discuss our vision for GitLab.com, and the associated challenges we’ve come across while ensuring it’s a solution that works seamlessly for enterprise adoption of GitLab.\n\nSingle Sign On, or SSO, has been at the forefront of most enterprises’ digital transformation requirements for quite some time. Enterprise organizations require access to software to be controlled by their Identity Provider of choice as there are hundreds, if not thousands, of users. Manually provisioning users and revoking access across multiple systems when employees leave is not scalable and is error prone in organizations of any size.\n\nWe’ve long had [support for SAML, LDAP, and OAuth configuration](https://docs.gitlab.com/ee/administration/auth/) for self-managed GitLab, which assumes our customers have admin access at the instance level. While this works great for individual instances, a different approach is needed for GitLab.com, which is a giant, multi-tenant version of a single instance, primarily segregated at the group level for enterprises.\n\nIn [GitLab 11.0](/releases/2018/06/22/gitlab-11-0-released/#saml-single-sign-on-for-groups-beta), shipped in June 2018, we launched the [MVC to take the first step in SAML-based SSO on GitLab.com](https://gitlab.com/groups/gitlab-org/-/epics/40). When we launched this functionality, we knew it wasn’t going to solve 100 percent of enterprise authentication needs, but rather than keeping this functionality private until we had other SSO features (such as automated provisioning of users and revocation of permissions), we decided to launch it to get as much feedback as possible, and to ensure our product velocity stays at the high levels we’ve come to expect.\n\nHere are some of the factors at play and how we're moving forward:\n\n### 1. We haven't always focused on enterprise features for GitLab.com\n\nGitLab.com has typically been the GitLab solution for hobbyists and small development teams. Enterprises have typically gravitated towards self-managed, self-hosted GitLab. Because of this bifurcation, enterprise features such as SSO were not prioritized as high in mid-2018.\n\n### The fix: We are now prioritizing enterprise features\n\nThis includes features like SSO at the top of our list. In 2019, enterprise customers looking to use GitLab are coming with a SaaS-first approach, led by a desire to get out of traditional hosting arrangements, shying away from long procure times, and looking for quick time to market on SaaS implementation. Most importantly, we’ve heard this directly from enough customers recently that we couldn't sit idly by and not activate on this.\n\n### 2. Security issues have burdened our Manage team\n\nThe [Manage](/stages-devops-lifecycle/) team, responsible for authentication at GitLab, has been hit with the most security issues of any team (170 open issues) and has been required to prioritize these over new feature releases. Manage has released [eight security fixes](https://gitlab.com/groups/gitlab-org/-/issues?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=Any&label_name[]=Manage&label_name[]=security) that we've made public since September. We're proud of this work, as it’s required to protect our customers.\n\n### The fix: Measures to improve our velocity in finding and fixing security issues\n\nWe will continue to prioritize P1 security issues above all new features and functionality, consistent with our [prioritization framework](/handbook/product/product-processes/#how-we-prioritize-work) and ensuring a secure application. If GitLab isn’t a secure application where customers can trust that their data is safe and secure, all of the features in the world won’t make a difference as we won’t be around for long. In order to improve our security posture and increase the velocity at which we identify and fix security vulnerabilities, we've launched our [HackerOne Bug Bounty Program](https://hackerone.com/gitlab) with rewards of up to $12,000! [This program was launched](/blog/gitlab-hackerone-bug-bounty-program-is-public-today/) on Dec. 12, 2018 and has already paid out over $265,000 in bug bounties, over 215 reports!\n\n### 3. The Manage team has been stretched\n\nThe Manage team has an incredibly broad scope, ranging from permissions and authentication, to cycle analytics and DevOps scoring for organizations. In the few spare cycles our engineering team has had in between security issues, we had to spend time on high-severity, non-security bugfixes and promised features – like [adding smart card support](https://gitlab.com/gitlab-org/gitlab-ee/issues/726) and keeping instances more secure by [prohibiting admin impersonation](https://gitlab.com/gitlab-org/gitlab-ce/issues/40385). Simply put, we didn’t have enough resources to activate on all fronts.\n\n### The fix: We're growing to meet demand\n\nGitLab will grow from ~400 employees at the start of 2019 to ~800 by the end of the year. We will be splitting Manage into several teams, starting with the [Fulfillment team](https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/18087), allowing for more resources to push along each of these areas in parallel.\n\nGitLab.com is one of our highest-growth areas based on most Key Performance Indicators, including monthly active users, revenue, and feature usage. It’s the quickest way to get started using GitLab, and we need to do a better job knocking down barriers for large organization adoption. We’re already activating heavily on [SAML-based SSO for enterprises](https://gitlab.com/groups/gitlab-org/-/epics/731) in early 2019 and look forward to regaining our customers’ trust in being a company that quickly adapts to your feedback.\n\nIf this type of organization and [product philosophy](/handbook/product/) seems exciting to you, drop me a note at ebrinkman@gitlab.com. We will be doubling the size of the product team and are looking for talented product managers to help us scale GitLab and drive the direction and growth of our application.\n",[723,890,994],{"slug":2474,"featured":6,"template":683},"iterating-on-sso","content:en-us:blog:iterating-on-sso.yml","Iterating On Sso","en-us/blog/iterating-on-sso.yml","en-us/blog/iterating-on-sso",{"_path":2480,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2481,"content":2487,"config":2493,"_id":2495,"_type":17,"title":2496,"_source":18,"_file":2497,"_stem":2498,"_extension":21},"/en-us/blog/gitlab-2018-year-in-review",{"title":2482,"description":2483,"ogTitle":2482,"ogDescription":2483,"noIndex":6,"ogImage":2484,"ogUrl":2485,"ogSiteName":671,"ogType":672,"canonicalUrls":2485,"schema":2486},"2018: GitLab's year in review","Take a look at the highlight reel from 2018 – from landing $100M in funding to welcoming a host of great open source projects to GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670162/Blog/Hero%20Images/happy-holidays-cover.png","https://about.gitlab.com/blog/gitlab-2018-year-in-review","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"2018: GitLab's year in review\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emily von Hoffmann\"},{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2019-01-10\",\n      }",{"title":2482,"description":2483,"authors":2488,"heroImage":2484,"date":2490,"body":2491,"category":14,"tags":2492},[1496,2489],"Rebecca Dodd","2019-01-10","\n\nIn 2018, we added 289 new team members, raised another round of funding, spread the word about remote work, surpassed 2,000 contributors, welcomed some awesome open source projects to GitLab, and shipped 12 releases. It's been a banner year for GitLab, so before diving into 2019, we invite you to peer back through the mists of time at the top events from the past year, according to our community:\n\n- [Product news](#product-news)\n- [Community news](#community-news)\n- [Company news](#gitlab-news)\n\n## Product news\n\n### We announced GitLab Serverless\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Announcing GitLab Serverless 🚀\u003Ca href=\"https://t.co/Iu4GwHsaYK\">https://t.co/Iu4GwHsaYK\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1072521159638482945?ref_src=twsrc%5Etfw\">December 11, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### We introduced Meltano\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Hey, data teams! We&#39;re working on a tool just for you. Read all about Meltano, from \u003Ca href=\"https://twitter.com/jakecodes?ref_src=twsrc%5Etfw\">@jakecodes\u003C/a> &amp; @tayloramurphy1 ✌️  \u003Ca href=\"https://t.co/egEzILPNzu\">https://t.co/egEzILPNzu\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1024773311367131137?ref_src=twsrc%5Etfw\">August 1, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### You got _really_ excited about the Web IDE\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">👋 Meet the GitLab Web IDE!\u003Ca href=\"https://t.co/vhx2RR1uU6\">https://t.co/vhx2RR1uU6\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1007679206187249664?ref_src=twsrc%5Etfw\">June 15, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### We successfully migrated to GCP and have noticed some improvements\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">What&#39;s up with \u003Ca href=\"https://t.co/W0iwxWzEZ8\">https://t.co/W0iwxWzEZ8\u003C/a>? I wrote an analysis of \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@GitLab\u003C/a>&#39;s stability and performance since we migrated to \u003Ca href=\"https://twitter.com/googlecloud?ref_src=twsrc%5Etfw\">@googlecloud\u003C/a> in August.\u003Ca href=\"https://t.co/8JvvbVq9wJ\">https://t.co/8JvvbVq9wJ\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/GoogleCloud?src=hash&amp;ref_src=twsrc%5Etfw\">#GoogleCloud\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/Cloud?src=hash&amp;ref_src=twsrc%5Etfw\">#Cloud\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/DevOps?src=hash&amp;ref_src=twsrc%5Etfw\">#DevOps\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/SaaS?src=hash&amp;ref_src=twsrc%5Etfw\">#SaaS\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/performance?src=hash&amp;ref_src=twsrc%5Etfw\">#performance\u003C/a> \u003Ca href=\"https://t.co/L6TWhh2Z0B\">pic.twitter.com/L6TWhh2Z0B\u003C/a>\u003C/p>&mdash; Andrew Newdigate (@suprememoocow) \u003Ca href=\"https://twitter.com/suprememoocow/status/1050467664584462337?ref_src=twsrc%5Etfw\">October 11, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\nAND you can check out [all our releases from 2018 (and from all time) over here](/releases/categories/releases/).\n\n## Community news\n\n### GNOME moves to GitLab\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Anyway, I&#39;m proud of \u003Ca href=\"https://twitter.com/gnome?ref_src=twsrc%5Etfw\">@gnome\u003C/a> because we achieved it, we made a huge effort on adapting and will continue doing it because that&#39;s who we are. And with this, I want to announce that the mass migration to \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> is now completed! Welcome all to 2018! 🎉\u003C/p>&mdash; Carlos Soriano (@csoriano1618) \u003Ca href=\"https://twitter.com/csoriano1618/status/1001501640623640577?ref_src=twsrc%5Etfw\">May 29, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### Drupal moves to GitLab\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Welcome to the party \u003Ca href=\"https://twitter.com/drupal?ref_src=twsrc%5Etfw\">@drupal\u003C/a>! 🎉 \u003Ca href=\"https://t.co/umLw6YlSTl\">https://t.co/umLw6YlSTl\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1030164542360375296?ref_src=twsrc%5Etfw\">August 16, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### Freedesktop.org moves to GitLab\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">We get pretty excited when open source projects tell us they’re \u003Ca href=\"https://twitter.com/hashtag/movingtogitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#movingtogitlab\u003C/a>. Welcome, \u003Ca href=\"https://twitter.com/hashtag/freedesktop?src=hash&amp;ref_src=twsrc%5Etfw\">#freedesktop\u003C/a>! \u003Ca href=\"https://t.co/oLIfXZb7Va\">https://t.co/oLIfXZb7Va\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1031864994747609088?ref_src=twsrc%5Etfw\">August 21, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### Errrrrybody is #movingtogitlab\n\nWell, not _quite_, but 10x the normal daily number is still a big deal 😎\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">We&#39;re seeing 10x the normal daily amount of repositories \u003Ca href=\"https://twitter.com/hashtag/movingtogitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#movingtogitlab\u003C/a> \u003Ca href=\"https://t.co/7AWH7BmMvM\">https://t.co/7AWH7BmMvM\u003C/a> We&#39;re scaling our fleet to try to stay up. Follow the progress on \u003Ca href=\"https://t.co/hN0ce379SC\">https://t.co/hN0ce379SC\u003C/a> and \u003Ca href=\"https://twitter.com/movingtogitlab?ref_src=twsrc%5Etfw\">@movingtogitlab\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1003409836170547200?ref_src=twsrc%5Etfw\">June 3, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### Y'all had _feelings_ about burnout\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">‣ Don&#39;t go straight to work after you wake up.\u003Cbr>‣ Put \u003Ca href=\"https://twitter.com/hashtag/Slack?src=hash&amp;ref_src=twsrc%5Etfw\">#Slack\u003C/a> notifications on dnd on weekends. \u003Cbr>‣ When you notice someone in a different time zone should be asleep, tell them.\u003Ca href=\"https://t.co/zKiytIMXsJ\">https://t.co/zKiytIMXsJ\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/975463098676076544?ref_src=twsrc%5Etfw\">March 18, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### And everyone struggles with Git sometimes\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Git happens! Here&#39;s how to fix it 💅\u003Ca href=\"https://t.co/IMAuDH8j3P\">https://t.co/IMAuDH8j3P\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1058445892464902146?ref_src=twsrc%5Etfw\">November 2, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">How &amp; why to keep your Git commit history clean 💻✨ via \u003Ca href=\"https://twitter.com/Kushal_Pandya?ref_src=twsrc%5Etfw\">@Kushal_Pandya\u003C/a> \u003Ca href=\"https://t.co/HbYv2KsyGQ\">https://t.co/HbYv2KsyGQ\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1006245935675006977?ref_src=twsrc%5Etfw\">June 11, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### We celebrated 20 years of open source ❤️\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">We&#39;re excited to celebrate the 20th anniversary of open source this year at \u003Ca href=\"https://twitter.com/hashtag/OSCON?src=hash&amp;ref_src=twsrc%5Etfw\">#OSCON\u003C/a>! Check out our brief history of OSS ✨ \u003Ca href=\"https://t.co/ox2s1rDS9f\">https://t.co/ox2s1rDS9f\u003C/a> \u003Ca href=\"https://t.co/LIdQtQWeoO\">pic.twitter.com/LIdQtQWeoO\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1018886162851811328?ref_src=twsrc%5Etfw\">July 16, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### And made GitLab Gold free for open source projects and educational institutions 🎉\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Today, we&#39;re excited to announce that GitLab Ultimate and Gold are now free for educational institutions and open source projects 💜\u003Ca href=\"https://t.co/5PA08IYnwM\">https://t.co/5PA08IYnwM\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1004033746897719298?ref_src=twsrc%5Etfw\">June 5, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### We celebrated inspiring GitLab users\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Video and blog about my journey from stunting motorcycles to \u003Ca href=\"https://twitter.com/hashtag/Kubernetes?src=hash&amp;ref_src=twsrc%5Etfw\">#Kubernetes\u003C/a> - and some gushing about my love for \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> \u003Ca href=\"https://t.co/ro73lucF7n\">https://t.co/ro73lucF7n\u003C/a>\u003C/p>&mdash; Leah Petersen (@eccomi_leah) \u003Ca href=\"https://twitter.com/eccomi_leah/status/1009894688906792960?ref_src=twsrc%5Etfw\">June 21, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### And there was lots of love for GitLab swag\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003C!-- first tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Thanks for the swag \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a>. That&#39;s one reason to contribute 😃 \u003Ca href=\"https://t.co/58Z1PsGTen\">pic.twitter.com/58Z1PsGTen\u003C/a>\u003C/p>&mdash; Amit Rathi (@amittrathi) \u003Ca href=\"https://twitter.com/amittrathi/status/1074562107545272320?ref_src=twsrc%5Etfw\">December 17, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- second tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">It’s the first time that I receive a birthday gift from the company that I work for. It’s simple, small and modest... but it goes a long way. Thanks \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> I love them 😍👍🎉 \u003Ca href=\"https://t.co/AMCUdQevFu\">pic.twitter.com/AMCUdQevFu\u003C/a>\u003C/p>&mdash; Matej Latin (@matejlatin) \u003Ca href=\"https://twitter.com/matejlatin/status/1039473209291231232?ref_src=twsrc%5Etfw\">September 11, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">When it comes to swag, \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> has raised the bar. This is an actual wooden pin. More pins as swag please 😬 cheers \u003Ca href=\"https://twitter.com/samdbeckham?ref_src=twsrc%5Etfw\">@samdbeckham\u003C/a> \u003Ca href=\"https://t.co/bcZtvqAjPE\">pic.twitter.com/bcZtvqAjPE\u003C/a>\u003C/p>&mdash; Sophie Koonin (@type__error) \u003Ca href=\"https://twitter.com/type__error/status/1058105160176726017?ref_src=twsrc%5Etfw\">November 1, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Thank you to \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> for the swag! Dear participants, we have many things for you 😁 \u003Ca href=\"https://t.co/9BINX4UbLD\">pic.twitter.com/9BINX4UbLD\u003C/a>\u003C/p>&mdash; TechForum eXplore (@TeXWL) \u003Ca href=\"https://twitter.com/TeXWL/status/1011652998953611268?ref_src=twsrc%5Etfw\">June 26, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">First package of swag for our CI/CD \u003Ca href=\"https://twitter.com/hashtag/Hackathon?src=hash&amp;ref_src=twsrc%5Etfw\">#Hackathon\u003C/a> arrived - yes: there will be \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> socks! 49 people RSVPed so far - it‘s gonna be epic! via \u003Ca href=\"https://twitter.com/MeetupDE?ref_src=twsrc%5Etfw\">@MeetupDE\u003C/a> \u003Ca href=\"https://t.co/fZtBd7VZRi\">https://t.co/fZtBd7VZRi\u003C/a> \u003Ca href=\"https://t.co/qyLbTeZN2t\">pic.twitter.com/qyLbTeZN2t\u003C/a>\u003C/p>&mdash; Michael Lihs (@kaktusmimi) \u003Ca href=\"https://twitter.com/kaktusmimi/status/970199201320665088?ref_src=twsrc%5Etfw\">March 4, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n## GitLab news\n\n### We announced Series D funding and joined the 🦄 club\n\nIn September we [announced $100 million in Series D funding](/blog/announcing-100m-series-d-funding/), led by ICONIQ Capital. This brought our valuation to over $1 billion, and we couldn't be more excited to use this momentum to become best-in-class in every DevOps software category, from planning to monitoring.\n\n### We made #44 on the Inc. 5000 list\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">ICYMI: We made number 44 on the \u003Ca href=\"https://twitter.com/hashtag/inc5000?src=hash&amp;ref_src=twsrc%5Etfw\">#inc5000\u003C/a> list of 2018&#39;s fastest-growing companies 🎉: \u003Ca href=\"https://t.co/x3jBqItfVK\">https://t.co/x3jBqItfVK\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1032201460946268160?ref_src=twsrc%5Etfw\">August 22, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### We hung out IRL in beautiful Cape Town\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Good morning from Cape Town! It&#39;s Day 6 of the GitLab Summit 😍 \u003Ca href=\"https://t.co/WHvaSnKHM4\">pic.twitter.com/WHvaSnKHM4\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1034402765974450176?ref_src=twsrc%5Etfw\">August 28, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### We made #17 on YC's 2018 Top Companies list\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Feeling proud of everyone \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@GitLab\u003C/a>: as of October 2018, we are number 17 of the \u003Ca href=\"https://twitter.com/ycombinator?ref_src=twsrc%5Etfw\">@YCombinator\u003C/a> Top Companies List, among companies like Airbnb, Stripe, Dropbox, Reddit and Twitch \u003Ca href=\"https://t.co/UQZCaBAUeJ\">https://t.co/UQZCaBAUeJ\u003C/a> \u003Ca href=\"https://t.co/YUJbDhRSyq\">pic.twitter.com/YUJbDhRSyq\u003C/a>\u003C/p>&mdash; Pedro MS (@PedroMScom) \u003Ca href=\"https://twitter.com/PedroMScom/status/1068146315404763139?ref_src=twsrc%5Etfw\">November 29, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n### And we debuted some 🔥 integrations\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Apple just announced Xcode 10 is now integrated with GitLab \u003Ca href=\"https://t.co/eQbtiY4IYm\">pic.twitter.com/eQbtiY4IYm\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1003764673454342144?ref_src=twsrc%5Etfw\">June 4, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">We’re so excited to announce the new GKE integration for GitLab! Now you’re just moments away from a scalable development environment. \u003Ca href=\"https://t.co/4RRVOXlrwz\">https://t.co/4RRVOXlrwz\u003C/a> \u003Ca href=\"https://t.co/RSWwZDSPup\">pic.twitter.com/RSWwZDSPup\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/981916957527044096?ref_src=twsrc%5Etfw\">April 5, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n\nThat's all for now! We can't wait to see what 2019 will bring 🌟 As always, come hang out and tweet us your thoughts [@gitlab](https://twitter.com/gitlab).\n",[268,890,680,804],{"slug":2494,"featured":6,"template":683},"gitlab-2018-year-in-review","content:en-us:blog:gitlab-2018-year-in-review.yml","Gitlab 2018 Year In Review","en-us/blog/gitlab-2018-year-in-review.yml","en-us/blog/gitlab-2018-year-in-review",{"_path":2500,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2501,"content":2506,"config":2512,"_id":2514,"_type":17,"title":2515,"_source":18,"_file":2516,"_stem":2517,"_extension":21},"/en-us/blog/github-offering-free-private-repos-for-up-to-three-collaborators",{"title":2502,"description":2503,"ogTitle":2502,"ogDescription":2503,"noIndex":6,"ogImage":967,"ogUrl":2504,"ogSiteName":671,"ogType":672,"canonicalUrls":2504,"schema":2505},"GitHub's free private repos: GitLab's perspective","GitLab's CEO reflects on this move and what it means for the software development space.","https://about.gitlab.com/blog/github-offering-free-private-repos-for-up-to-three-collaborators","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitHub now offers free private repos for up to three collaborators – here are our thoughts\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2019-01-07\",\n      }",{"title":2507,"description":2503,"authors":2508,"heroImage":967,"date":2509,"body":2510,"category":14,"tags":2511},"GitHub now offers free private repos for up to three collaborators – here are our thoughts",[676],"2019-01-07","\nGitHub just launched [free private repos with up to three collaborators](https://blog.github.com/2019-01-07-new-year-new-github/). I like to think that increased competition from us (GitLab) contributed to this change – as one Hacker News commenter stated, [\"Thank you GitLab for providing market competition forcing GitHub to consider this!\"](https://news.ycombinator.com/item?id=18848142)\n\n## Some history\n\nWhen we [originally announced GitLab.com](https://news.ycombinator.com/item?id=4428278) I made the main point that it would have private repos for free. I think it is great for beginner users that private repos on GitHub are now free.\nIf you're starting to program and aren't ready to share your code with the world yet, you don't have to have a paid account to keep it private.\n\nAt the time, I was very disappointed to learn that Bitbucket.org already offered the same. GitLab took off despite that and GitLab.com recently surpassed [10 million projects](https://twitter.com/gitlab/status/1075377374022262784) and in the [top dev tools ranking of Axosoft](https://blog.axosoft.com/top-developer-tools-2019/) GitLab climbed the ranks 4 spots and overtook GitHub for the first year.\n\n## Looking ahead\n\nAt GitLab we think that repositories will become a commodity. I think Microsoft will try to generate more revenue with people using Azure more instead of paying for repos. We're focusing on making a single application for the entire DevOps lifecycle [that can replace a lot of other tools](/competition/). Or, [as Stavros Korokithakis phrased it](https://news.ycombinator.com/item?id=18848066): \"My move to GitLab was basically 'Come for the free repos, stay for the rest of the amazing features.' I will not be moving off it, and my new repos will keep being on GitLab.\"\n\nWe think the long-term trend is [multi-cloud](https://medium.com/gitlab-magazine/multi-cloud-maturity-model-2de185c01dd7) and we'll keep shipping with our [2,200 other contributors](http://contributors.gitlab.com/) to make this a reality.\n\nIn the meantime, here are some more details of our current GitLab free private repository offering vs GitHub's:\n\n| Free functionality                  | GitLab    | GitHub                                    |\n|--------------------------|-----------|-------------------------------------------|\n| Private repositories     | Yes       | Yes                                       |\n| Number of collaborators  | Unlimited | 3                                         |\n| Wiki                     | Yes       | No (public or paid only)                  |\n| Pages                    | Yes       | No (public or paid only)                  |\n| Capacity                 | 10GB      | 1GB                                       |\n| [Indicates who is paying](https://twitter.com/rgaiacs/status/1082581763745083392)  | No        | Yes                                 |\n| Free CI                 | 2,000 min.     | Maybe a free tier for Actions on Azure                              |\n| [Entire DevOps lifecycle](https://about.gitlab.com/stages-devops-lifecycle/) | Yes | No |\n| Location of the repo | Anywhere | Not in groups/orgs |\n| API concurrent rate limit | 36000 | 5000 |\n\nSign up for a [free trial](https://about.gitlab.com/pricing/#gitlab-com)\n",[680,804],{"slug":2513,"featured":6,"template":683},"github-offering-free-private-repos-for-up-to-three-collaborators","content:en-us:blog:github-offering-free-private-repos-for-up-to-three-collaborators.yml","Github Offering Free Private Repos For Up To Three Collaborators","en-us/blog/github-offering-free-private-repos-for-up-to-three-collaborators.yml","en-us/blog/github-offering-free-private-repos-for-up-to-three-collaborators",{"_path":2519,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2520,"content":2526,"config":2531,"_id":2533,"_type":17,"title":2534,"_source":18,"_file":2535,"_stem":2536,"_extension":21},"/en-us/blog/gitlab-chatops-will-become-available-to-everyone",{"title":2521,"description":2522,"ogTitle":2521,"ogDescription":2522,"noIndex":6,"ogImage":2523,"ogUrl":2524,"ogSiteName":671,"ogType":672,"canonicalUrls":2524,"schema":2525},"We're making GitLab ChatOps available to everyone!","As a holiday gift, the ChatOps functionality in GitLab will be open sourced","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679978/Blog/Hero%20Images/holiday-gift.jpg","https://about.gitlab.com/blog/gitlab-chatops-will-become-available-to-everyone","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"We're making GitLab ChatOps available to everyone!\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2018-12-24\",\n      }",{"title":2521,"description":2522,"authors":2527,"heroImage":2523,"date":2528,"body":2529,"category":14,"tags":2530},[676],"2018-12-24","\n\nGitLab is an open-core project that has both open-source and source-available code.\nThe [likely type of buyer determines which tier a feature goes into](/company/pricing/#the-likely-type-of-buyer-determines-what-features-go-in-what-tier).\nIf the buyer for a feature is an individual contributor, we [promise to open-source it](/company/stewardship/#what-features-are-paid-only).\n\nWe don't always get this classification right. When something that is already open source should be source-available, we leave it open source — and when something should be open-source, we fix it.\n\nThe latter is the case for [GitLab ChatOps](https://docs.gitlab.com/ee/ci/chatops/). ChatOps lets you run commands from chat (right now Slack and Mattermost are supported). Running these commands in a channel allow everyone to be on the same page about what happened. We use it in production, for example to publish and deploy GitLab and to run database queries:\n\n![alt text](https://about.gitlab.com/images/blogimages/chatops.png \"Logo Title Text 1\")\n\nWe discovered that the people that care most about this feature are individual contributors, so we'll open source this feature in GitLab 11.9.\n\nThe ChatOps market has not taken off the way that many of us (including myself) predicted.\nThe first ChatOps client was Hubot and its popularity [has dwindled since 2015](https://trends.google.com/trends/explore?date=all&geo=US&q=hubot).\nI was really excited for the next generation of ChatOps provided by [the Cog project](https://github.com/operable/cog), but the company behind this initiative [had to wind down](https://blog.operable.io/cog-marches-on-8956b4fb74fe).\n\nIn talking with industry experts, I think there are five ingredients needed to make ChatOps successful:\n\n1. Monitoring: ChatOps is great for troubleshooting together, so it should be easy to show a graph.\n1. Queryability: allow a parameter, for example a SQL command to run, or to show a graph of a specific server. \n1. Permissions: People should have different levels of access, preferably [Role Based Access Control (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control).\n1. Zero-config: You should have access to a lot of functionality without any setup required. \n1. Consistency: ChatOps should work the same throughout the organization.\n\nI think monitoring and queryability were innovations in Hubot. In Hubot anyone with access could do anything, this was fixed when Cog added permissions. GitLab adds zero-config and consistency so that everything works out of the box. Things are able to work out of the box in GitLab because it is a single application for the entire DevOps lifecycle. GitLab knows how to deploy an application with [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/). In GitLab you have [monitoring](https://docs.gitlab.com/ee/administration/monitoring/) with metrics and tracing.\n\nCurrently the functionality in ChatOps doesn't have commands for deployments and metrics by default. We hope that open-sourcing the functionality will enourage more use of ChatOps and more contributions to it.\n\nThe wider community has become more active this year, with more than 150 contributions to all different parts of GitLab in the last release.\n\nFor this we are most grateful.\nHappy holidays!\n",[268],{"slug":2532,"featured":6,"template":683},"gitlab-chatops-will-become-available-to-everyone","content:en-us:blog:gitlab-chatops-will-become-available-to-everyone.yml","Gitlab Chatops Will Become Available To Everyone","en-us/blog/gitlab-chatops-will-become-available-to-everyone.yml","en-us/blog/gitlab-chatops-will-become-available-to-everyone",{"_path":2538,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2539,"content":2545,"config":2551,"_id":2553,"_type":17,"title":2554,"_source":18,"_file":2555,"_stem":2556,"_extension":21},"/en-us/blog/introducing-our-statement-of-support",{"title":2540,"description":2541,"ogTitle":2540,"ogDescription":2541,"noIndex":6,"ogImage":2542,"ogUrl":2543,"ogSiteName":671,"ogType":672,"canonicalUrls":2543,"schema":2544},"Introducing our Statement of Support","Our Statement of Support defines how and what we support in terms of our products, services, and applications. Here's an explainer on what you can expect from us.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678875/Blog/Hero%20Images/support-series-cover.png","https://about.gitlab.com/blog/introducing-our-statement-of-support","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Introducing our Statement of Support\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Tom Cooney\"}],\n        \"datePublished\": \"2018-12-20\",\n      }",{"title":2540,"description":2541,"authors":2546,"heroImage":2542,"date":2548,"body":2549,"category":14,"tags":2550},[2547],"Tom Cooney","2018-12-20","\n\nRecently, our team released an update to our [support page](/support/), with a new Statement of Support. This is a document defining how and what we support in terms of our products, services, and applications. Many of the policies defined in this document have existed before, and nearly all of it was what we practiced all along. However, we wanted to be clearer on our policies and stricter in practicing them to ensure we're providing the best level of support to our customers and the community.\n\nI want to cover two areas of our Statement of Support that might need a bit more clarification.\n\n## Scope of support\n\nOne of the more important parts of the Statement of Support is defining the scope of support. Scope of support, in the simplest terms, is what we support and what we do not. Ideally, we would support everything. However, without drastically reducing the quality of our support or increasing the price of our products this would be impossible. The \"limitations\" actually help us to create a more consistent and efficient support experience.\n\n### Scope allows us to streamline our expertise\n\nThis means our support teams will be experts in the necessary fields rather than being stretched thin. We don't want to widen our coverage at the cost of depth. There are core aspects of our services that we _need_ to nail down, and we can't afford to be shallow in these areas.\n\n### Strict adherence to the scope means more consistent support\n\nTeams that don't follow (or have) a scope of support often enable customers to play \"support roulette\" – a practice where a customer might continually contact support for the same issue in the hopes of finding a representative that is willing and able to extend outside of scope. We don't think this is a good experience for either side. We want there to be clear understanding of what support will do.\n\nSo, what do we support and what do we not?\n\n## Support for paid users\n\nFor our paid users, we have pages describing [the scope of support for GitLab.com (SaaS)](/support/statement-of-support/#gitlabcom) and [the scope of support for GitLab Self-managed Licenses](/support/statement-of-support/#self-managed).\n\nWhat about free users? For our wider community members who don't need the features in our paid plans, I'd like to go a bit more in-depth.\n\n## Community-first support for free users\n\nFor our free users, support options will always be \"community first.\" Official support at GitLab is a paid feature, and we encourage our free users to first use resources such as our [documentation](https://docs.gitlab.com) and [community forums](https://forum.gitlab.com).\n\nWhen you run into bugs or have feature requests, it is best to submit an issue to the appropriate issue trackers. For example, the [Community Edition Issue Tracker](https://gitlab.com/gitlab-org/gitlab-ce/issues) or the [GitLab Runner Issue Tracker](https://gitlab.com/gitlab-org/gitlab-runner/issues) would cover bug reports and feature requests for GitLab and GitLab Runner. You can browse all of the repositories in our open-core offering in the [gitlab-org](https://gitlab.com/gitlab-org) group on GitLab.com.\n\nThis type of community-first approach is standard in open source/core and free-to-use applications. Internally, we used the support model of a very popular open source application, [WordPress](https://wordpress.org/support/), and in particular, [WordPress.com (SaaS)](https://en.support.wordpress.com/contact/), when designing our Statement of Support.\n\nIt's a major goal of ours to better foster the community resources. We want the answers to general technical questions about GitLab to be readily available, and we want to build a strong community that helps one another solve issues. We are working with our community team to make the forums more active. It is a _community_ resource, however, and we would appreciate your contributions here as well.\n\nHaving said this, we understand there are certain things that require the attention of our support team, even for our free users. If in doubt, please do submit a ticket, and our team will triage as appropriate. We don't want there to be any discouragement in seeking help from our team. Please understand, however, that priority may go to paid users.\n\nSee [more details on the scope of support for free users](/support/statement-of-support/#free-plan-users).\n\n## Summing up\n\nThe GitLab support team is here to help. Whether you are a free user or an Ultimate customer, we want to ensure you have the best experience possible. We believe that this Statement of Support is an important tool in that process. Everyone at GitLab is a member of the GitLab community and we all play a role in making the entire ecosystem better. We look forward to working with you all to make our projects, issue trackers and forums better, more resource-rich, places.\n",[890,680],{"slug":2552,"featured":6,"template":683},"introducing-our-statement-of-support","content:en-us:blog:introducing-our-statement-of-support.yml","Introducing Our Statement Of Support","en-us/blog/introducing-our-statement-of-support.yml","en-us/blog/introducing-our-statement-of-support",{"_path":2558,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2559,"content":2564,"config":2569,"_id":2571,"_type":17,"title":2572,"_source":18,"_file":2573,"_stem":2574,"_extension":21},"/en-us/blog/gartner-peer-choice-gitlab-2018",{"title":2560,"description":2561,"ogTitle":2560,"ogDescription":2561,"noIndex":6,"ogImage":967,"ogUrl":2562,"ogSiteName":671,"ogType":672,"canonicalUrls":2562,"schema":2563},"GitLab named a December 2018 Gartner Peer Insights Customers' Choice for Application Release Orchestration","The Gartner Peer Insights Customers’ Choice is a recognition of vendors in the market verified by end-user reviews and ratings.","https://about.gitlab.com/blog/gartner-peer-choice-gitlab-2018","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab named a December 2018 Gartner Peer Insights Customers' Choice for Application Release Orchestration\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2018-12-17\",\n      }",{"title":2560,"description":2561,"authors":2565,"heroImage":967,"date":2566,"body":2567,"category":14,"tags":2568},[699],"2018-12-17","\n\nWe are excited to announce that we have been recognized as a December 2018\nGartner Peer Insights Customers’ Choice for [Application Release Orchestration](https://www.gartner.com/reviews/customers-choice/application-release-orchestration-solutions/Dec-2018) (ARO). GitLab takes great pride in this distinction,\nas customer feedback continues to shape our products and services.\n\nIn its announcement, Gartner explains, “The Gartner Peer Insights Customers’\nChoice is a recognition of vendors in this market by verified end-user professionals,\ntaking into account both the number of reviews and the overall user ratings.”\nTo ensure fair evaluation, Gartner maintains [rigorous criteria](https://gartner.com/reviews-pages/peer-insights-customers-choice-methodology/)\nfor recognizing vendors with a high customer satisfaction rate.\n\nFor this distinction, a vendor must have a minimum of 50 published reviews with\nan average overall rating of 4.2 stars or higher. [GitLab received 66 reviews](https://www.gartner.com/reviews/market/application-release-orchestration-solutions/vendor/gitlab)\nand a 4.4 rating as of Dec. 14, 2018.\n\nBy providing more powerful ARO tooling, we're able to help\nindividual release managers become more effective in their role of orchestrating\nthe releases moving through their software development organizations. We believe\nthat Release Orchestration is not a framework for placing limitations on CD teams,\nbut actually helps to enable them instead. This is especially so for teams operating under more controlled environments, such as large enterprises or those with other regulatory requirements.\n\nHere are some excerpts from customers that contributed to the distinction:\n\n> \"Great product, great vision. This is how companies will build software in the future.\" - Director of Engineering in the Services Industry\n\n> \"GitLab is driving the future of software development/DevOps lifecycle\" - Enterprise Architect, Finance Industry\n\n> \"A powerful alternative for multiple applications.\" -Java Software Engineer in Services Industry\n\n> \"Best tool to use when looking for agility and flexiblity\" - Software Developer in Services Industry\n\n[Read all of the reviews for GitLab.](https://www.gartner.com/reviews/market/application-release-orchestration-solutions/vendor/gitlab/?pid=67923)\n\n### Help us solve release orchestration frustration\n\nTo all of our customers who submitted reviews, thank you! These reviews mold our\nproducts and our customer journey, and we look forward to building on the\nexperience that earned us this distinction!\u2028 If you have a story to share, we\nencourage you to join the Gartner Peer Insights crowd and weigh in.\n\nOur priority is to solve problems for the future. We want GitLab to be a solution\nthat brings you to where you want to take your engineering and software delivery\nprocesses, rather than propping up inefficient processes with just enough\nautomation to make them bearable. That's why we're starting with solving release\norchestration problems from a modern, cloud native perspective. For these reasons\nour next item is [introducing release pages](https://gitlab.com/gitlab-org/gitlab-ce/issues/41766), which\nfacilitates a way to publish releases familiar to open source developers. Please join\nus in the conversation about this topic at our [strategic epic for Release Orchestration](https://gitlab.com/groups/gitlab-org/-/epics/491).\n\nThe GARTNER PEER INSIGHTS CUSTOMERS’ CHOICE badge is a trademark and service mark of Gartner, Inc., and/or its affiliates, and is used herein with permission. All rights reserved. Gartner Peer Insights Customers’ Choice constitute the subjective opinions of individual end-user reviews, ratings, and data applied against a documented methodology; they neither represent the views of, nor constitute an endorsement by, Gartner or its affiliates.\n{: .note}\n",[680],{"slug":2570,"featured":6,"template":683},"gartner-peer-choice-gitlab-2018","content:en-us:blog:gartner-peer-choice-gitlab-2018.yml","Gartner Peer Choice Gitlab 2018","en-us/blog/gartner-peer-choice-gitlab-2018.yml","en-us/blog/gartner-peer-choice-gitlab-2018",{"_path":2576,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2577,"content":2582,"config":2588,"_id":2590,"_type":17,"title":2591,"_source":18,"_file":2592,"_stem":2593,"_extension":21},"/en-us/blog/gitlab-tls1011-discontinued-update",{"title":2578,"description":2579,"ogTitle":2578,"ogDescription":2579,"noIndex":6,"ogImage":1051,"ogUrl":2580,"ogSiteName":671,"ogType":672,"canonicalUrls":2580,"schema":2581},"TLS 1.0 and 1.1 support ended on GitLab.com and API","TLS 1.2 is now required for all clients that connect to GitLab.com and our GitLab API.","https://about.gitlab.com/blog/gitlab-tls1011-discontinued-update","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Support for TLS 1.0 and 1.1 discontinued on GitLab.com and GitLab API on 2018-12-15\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Melissa Farber\"}],\n        \"datePublished\": \"2018-12-17\",\n      }",{"title":2583,"description":2579,"authors":2584,"heroImage":1051,"date":2566,"body":2586,"category":14,"tags":2587},"Support for TLS 1.0 and 1.1 discontinued on GitLab.com and GitLab API on 2018-12-15",[2585],"Melissa Farber","\n\nOur commitment to providing our users with an increasingly secure platform, supported by the [PCI Security Standards Council](https://blog.pcisecuritystandards.org/are-you-ready-for-30-june-2018-sayin-goodbye-to-ssl-early-tls) mandate, required us to discontinue support of TLS 1.0 and 1.1 on GitLab.com and in our GitLab API on Dec. 15, 2018.\n\nTLS 1.2 is now required for all clients that connect to GitLab.com and our GitLab API.\n\nAs we announced in our [October](/blog/gitlab-to-deprecate-older-tls/) and [November](/blog/gitlab-tls-support-discontinue-update/) blog posts about this initiative, we are always working to evolve our security posture and part of that evolution was the discontinuation of support for these older versions of TLS, which have been rendered outdated or proven to be prone to attacks. The migration away from these weaker cryptographic standards was key to GitLab's compliance with the Payment Card Industry (PCI) DSS 3.1 mandate, which required the deprecation of Secure Sockets Layer (SSL) 3.0, TLS 1.0, and some ciphers supported by TLS 1.1 from protocols supporting strong cryptography.\n\n### The discontinuation of support for TLS 1.0 and 1.1 is only for GitLab.com and our GitLab API\n\nThe changes required to discontinue TLS 1.0 and 1.1 support for self-managed installations are being tracked in [this public issue in the Omnibus project](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/3875). These updates are currently being scheduled for major release 12.0, slated for Mar. 22, 2019.\n\nIf you have experienced any disruptions of service due to the discontinuation of support for TLS versions 1.0 and 1.1, please do not hesitate to reach out to [GitLab support](/support/#contact-support).\n\n## Identified client incompatibilities\n\nThe majority of traffic should be unaffected by the discontinuation of support for TLS versions 1.0 and 1.1. Currently, the vast majority of requests to GitLab.com are using up-to-date clients with support for TLS 1.2. While there are a few remaining clients that we believe will be affected (see below), most of these can be updated to work with TLS 1.2.\n\n### Git-Credential-Manager-for-Windows prior to 1.14.0\n\nVersions prior to 1.14.0 of Git-Credential-Manager-for-Windows do not support TLSv1.2. This can be addressed by updating to v1.14.0.\n\n### Git on Red Hat 5, \u003C 6.8, and \u003C 7.2\n\nUsers running Red Hat 5 are advised to upgrade to a newer version of the operating system as Red Hat does not have a point release planned for 5 that supports TLS 1.2. Git clients shipped with Red Hat 6 and 7 did not support TLSv1.2, which can be remediated by updating to versions 6.8 and 7.2 respectively.\n\n### JGit/Java releases \u003C JDK 8\n\nVersions of the JDK 6 and prior do not support TLSv1.2. We advise users of JDK \u003C= 6 to upgrade to a newer version of the JDK.\n\n### Visual Studio\n\nThe latest version of Visual Studio 2017 supports TLSv1.2. Users not running the latest version are advised to upgrade.\n\nIf you have any questions, please reach out to the Security team by emailing security@gitlab.com.\n",[912,994],{"slug":2589,"featured":6,"template":683},"gitlab-tls1011-discontinued-update","content:en-us:blog:gitlab-tls1011-discontinued-update.yml","Gitlab Tls1011 Discontinued Update","en-us/blog/gitlab-tls1011-discontinued-update.yml","en-us/blog/gitlab-tls1011-discontinued-update",{"_path":2595,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2596,"content":2601,"config":2606,"_id":2608,"_type":17,"title":2609,"_source":18,"_file":2610,"_stem":2611,"_extension":21},"/en-us/blog/introducing-gitlab-serverless",{"title":2597,"description":2598,"ogTitle":2597,"ogDescription":2598,"noIndex":6,"ogImage":1974,"ogUrl":2599,"ogSiteName":671,"ogType":672,"canonicalUrls":2599,"schema":2600},"Announcing GitLab Serverless","The true value of serverless is best realized via a single-application DevOps experience – that's why we're launching GitLab Serverless.","https://about.gitlab.com/blog/introducing-gitlab-serverless","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Announcing GitLab Serverless\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Priyanka Sharma\"}],\n        \"datePublished\": \"2018-12-11\",\n      }",{"title":2597,"description":2598,"authors":2602,"heroImage":1974,"date":2603,"body":2604,"category":14,"tags":2605},[1804],"2018-12-11","\n\n[Serverless](/topics/serverless/) is the latest innovation in cloud computing that promises to alter the cost-benefit equation for enterprises. As our CEO, [Sid Sijbrandij](/company/team/#sytses) says, \"All roads lead to compute.\" There is a race among providers to acquire as many workloads from enterprises as possible, at the cheapest cost. The latter is where serverless comes in: serverless computing is an execution model in which the cloud provider acts as the server, dynamically managing the allocation of machine resources. Pricing is based on the actual resources consumed by an application, rather than on pre-purchased units of capacity.\n\nThis field began with the release of [AWS Lambda](https://en.wikipedia.org/wiki/AWS_Lambda) in November 2014. In the four short years since then, it has become a well-known workflow that enterprises are eager to adopt. Today, we are announcing [GitLab Serverless](/topics/serverless/) to enable our users to take advantage of the benefits of serverless.\n\n## GitLab Serverless is launching Dec. 22\n\nGitLab is the only single application for the entire [DevOps lifecycle](/topics/devops/). As part of that vision, we will release GitLab Serverless in GitLab 11.6, coming later this month, to allow enterprises to plan, build, and manage serverless workloads with the rest of their code from within the same GitLab UI. It leverages [Knative](https://cloud.google.com/knative/), which enables [autoscaling](https://en.wikipedia.org/wiki/Autoscaling) down to zero and back up to run serverless workloads on Kubernetes. This allows businesses to employ a multi-cloud strategy and leverage the value of serverless without being locked into a specific cloud provider.\n\nIn order to bring the best-in-class to our users, we partnered with [TriggerMesh](https://triggermesh.com/) founder [Sebastien Goasguen](https://twitter.com/sebgoa) and his team. Sebastien has been part of the serverless landscape since the beginning. He built a precursor to Knative, Kubeless. He is actively involved with the Knative community and understands the workflow from soup to nuts. Sebastien says, \"We are excited to help GitLab enable all their users to deploy functions directly on the Knative function-as-a-service clusters. We believe that these additions to GitLab will give those users the best possible experience for complete serverless computing from beginning to end.\"\n\n## \"Serverless first\"\n\nAs any attendees at [AWS re:Invent](/blog/aws-reinvent-recap/) would have noticed, the behemoth is putting all its energies behind serverless. We heard [stories from the likes of Trustpilot](https://www.computerworlduk.com/cloud-computing/how-trustpilot-takes-serverless-first-approach-engineering-with-aws-3688267/) about changing their engineering culture to \"serverless first.\" This is because serverless cloud providers save money by not having to keep idle machines provisioned and running, and are passing on the benefits to their customers. While this is amazing news, it is hard to truly embrace a workflow if it lives outside of developers' entrenched habits. GitLab has millions of users and is used by over 100,000 organizations, and with GitLab Serverless they can now enjoy the cost savings and elegant code design serverless brings, from the comfort of their established workflows.\n\nAs with all GitLab endeavors, making serverless multi-cloud and accessible to everyone is a big, hairy, audacious goal. Today, Knative can be installed to a Kubernetes cluster with a single click via the GitLab Kubernetes integration. It shipped in [GitLab 11.5](/releases/2018/11/22/gitlab-11-5-released/#easily-deploy-and-integrate-knative-with-gitlab).\n\n### How to activate GitLab Serverless\n\nStarting with the release of GitLab 11.6 on Dec. 22, the \"Serverless\" tab will be available for users as an alpha offering. Please do check it out and share your feedback with us.\n\n1. Go to your GitLab instance and pick your project of choice.\n2. Click on the `Operations` menu item in the sidebar.\n3. Pick `Serverless` to view the list of all the functions you have defined. You will also be able to see a brief description as well as the Knative cluster the function is deploying to.\n\n![Serverless list view](https://gitlab.com/gitlab-org/gitlab-ce/uploads/8b821d4aaa1bb75375dc54567a4313ad/CE-project__serverless-grouped.png \"Serverless list view\"){: .shadow.large.center}\n\nTo dig further, click into the function for more info.\n\n![function detail view](https://gitlab.com/gitlab-org/gitlab-ce/uploads/9e1e3893aa5369a2a165d1dd95c98dd8/CE-project__serverless--function-details.png \"function detail view\"){: .shadow.large.center}\n\nAll this goodness will be available Dec. 22. In the meantime, we would love to see you at [KubeCon Seattle](/events), where our product and engineering experts are attending to talk all things serverless with attendees. Hope to see you at booth S44!\n",[680,995,723,232,1059],{"slug":2607,"featured":6,"template":683},"introducing-gitlab-serverless","content:en-us:blog:introducing-gitlab-serverless.yml","Introducing Gitlab Serverless","en-us/blog/introducing-gitlab-serverless.yml","en-us/blog/introducing-gitlab-serverless",{"_path":2613,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2614,"content":2620,"config":2625,"_id":2627,"_type":17,"title":2628,"_source":18,"_file":2629,"_stem":2630,"_extension":21},"/en-us/blog/aws-reinvent-recap",{"title":2615,"description":2616,"ogTitle":2615,"ogDescription":2616,"noIndex":6,"ogImage":2617,"ogUrl":2618,"ogSiteName":671,"ogType":672,"canonicalUrls":2618,"schema":2619},"Highlights from AWS re:Invent 2018","Catch up on what GitLab got up to at AWS re:Invent last week! Reinventing pipelines, emerging as a single application, theCUBE interviews, and more.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679994/Blog/Hero%20Images/aws_booth_2018.jpg","https://about.gitlab.com/blog/aws-reinvent-recap","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Highlights from AWS re:Invent 2018\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Priyanka Sharma\"}],\n        \"datePublished\": \"2018-12-06\",\n      }",{"title":2615,"description":2616,"authors":2621,"heroImage":2617,"date":2622,"body":2623,"category":14,"tags":2624},[1804],"2018-12-06","\n\nLast week GitLab was at AWS re:Invent 2018, the marquee event for cloud computing in the US. As the frontrunner in the space, Amazon has built re:Invent to be a juggernaut. This year it commanded most of the Las Vegas strip and had over 50,000 attendees. As a first-time visitor myself, I was impressed by the sheer scale and efficiency of the event. I was also thrilled to achieve my personal goal of giving my first talk with a live demo using code and GitLab. As for GitLab, we saw that our company emerged as a leader in the DevOps space with a single application for the whole software development lifecycle.\n\n## Highlights\n\n### Reinventing CI/CD pipelines\n\nOur CEO [Sid Sijbrandij](/company/team/#sytses) and I did a talk and live demo about reinventing CI/CD pipelines using GitLab, [Kubernetes](/solutions/kubernetes/), and EKS. This was our first hint that this re:Invent was going to be special. The talk was bursting at the seams with attendees, as we shared both the challenges of the toolchain crisis engulfing our ecosystem, and about how a single application for the entire DevOps lifecycle can make an improvement of over 200 percent in cycle times. You can [check out the presentation here](https://docs.google.com/presentation/d/1x1g4pfpoaav9lhcYkjAJylLMl-9S0JFTeKXlNF98O-I/edit?usp=sharing).\n\n![Sid Sijbrandij and Priyanka Sharma on stage at AWS re:Invent](https://about.gitlab.com/images/blogimages/aws-2018/aws_2018_sid_talk_stage.jpeg){: .shadow.medium.center}\n\nThe demo, which showed us running a CI/CD pipeline and deploying code to Kubernetes on EKS, is an example of the [cloud native workflows](/topics/cloud-native/) users can push via GitLab. It is such competency that makes Kubernetes on EKS a breeze and is the reason GitLab was awarded the [AWS Partner DevOps Competency Certification](/blog/gitlab-achieves-aws-devops-competency-certification/) to confirm our viability and excellence as a DevOps solution for companies using AWS Cloud.\n\n### Validation for our vision\n\nOur experience at re:Invent was one of validation and emergence. As a company, we saw that our efforts to build the first single application for the entire DevOps lifecycle have paid off and our users resonated with our message. Most folks who came to our booth were aware that GitLab played a part in multiple stages (if not all) of their workflow and many were avid [GitLab CI](/solutions/continuous-integration/) fans. Gone are the days when [version control](https://docs.gitlab.com/ee/topics/gitlab_flow.html) was the only thing GitLab was associated with.\n\n![Collage from GitLab at AWS re:Invent](https://about.gitlab.com/images/blogimages/aws-2018/aws_booth_collage.jpeg){: .medium.center}\n\nOur VP of Alliances, [Brandon Jung](/company/team/#brandoncjung), [appeared on theCUBE](https://www.youtube.com/watch?v=Ejs5xGAhL8s) with a company called Beacon. As the former head of partnerships at Google Cloud, Brandon has a long history with GitLab. He has seen the company grow over the years and shared how our rocketship ascent across the DevOps lifecycle convinced him of the potential. He said, \"In just over two years, [GitLab became the frontrunner for continuous integration](/blog/gitlab-leader-continuous-integration-forrester-wave/), according to Forrester. That's impressive.\"\n\n### Livestream with The New Stack\n\nI also represented GitLab on [a livestream podcast](https://www.pscp.tv/w/1eaJbODAepnxX) with [The New Stack](https://thenewstack.io/), [Matt Biilmann](https://twitter.com/biilmann?lang=en), CEO of [Netlify](/blog/netlify-launches-gitlab-support/), and [Joe Beda](https://twitter.com/jbeda), founder of [Heptio](https://heptio.com/) and creator of Kubernetes. We discussed GitOps, NoOps, and the toolchain crisis. As Matt wisely said, \"Trust in open source is critical to cloud computing and the ecosystem. Companies like GitLab will keep the players honest.\"\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">GitOps, NoOps and the tool chain crisis. \u003Ca href=\"https://t.co/mtfm8OaYYD\">https://t.co/mtfm8OaYYD\u003C/a>\u003C/p>&mdash; The New Stack (@thenewstack) \u003Ca href=\"https://twitter.com/thenewstack/status/1067881587214184448?ref_src=twsrc%5Etfw\">November 28, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\nWe thank AWS for creating this amazing ecosystem of end users and practitioners who came together in Vegas last week. Next year will be bigger, better. Until then, see you all at [KubeCon](/events/)! 😃\n",[847,268,1356,278,680,1059,890,804],{"slug":2626,"featured":6,"template":683},"aws-reinvent-recap","content:en-us:blog:aws-reinvent-recap.yml","Aws Reinvent Recap","en-us/blog/aws-reinvent-recap.yml","en-us/blog/aws-reinvent-recap",{"_path":2632,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2633,"content":2638,"config":2642,"_id":2644,"_type":17,"title":2645,"_source":18,"_file":2646,"_stem":2647,"_extension":21},"/en-us/blog/opensource-multi-cloud-crossplane",{"title":2634,"description":2635,"ogTitle":2634,"ogDescription":2635,"noIndex":6,"ogImage":2036,"ogUrl":2636,"ogSiteName":671,"ogType":672,"canonicalUrls":2636,"schema":2637},"Crossplane lowers the barrier to a multi-cloud future","GitLab has been chosen as the first complex app to be deployed on new multi-cloud control plane, Crossplane.","https://about.gitlab.com/blog/opensource-multi-cloud-crossplane","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Crossplane lowers the barrier to a multi-cloud future\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2018-12-04\",\n      }",{"title":2634,"description":2635,"authors":2639,"heroImage":2036,"date":2640,"body":2641,"category":14},[676],"2018-12-04","\n\nCloud computing has become the dominant IT paradigm and multi-cloud looks poised to be the primary approach, with [81 percent of enterprises](https://www.rightscale.com/blog/cloud-industry-insights/cloud-computing-trends-2018-state-cloud-survey) already adopting a multi-cloud strategy.\n\nA multi-cloud strategy prevents vendor lock-in, which is increasingly important as three major providers (AWS, GCP, and Azure) dominate the market. Despite the many benefits of a multi-cloud strategy, deploying across multiple clouds is still incredibly complex. While Kubernetes has emerged as the standard container orchestration platform, most organizations are running more than just container workloads, and there’s currently no standard for workload portability across managed services. What’s needed is a consistent, multi-cloud, open source interface, and we think there’s a new, interesting project up for the challenge.\n\n## Crossplane aims to simplify multi-cloud strategy\n\nCrossplane, [announced today](https://crossplane.io/), is an open source multi-cloud control plane sponsored by [Upbound](https://upbound.io). Crossplane  introduces a set of workload resource abstractions on top of existing managed services and cloud offerings to enable an unprecedented degree of workload portability across cloud providers. There are [six levels of multi-cloud maturity](https://medium.com/gitlab-magazine/multi-cloud-maturity-model-2de185c01dd7) and until today, application portability (i.e. the ability to run an app on any cloud) is incredibly rare and has been difficult to achieve.\n\nUpbound is the sponsoring company behind [Rook.io](https://rook.io), a cloud native storage service for Kubernetes, and are experts in running managed services  the cloud native way. With this project, Upbound strives for Crossplane to become a universal API for cloud computing, and a control plane for smart controllers that can work across clouds. The end goal is to enable a clean separation of concerns between developers who want to consume resources without knowing the details of how they are provisioned or managed, and administrators who want to tightly control the details of implementation and policies.\n\n## How does Crossplane compare to existing tools?\n\nSimilar projects exist, but are not nearly as flexible in their ability to support workload portability across multiple clouds. For example, Terraform and [AWS Service Operator](https://github.com/awslabs/aws-service-operator) are similar infrastructure provisioning tools, but they do not support workload portability across cloud providers. Terraform can dynamically provision infrastructure and typically performs changes only when the tool is run by a human, and AWS Service Operator can only provision managed services in AWS.\n\nAs a result of an open API approach, Crossplane has an opportunity to change the cloud industry as we know it, and we’re excited that they've chosen GitLab to be the first complex app deployed with them.\n\n## Why Crossplane + GitLab?\n\n\"GitLab has a proven track record supporting multi-cloud DevOps,” says Bassam Tabbara, founder and CEO at Upbound. “Customers value the simplicity of the toolchain and the flexibility of the diverse deployment environments that GitLab offers them. Their open collaboration and culture made them the natural fit to be the first complex app deployed with Crossplane.\"\n\nAt GitLab, we’ve committed to multi-cloud DevOps, as detailed in my recent post on [why GitLab will use all three public clouds](https://medium.com/gitlab-magazine/there-are-3-public-clouds-left-and-well-use-all-of-them-214858d793e9). Most of our customers are already leveraging a multi-cloud strategy using [GitLab CI/CD](/solutions/continuous-integration/) and are increasingly looking for more ways to deploy their code across multiple cloud environments. The choices available today are too complex and vendor driven, but with Crossplane the ability to orchestrate clouds becomes simple. We look forward to collaborating with them on this vision and as the first complex app deployed with Crossplane.\n\nOnce GitLab has been successfully deployed with Crossplane, the next step is to use the project to deploy applications from GitLab. We’ll provide updates as they become available.\n",{"slug":2643,"featured":6,"template":683},"opensource-multi-cloud-crossplane","content:en-us:blog:opensource-multi-cloud-crossplane.yml","Opensource Multi Cloud Crossplane","en-us/blog/opensource-multi-cloud-crossplane.yml","en-us/blog/opensource-multi-cloud-crossplane",{"_path":2649,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2650,"content":2656,"config":2661,"_id":2663,"_type":17,"title":2664,"_source":18,"_file":2665,"_stem":2666,"_extension":21},"/en-us/blog/gitlab-achieves-aws-devops-competency-certification",{"title":2651,"description":2652,"ogTitle":2651,"ogDescription":2652,"noIndex":6,"ogImage":2653,"ogUrl":2654,"ogSiteName":671,"ogType":672,"canonicalUrls":2654,"schema":2655},"GitLab achieves AWS DevOps Competency certification","GitLab has been certified with AWS DevOps Competency, affirming our further commitment as a technology partner with Amazon Web Services.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666959/Blog/Hero%20Images/gitlab-aws-cover.png","https://about.gitlab.com/blog/gitlab-achieves-aws-devops-competency-certification","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab achieves AWS DevOps Competency certification\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Tina Sturgis\"},{\"@type\":\"Person\",\"name\":\"Eliran Mesika\"}],\n        \"datePublished\": \"2018-11-28\",\n      }",{"title":2651,"description":2652,"authors":2657,"heroImage":2653,"date":2658,"body":2659,"category":14,"tags":2660},[1333,1842],"2018-11-28","\n\nToday, we are proud to announce GitLab has been certified with [AWS DevOps Competency](https://aws.amazon.com/devops/partner-solutions/), affirming our further commitment as a technology partner with Amazon Web Services (AWS).\n\nBuilding on the foundation of our AWS partnership over the last three years, with this DevOps certification we’ve now received the highest level of accreditation available from AWS. We bring proven customer success with measurable return on investment for customers running GitLab on AWS and [using GitLab to deploy their software to AWS](/partners/technology-partners/aws/).\n\n![AWS DevOps Competency badge](https://about.gitlab.com/images/blogimages/DevOps_competency_badge.png){: .small.right.wrap-text}\n\n### Why the AWS DevOps Competency matters\n\nAchieving this certification sets GitLab apart as an AWS Partner Network (APN) member that provides demonstrated DevOps technical proficiency and proven customer success, with specific focus in the [Continuous Integration](/solutions/continuous-integration/) and [Continuous Delivery](/solutions/continuous-integration/) category.\n\nThis is important for our own customers who are either looking to move to AWS or are already using it, as well as for current AWS customers. Potential users of GitLab with AWS can be assured that the GitLab solution has been reviewed and approved by an AWS Architect Review Board and that it meets [AWS Security Best Practices](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Best_Practices.pdf).\n\nThrough this process we were able to demonstrate our product is production ready on AWS for DevOps, specifically for improving application delivery, application build/test, or infrastructure/configuration management.\n\n### GitLab and AWS customer success\n\nTo learn more about the GitLab customer case studies considered for this competency, please review both the Axway and [Trek10](/customers/trek10/) case studies. You can also access information about other customers on the [GitLab customers page](/customers/).\n\n### More about the AWS Competency Program\n\nAWS established the program to help customers identify, through the AWS Partner Network, partners with deep industry experience and expertise in specialized solution areas. Attaining an AWS Competency allows partners to differentiate themselves to customers by showcasing expertise in a specific solution area.\n\nWe are honored to obtain this AWS DevOps Competency status, and believe this helps advance [our mission to allow everyone to contribute](/company/mission/#mission). Our definition of everyone now extends further, to those who are small and large users of AWS and AWS Services on their DevOps journey.   \n\nFor more information on GitLab’s partnership with AWS, check out [about.gitlab.com/solutions/aws](/partners/technology-partners/aws/).\n\nTo learn more about GitLab’s Technology Partners, visit [about.gitlab.com/partners](/partners/technology-partners/).\n",[847,995,680],{"slug":2662,"featured":6,"template":683},"gitlab-achieves-aws-devops-competency-certification","content:en-us:blog:gitlab-achieves-aws-devops-competency-certification.yml","Gitlab Achieves Aws Devops Competency Certification","en-us/blog/gitlab-achieves-aws-devops-competency-certification.yml","en-us/blog/gitlab-achieves-aws-devops-competency-certification",{"_path":2668,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2669,"content":2675,"config":2680,"_id":2682,"_type":17,"title":2683,"_source":18,"_file":2684,"_stem":2685,"_extension":21},"/en-us/blog/why-gitlab-uses-a-monthly-release-cycle",{"title":2670,"description":2671,"ogTitle":2670,"ogDescription":2671,"noIndex":6,"ogImage":2672,"ogUrl":2673,"ogSiteName":671,"ogType":672,"canonicalUrls":2673,"schema":2674},"How we maintain product velocity with a monthly release cycle","This workplace has gone 85 months without missing a release.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678822/Blog/Hero%20Images/monthlyrelease.jpg","https://about.gitlab.com/blog/why-gitlab-uses-a-monthly-release-cycle","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How we maintain product velocity with a monthly release cycle\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Suri Patel\"}],\n        \"datePublished\": \"2018-11-21\",\n      }",{"title":2670,"description":2671,"authors":2676,"heroImage":2672,"date":2677,"body":2678,"category":14,"tags":2679},[1256],"2018-11-21","\nWe eagerly await the 22nd of each month, because we get to share the hard work of our team and community\nwith our users. Our [release](/releases/) schedule illustrates our belief in the\n[importance of velocity](/handbook/engineering/development/principles/#the-importance-of-velocity) and our\ncommitment to delivering value in the form of features. Monthly releases might\nseem aggressive to outsiders, but we believe our ability to deliver\nfeatures quickly is a competitive advantage that has helped us find success.\n\n## Three cheers for a monthly release cycle!\n\nA monthly release cycle is great for users, because it adds value at a\npredictable pace. Most of GitLab's installations are self managed, helping users\nidentify when new functionality will arrive. As a user, you can look forward to the 22nd of\nevery month, knowing that's when new features become available.\n\n![A screenshot of a user's comment, which says that he is looking forward to February 22 more than 21, which is his birthday](https://about.gitlab.com/images/blogimages/releasebirthday.png){: .shadow}\n\n### A predictable schedule helps with planning team capacity\n\nThe team has also found that it's easier to determine how much capacity we have\nwhen we're planning our workload, because there's no need to agree on\ndeadlines. GitLab team-members know exactly how many days they have to work on something,\nand we can plan in advance. Working with such a short timeframe forces us to\nbuild features as small as possible. We can't say, \"I need two releases for this,\" so we have to really think about how we\ncan make a feature smaller, an idea that's reinforced by our\n[iteration value](https://handbook.gitlab.com/handbook/values/#iteration).\n\n> \"Sometimes, team members will propose having longer release cycles, because\nwe'd be able to fit more into it, or we'd be able to do better quality control,\nbut I think that's short sighted. It's true that in a longer release cycle, you\ncan fit more in, but that will require bigger steps, and we know that\niteration is what makes us achieve velocity. So, the smaller the steps we take,\nthe faster we can go and the easier it is to do quality control. We think a\nmonthly release cycle is the optimal frequency.\" -- [Sid Sijbrandij](/company/team/#sytses), GitLab CEO\n\n## Challenges posed by monthly releases\n\n### It's not always easy to stick to the plan\n\nIt's not all sunshine and rainbows. While we're strong proponents of the monthly release, we realize that there are\nquite a few challenges. A few of the drawbacks relate to our actual deadline\nand staying on track with the [direction](/direction/) of GitLab. For example,\na release might be far away, but we want to ship something now. Or, we want to\nship something, but the release just passed, and now we have to wait. Sometimes\nwe try to cram in something just before the merge window closes even\nthough it's not ready. When these situations arise, we remember to\n[shift objectives](/blog/why-we-shift-objectives-and-not-release-dates-at-gitlab/)\nand focus on providing value to our users.\n\n### There's a big impact on morale\n\nOne of the most bittersweet aspects of a monthly release cycle is that morale can soar\nor suffer, depending on the processes that are put in place. We're thrilled\nwhen we make something and quickly see the benefits. With our schedule, GitLab team-members see\ntheir hard work in action within a month, which is way better than\nin some enterprise organizations in which someone might make something that won't\nget released for six months. At GitLab, people can rapidly effect change with\ntheir contributions and feel like their work matters.\n\nThere were times in the past, however, when our release schedule dampened morale.\nIn the early days, we had a few times when things came down to the wire, and we\nbattled bugs right until the end, making the 22nd look like an impossibility.\nThe rush towards the end caused quite a bit of stress on the team, so we decided\nto create a bigger buffer between the release and the closing of our merge window.\nWe also developed a\n[release process](https://gitlab.com/gitlab-org/release/docs/blob/master/README.md)\nto help keep us on track. Our\n[release template](https://gitlab.com/gitlab-org/release-tools/blob/master/templates/monthly.md.erb)\nhas helped us identify problems earlier so that we're not feeling pressured at\nthe end, which could be detrimental to everyone's motivation.\n\n## How to determine the right cadence\n\nWhile we've found success with monthly releases, we understand that it's not\nright for everyone. If you're a SaaS provider, you don't need releases and can\njust ship whenever something is finished. If you're shipping software that people\nmanage themselves, you're going to have to do versioning, so that people know\nwhat version they're on and are aware of releases, patches, and upgrades. A\nmonthly release cycle forces you into this, so in that case, this cadence would\nwork well for your team. If there's hardware in the loop, extensive testing, or\nhuman testing that's needed, then a longer release cadence is required, because\nyou have to factor in significant fixed costs.\n\nIdentifying the right cadence for your organization comes down to experimentation\nand what your users will accept. Some user bases may only want to update every\nquarter or twice a year, while others want more frequent versions to stay current\nwith industry changes. Because we strongly believe that smaller steps let you\ndeliver faster, we encourage you to start with monthly releases and work towards\nsettling on the pacing that works best. [Collaborate](https://handbook.gitlab.com/handbook/values/#collaboration)\nwith your team to create processes that simplify actions and hold\n[retrospectives](/handbook/engineering/management/group-retrospectives/) to make\nadjustments. We've found that our\n[retrospectives](/blog/our-retrospective-and-kickoff-are-public/) are\nextremely helpful in identifying consistent problem areas.\n\n[Cover image](https://www.pexels.com/photo/22-apartment-architecture-building-210790/) licensed under [CC 0](https://www.pexels.com/creative-commons-images/)\n{: .note}\n",[954,890],{"slug":2681,"featured":6,"template":683},"why-gitlab-uses-a-monthly-release-cycle","content:en-us:blog:why-gitlab-uses-a-monthly-release-cycle.yml","Why Gitlab Uses A Monthly Release Cycle","en-us/blog/why-gitlab-uses-a-monthly-release-cycle.yml","en-us/blog/why-gitlab-uses-a-monthly-release-cycle",{"_path":2687,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2688,"content":2693,"config":2699,"_id":2701,"_type":17,"title":2702,"_source":18,"_file":2703,"_stem":2704,"_extension":21},"/en-us/blog/gitlab-tls-support-discontinue-update",{"title":2689,"description":2690,"ogTitle":2689,"ogDescription":2690,"noIndex":6,"ogImage":1051,"ogUrl":2691,"ogSiteName":671,"ogType":672,"canonicalUrls":2691,"schema":2692},"TLS 1.0 and 1.1 support ending on GitLab in 2018","Find out how to test for potential operational disruptions to your integrations and browsers.","https://about.gitlab.com/blog/gitlab-tls-support-discontinue-update","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"We're on target to discontinue support for TLS 1.0 and TLS 1.1 by end of 2018\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Melissa Farber\"}],\n        \"datePublished\": \"2018-11-15\",\n      }",{"title":2694,"description":2690,"authors":2695,"heroImage":1051,"date":2696,"body":2697,"category":14,"tags":2698},"We're on target to discontinue support for TLS 1.0 and TLS 1.1 by end of 2018",[2585],"2018-11-15","\n\nAs we announced in our October 15 blog post, [GitLab's plan to discontinue support for TLS 1.0 and 1.1 on GitLab.com and in our GitLab API](/blog/gitlab-to-deprecate-older-tls/) by December 15, 2018 is on track. At the time of our announcement, we provided a link to this [public issue that is being used to track progress of this initiative](https://gitlab.com/gitlab-com/gl-security/security-department-meta/issues/202) and provide updates to the GitLab community.\n\nIn addition, part of our commitment to our community is to provide a vehicle through which to test your integrations, API tokens, and browsers, in an effort to minimize any potential operational disruptions.\n\n## How to test for potential disruptions\n\nOur efforts to minimize any potential operational disruptions to GitLab.com and GitLab API users while discontinuing support for TLS 1.0 and TLS 1.1 include making our canary production environment available for TLS 1.2 compatibility testing. The environment has been configured to support TLS 1.2 only, and should be used to test your integrations and browsers.\n\n### API tokens or scripting\n\nTo test integrations that use API tokens or scripting, please point them to a base URL of [canary.gitlab.com](https://canary.gitlab.com/).\n\n### Browsers\n\nTo test any of your browsers, please test using [canary.gitlab.com/help](https://canary.gitlab.com/help) or another URL related to your project or group.\n\nPlease carry out testing to ensure that your connections are successful using this endpoint prior to December 15, 2018. If your integrations are affected and you need additional support, please email the GitLab Security Team at security@gitlab.com.\n\nAs always, we will continue to monitor TLS 1.0 and 1.1 vulnerabilities and will adapt our timeline as required to mitigate protocol-level issues if they arise.  Updates to timelines will be posted to our Twitter feed and tracked in [this public issue](https://gitlab.com/gitlab-com/gl-security/security-department-meta/issues/202). Additionally, GitLab.com users who have opted to receive security alert emails from GitLab will receive status updates regarding the this deprecation process.\nIf you have any questions, please reach out to the Security Team by emailing security@gitlab.com.\n\n## Identified client incompatibilities\n\nThe majority of traffic should be unaffected by the discontinuation of support for TLS versions 1.0 and 1.1. Currently, the vast majority of the requests to GitLab.com are using up-to-date clients with support for TLS 1.2. While there are a few remaining clients that we believe will be affected (see below), most of these can be updated to work with TLS 1.2.\n\n### Git-Credential-Manager-for-Windows prior to 1.14.0\n\nVersions prior to 1.14.0 of Git-Credential-Manager-for-Windows do not support TLSv1.2. This can be addressed by updating to v1.14.0.\n\n### Git on Red Hat 5, \u003C 6.8, and \u003C 7.2\n\nUsers running Red Hat 5 are advised to upgrade to a newer version of the operating system as Red Hat does not have a point release planned for 5 that supports TLS 1.2. Git clients shipped with Red Hat 6 and 7 did not support TLSv1.2, which can be remediated by updating to versions 6.8 and 7.2 respectively.\n\n### JGit/Java releases \u003C JDK 8\n\nVersions of the JDK 6 and prior do not support TLSv1.2. We advise users of JDK \u003C= 6 to upgrade to a newer version of the JDK.\n\n### Visual Studio\n\nThe latest version of Visual Studio 2017 supports TLSv1.2. Users not running the latest version are advised to upgrade.\n",[994],{"slug":2700,"featured":6,"template":683},"gitlab-tls-support-discontinue-update","content:en-us:blog:gitlab-tls-support-discontinue-update.yml","Gitlab Tls Support Discontinue Update","en-us/blog/gitlab-tls-support-discontinue-update.yml","en-us/blog/gitlab-tls-support-discontinue-update",{"_path":2706,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2707,"content":2713,"config":2719,"_id":2721,"_type":17,"title":2722,"_source":18,"_file":2723,"_stem":2724,"_extension":21},"/en-us/blog/monetizing-and-being-open-source",{"title":2708,"description":2709,"ogTitle":2708,"ogDescription":2709,"noIndex":6,"ogImage":2710,"ogUrl":2711,"ogSiteName":671,"ogType":672,"canonicalUrls":2711,"schema":2712},"How GitLab makes money","Monetizing open source ≠ an 'open source' company. Our CEO Sid Sijbrandij explains how we got over the barriers to monetizing an open source company.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678896/Blog/Hero%20Images/monetizing-os.jpg","https://about.gitlab.com/blog/monetizing-and-being-open-source","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How GitLab makes money\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Aricka Flowers\"}],\n        \"datePublished\": \"2018-11-09\",\n      }",{"title":2708,"description":2709,"authors":2714,"heroImage":2710,"date":2716,"body":2717,"category":14,"tags":2718},[2715],"Aricka Flowers","2018-11-09","\nWhile the number of businesses based on open source technology is growing exponentially, that doesn't mean a profitable open source company is truly open. Our CEO [Sid Sijbrandij](/company/team/#sytses) believes the key lies in not just being [a steward of an open source project](/company/stewardship/), but more so in being [transparent](https://handbook.gitlab.com/handbook/values/#transparency) and [collaborative](https://handbook.gitlab.com/handbook/values/#collaboration) – going so far as to allow the public to play a role in the way the company is run. And that’s what he’s aiming to do with GitLab:\n\n>\"We want to take it one step further, where you're not only taking open source and contributing back to that project, but you're also allowing people to contribute back to what you make – in our case GitLab – to improve the company. Sometimes people from the wider community contribute to [our handbook](/handbook/) to make improvements. I think that's really exciting. And in order for us to not create a rift between GitLab the open source project and GitLab the company, we try to work out in the public. Our strategy, our OKRs (Objectives and Key Results), all of the issues we work on are out there in the public. People can see what we're doing, and comment on it. I think that's a superpower. I'm very proud that people keep contributing to GitLab and we're working really hard to keep it that way.\"\n\n## Finding the right business model: Trial and error\n\nWhile the number of open source companies is trending up, making free software profitable is not an easy feat. Sid and co-founder and Engineering Fellow [Dmitriy Zaporozhets](/company/team/#dzaporozhets) experimented with a number of business models for GitLab before finding a formula that worked.\n\n### Donations\n\n\"Dmitriy used to talk about ice cream money, which were donations,\" Sid recalls. \"They were seven bucks a month, so he and his wife could buy ice cream once a month from the donations. We tried that and got up to $1,000 in the most profitable month after having a big drive. But that wasn't sustainable to run a company with multiple employees.\"\n\n### Feature request fees and paid support\n\nThey also tried charging a fee to build requested features from users. But that model fell apart when people found out there were others making the same request and, instead of paying for a fraction of the feature, dropped their order with the expectation that another user or company would pay for it. Sid and Dmitriy then moved to a support model, but found it to be a catch-22. As they improved the product, fewer people needed support. But to do a less-than-stellar job in the installation of GitLab \"kind of destroys\" the brand, Sid says.\n\n### Open core\n\n\"In the end, we settled on [open core](/blog/gitlab-is-open-core-github-is-closed-source/), where [some features are paid](/pricing/). The hard thing was deciding which features are paid. I think after many years we now have a good way to determine that. The feature aimed at an individual contributor, it's open source. If it's aimed at a manager, it's in Starter. If it's aimed at a director, it's in Premium. And if it's aimed at a C-level exec, it's in Ultimate. That brings a lot of clarity and it seems to work really well, but it took us a while to figure that one out.\"\n\n## What’s next\n\nTo continue engaging with and growing GitLab’s presence in the open source community, Sid plans to open the company’s summit to the wider community. The [next summit](/events/gitlab-contribute/), which occurs every nine months, is set to include about 100 community members and customers, and that figure is expected to grow in the future.\n\nWe’re also giving folks a view into our operations via more videos and plan to open our books for all to see as soon as we can.\n\n\"We’re doing more live streaming and putting recordings up on [YouTube](https://www.youtube.com/c/gitlab),\" Sid says. \"I think we're at over 400 videos now, but anything we have, it doesn't matter what the quality is, we want to post it for people to consume. I'm really excited at what's happening there.\n\n\"Another thing I look forward to doing is being more open about our financials. We plan and hope to be a public company one day, and then we will be open about our financials every quarter. As soon as we have audited financials, we'll start doing those calls, even when we're still a private company.\"\n\n[Cover image](https://unsplash.com/photos/Xaanw0s0pMk) by [Jason Leung](https://unsplash.com/@ninjason) on Unsplash\n{: .note}\n",[890,804],{"slug":2720,"featured":6,"template":683},"monetizing-and-being-open-source","content:en-us:blog:monetizing-and-being-open-source.yml","Monetizing And Being Open Source","en-us/blog/monetizing-and-being-open-source.yml","en-us/blog/monetizing-and-being-open-source",{"_path":2726,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2727,"content":2733,"config":2739,"_id":2741,"_type":17,"title":2742,"_source":18,"_file":2743,"_stem":2744,"_extension":21},"/en-us/blog/gitlab-for-designers",{"title":2728,"description":2729,"ogTitle":2728,"ogDescription":2729,"noIndex":6,"ogImage":2730,"ogUrl":2731,"ogSiteName":671,"ogType":672,"canonicalUrls":2731,"schema":2732},"Help us shape the future of design discussion in GitLab","We've identified the need for full integration of user experience design within the DevOps lifecycle, and would love your feedback on how to make that happen.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680008/Blog/Hero%20Images/design-discussion.jpg","https://about.gitlab.com/blog/gitlab-for-designers","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Help us shape the future of design discussion in GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sarrah Vesselov\"}],\n        \"datePublished\": \"2018-11-08\",\n      }",{"title":2728,"description":2729,"authors":2734,"heroImage":2730,"date":2736,"body":2737,"category":14,"tags":2738},[2735],"Sarrah Vesselov","2018-11-08","\n\nAt GitLab, we do everything using, well, GitLab. Using our product as part of our workflow allows us to experience, firsthand, the limitations and frustrations that may prevent our users (and us) from being able to get work done quickly and efficiently. In the user experience (UX) department, we've found ourselves struggling with some important aspects of our day-to-day work – this is what we've found, and how we hope to address it:\n\n## Design discussions quickly become hard to follow\n\nDesign discussion happens inside of issues at GitLab. Typically, a designer will post a wireframe, mockup, or prototype within a comment on an issue to elicit feedback from others. The transparency is excellent: product managers, engineers, and designers can all come together to talk over the problem and the possible solutions. Problems creep in when conversations get too lengthy, hard to follow, and involve multiple iterations of a design. How can we make design discussion at GitLab more useful and accessible?\n\n## We need version control for design files\n\nWe use Sketch for our day-to-day design work. The UX department's Sketch files live within a [design repository](https://gitlab.com/gitlab-org/gitlab-design) to ensure that all designers have access to current patterns and solutions. However these files are not version controlled within the repository, so designers keep personal folders for work-in-progress designs. How can we version control our files within GitLab and eliminate the need to keep multiple versions of a particular design?\n\n## A competitive analysis of design platforms and applications\n\nTo start looking for solutions to these problems, we conducted a competitive analysis of the other platforms and applications out there tackling design creation, collaboration, and handoff. We wanted to know: What are other design teams doing to address these problems? Are there existing aspects of GitLab we can leverage to solve these problems? If not, what would an [MVC](/handbook/product/product-principles/#the-minimal-viable-change-mvc) look like to integrate designers more efficiently into GitLab?\n\n### Summary of findings\n\nToday's average user is tech savvy, with high expectations for interface usability. Products must be useful and easy to use for users with a wide range of backgrounds, experiences, and expectations. As a result, enterprise-level companies have invested heavily in building UX teams to produce beneficial experiences. These UX teams have distinct requirements for the toolsets they use. Design tools must be able to:\n\n* Improve UX consistency\n* Enable research and testing of designs with users\n* Clarify requirements\n* Facilitate collaboration between teams (Engineering, PM, UX)\n* Version control design files\n* Minimize duplication of work with an SSOT\n* Minimize context switching\n\nThe last requirement, minimize context switching, really stood out. Enterprise designers work on a variety of platforms. The market has exploded over the past decade, with a majority of designers moving from using desktop software to cloud-based platforms. Designers want and need a single-platform approach. They must have the ability to design, collaborate, and share their work with the rest of the organization within one platform.\n\nThis single-platform approach presents a unique opportunity for us. GitLab is the first single application built from the ground up for all stages of the DevOps lifecycle for Product, Development, QA, Security, and Operations teams to work concurrently on the same project. A significant missing piece of this lifecycle is UX design.\n\n### Areas of opportunity for GitLab:\n\n* Review and collaboration\n* Interaction design\n* Version control\n* Developer handoff\n* Design system management\n\nThe total market potential is over US $4 billion and growing. With no clear winners in the design tool space, there is a significant opportunity for an application that can successfully engage developers and design teams in the DevOps lifecycle.\n\nYou can view the [complete competitive analysis here](https://docs.google.com/document/d/12o6h6Fm7bAjhW5AK1r-PNhvn0QrQwZncorYNia12e3Q/edit?usp=sharing).\n\n## What's next?\n\nA logical place to start is by improving discussion within issues. Design proposals are available in issue descriptions, shared and discussed in comments, and it's not always clear which is the latest version. While we have the option to mark and [comment on specific image spots in the blob view and merge requests](https://docs.gitlab.com/ee/user/discussions/#image-discussions), the actual design collaboration happens much earlier in the process.\n\nOne idea is to make design artifacts a first-class citizen by linking to design assets in the side navigation of an issue. We could allow for commenting on images and propagate these comments in the sidebar for focused and cohesive discussion.\n\nWe want to know what you think! You can take a look at and comment on the [design artifacts discovery issue here](https://gitlab.com/gitlab-org/gitlab-ce/issues/53587).\n\n[Photo](https://www.pexels.com/photo/notes-clean-whiteboard-board-7067/) by [Startup Stock Photos](https://www.pexels.com/@startup-stock-photos) on Pexels.\n{: .note}\n",[848,890,1039,1037,995],{"slug":2740,"featured":6,"template":683},"gitlab-for-designers","content:en-us:blog:gitlab-for-designers.yml","Gitlab For Designers","en-us/blog/gitlab-for-designers.yml","en-us/blog/gitlab-for-designers",{"_path":2746,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2747,"content":2753,"config":2758,"_id":2760,"_type":17,"title":2761,"_source":18,"_file":2762,"_stem":2763,"_extension":21},"/en-us/blog/how-do-we-handle-engineering-led-initiatives-that-dont-belong-to-one-team",{"title":2748,"description":2749,"ogTitle":2748,"ogDescription":2749,"noIndex":6,"ogImage":2750,"ogUrl":2751,"ogSiteName":671,"ogType":672,"canonicalUrls":2751,"schema":2752},"How do we handle engineering-led issues that don't belong to one team?","A recent issue sparked a lively discussion between engineering and product leadership about how 'cross-vertical' issues should be prioritized to avoid the bystander effect.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678916/Blog/Hero%20Images/how-do-we-handle-engineering-led-initiatives.jpg","https://about.gitlab.com/blog/how-do-we-handle-engineering-led-initiatives-that-dont-belong-to-one-team","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How do we handle engineering-led issues that don't belong to one team?\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emily von Hoffmann\"}],\n        \"datePublished\": \"2018-10-30\",\n      }",{"title":2748,"description":2749,"authors":2754,"heroImage":2750,"date":2755,"body":2756,"category":14,"tags":2757},[1496],"2018-10-30","\nThe GitLab engineering team is split according to [product category](/handbook/product/categories/), so that team members in each category can [focus, specialize, and collaborate](/blog/configure-post/) on the same issues at the same time. They are semi-siloed by design, so what happens to issues, like tech debt, that are everyone and no one’s responsibility?\n\nThe short answer is, teams are still figuring it out. A recent [issue](https://gitlab.com/gitlab-org/gitlab-ce/issues/52150) sparked a lively discussion and video call, which you can watch below. Listen in below on the discussion between engineering and product leadership about how technical debt or other engineering initiatives that are \"cross-vertical\" (that is, touch on many different product areas) should be prioritized given that there isn't one clear point of contact or responsibility for those issues.\n\n\u003Cfigure class=\"video_container\">\n\u003Ciframe src=\"https://www.youtube.com/embed/3ZEI4W_Cb2g\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n### The gist\n\nThe issue that started it all had to do with a task that would have been assigned to the former Platform team, which used to be a catch-all that has since been split up into Create and Manage. Engineering Manager, Create [Douwe Maan](/company/team/#DouweM) explains, “With all backend teams now focused on specific product areas... there is no team to take on these kinds of backend-wide, non-product-area specific issues anymore.”\n\nHe continues, “Issues like this affect all backend teams equally, so we fall prey to the bystander effect. When an engineering manager gets to make room in a given release for an engineering-led initiative, they have the choice between issues like this, that any team could pick up, and product area-specific issues, that aren't going to get done unless their team does it, so the latter will have a far higher chance of being picked. Everyone cares about these kinds of issues, which means no one cares... there are many issues (technical debt and otherwise) that aren't currently anyone's responsibility, so they won't get done.”\n\nThis felt like a recurring problem due to other recent examples of cross-vertical initiatives stalling, like this issue to [switch to Rails 5 in production](https://gitlab.com/gitlab-org/gitlab-ce/issues/48991), and this issue to [update GitLab's referrer policy](https://gitlab.com/gitlab-org/gitlab-ce/issues/39147).\n\n### The research\n\nWe've heard from our community that this is a common problem, especially when working with others in different functions. In [recent interviews](https://drive.google.com/file/d/1A5mSNoPJydjcWKE4rdO2287sjnABxGDA/view) with 15 DevOps engineers, many expressed their frustration at the amount of reactive work and rework that they face, and identified a lack of successful coordination and empathy between different teams as the culprit. One interviewee said he thought this is inherent to working with some functions. Because of how release schedules work for developers and security engineers, he thinks these groups are the least likely to feel they are able to assign cycles to some proactive tasks, like fixing technical debt before it's critical.\n\nThe nearly 20 [software engineers](https://drive.google.com/file/d/1EVrjVcgIBbuNf4Gwenajsiy6Wv9HsTJw/view) we [interviewed](https://drive.google.com/file/d/15GksPiH0xmy4nRhylhMDIWmuvdHMWof4/view) also brought up their frustration at the way that technical debt can transform a seemingly simple task into a massive effort requiring them to rewrite or refactor a large chunk of code. More than the time spent on these tasks, several developers mentioned their concern that others might see them as dragging their feet and becoming a blocker when they take the time to resolve the technical debt. After all, it was just \"a simple task.\"\n\nThe responsibility to fix these issues becomes even more muddied when no particular team owns them. One [study of 95 teams in 25 leading corporations found that the majority of cross-functional teams are dysfunctional](https://hbr.org/2015/06/75-of-cross-functional-teams-are-dysfunctional), in large part because siloes self-perpetuate. The authors argue the solution is to create a “Portfolio Governance Team (PGT), where high-level leaders make complex decisions on the various projects in their portfolio together.\" The number one rule for making a PGT successful? \"Every project should have an end-to-end accountable leader.\"\n\n### The fix\n\nAlong these lines, one long-term solution being discussed at GitLab is establishing a dedicated team that will transcend the product areas and be responsible for these murky in-between issues. But Director of Engineering, Dev Backend [Tommy Morgan](/company/team/#itstommymorgan) adds, “Even if we had a team that was in place to handle issues like this one, there will always be boundary conditions. As Product is responsible for prioritizing work, if we need to do any horse-trading or other determination to figure out where the work should land, I think that's something that Product should work out.”\n\nShort of creating a new team, Product Managers and Engineering Managers will need to frankly discuss their own priorities and incentives in order to get these tasks scheduled.\n\nWhat has your org tried? Is it working? Tweet us [@gitlab](https://twitter.com/gitlab).\n\n[Photo](https://unsplash.com/photos/fIq0tET6llw) by [Diego PH](https://unsplash.com/@jdiegoph) on Unsplash.\n{: .note}\n",[848,995,890,783],{"slug":2759,"featured":6,"template":683},"how-do-we-handle-engineering-led-initiatives-that-dont-belong-to-one-team","content:en-us:blog:how-do-we-handle-engineering-led-initiatives-that-dont-belong-to-one-team.yml","How Do We Handle Engineering Led Initiatives That Dont Belong To One Team","en-us/blog/how-do-we-handle-engineering-led-initiatives-that-dont-belong-to-one-team.yml","en-us/blog/how-do-we-handle-engineering-led-initiatives-that-dont-belong-to-one-team",{"_path":2765,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2766,"content":2772,"config":2777,"_id":2779,"_type":17,"title":2780,"_source":18,"_file":2781,"_stem":2782,"_extension":21},"/en-us/blog/why-we-use-rails-to-build-gitlab",{"title":2767,"description":2768,"ogTitle":2767,"ogDescription":2768,"noIndex":6,"ogImage":2769,"ogUrl":2770,"ogSiteName":671,"ogType":672,"canonicalUrls":2770,"schema":2771},"Why we use Ruby on Rails to build GitLab","Here's our CEO on GitLab’s inception using Rails, and how challenges are being handled along the way.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668296/Blog/Hero%20Images/gitlab-ruby.jpg","https://about.gitlab.com/blog/why-we-use-rails-to-build-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Why we use Ruby on Rails to build GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Aricka Flowers\"}],\n        \"datePublished\": \"2018-10-29\",\n      }",{"title":2767,"description":2768,"authors":2773,"heroImage":2769,"date":2774,"body":2775,"category":14,"tags":2776},[2715],"2018-10-29","\nWhen our Co-founder and Engineering Fellow [Dmitriy Zaporozhets](/company/team/#dzaporozhets) decided to build GitLab, he chose to do it with Ruby on Rails, despite working primarily in PHP at the time. GitHub, a source of inspiration for GitLab, was also based on Rails, making it a logical pick considering his interest in the framework. GitLab CEO [Sid Sijbrandij](/company/team/#sytses) thinks his co-founder made a good choice:\n\n\"It's worked out really well because the Ruby on Rails ecosystem allows you to shape a lot of functionality at a high quality,\" he explained. \"If you look at GitLab, it has an enormous amount of functionality. Software development is very complex and to help with that, we need a lot of functionality and Ruby on Rails is a way to do it. Because there's all these best practices that are on your happy path, it’s also a way to keep the code consistent when you ship something like GitLab. You're kind of guided into doing the right thing.\"\n\n### Depending on useful gems\n\nRuby gems play an integral role in the building of GitLab, with it loading more than a thousand non-unique gems, according to Sid. Calling the Ruby on Rails framework \"very opinionated,\" he thinks it's a strong environment in which to build a complex app like GitLab.\n\n\"There's a great ecosystem around it with gems that can make assumptions about how you're doing things and in that regard, I think the Ruby on Rails ecosystem is still without par,\" he says. \"If you look at our Gemfile, it gives you an indication of how big the tower is of dependencies that we can build on. Ruby on Rails has amazing shoulders to stand on and it would have been much slower to develop GitLab in any other framework.\"\n\n### Overcoming challenges\n\nAll of this is not to say there haven’t been challenges in building GitLab with Ruby on Rails. Performance has been an issue that our developers have made strides to improve in a number of ways, including rewriting code in Go and [using the Vue framework](/blog/why-we-chose-vue/). The latter is being used to rewrite frequently accessed pages, like issues and merge requests, so they load faster, improving user experience.\n\nGo is being used to address other issues affecting load times and reduce memory usage.\n\n\"Ruby was optimized for the developer, not for running it in production,\" says Sid. \"For the things that get hit a lot and have to be very performant or that, for example, have to wait very long on a system IO, we rewrite those in Go … We are still trying to make GitLab use less memory. So, we'll need to enable multithreading. When we developed GitLab that was not common in the Ruby on Rails ecosystem. Now it's more common, but because we now have so much code and so many dependencies, it's going to be a longer path for us to get there. That should help; it won't make it blazingly fast, but at least it will use less memory.\"\n\nAdding Go to GitLab’s toolbox led to the creation of a separate service called [Gitaly](/blog/the-road-to-gitaly-1-0/), which handles all Git requests.\n\n### Building on GitLab’s mission\n\nThe organized, structured style of Ruby on Rails’ framework falls in line with our core mission. Because Rails is streamlined, anyone can jump into GitLab and participate, which made it especially attractive to Sid from the start.\n\n\"[Our mission is that everyone can contribute](/company/mission/#mission),\" he explains. \"Because Ruby on Rails is really opinionated about which pieces go where, it's much easier for new developers to get into the codebase, because you know where people have put stuff. For example, in every kitchen you enter, you never know where the knives and plates are located. But with Ruby on Rails, you enter the kitchen and it's always in the same place, and we want to stick to that.\n\n>In every kitchen you enter, you never know where the knives and plates are located. But with Ruby on Rails, you enter the kitchen and it's always in the same place, and we want to stick to that.\n\n\"I was really encouraged when I opened the project and saw it for the first time a year after Dmitriy started it. I opened it up and it's idiomatic Rails. He followed all the principles. He didn't try to experiment with some kind of fad that he was interested in. He made it into a production application. Dmitriy carefully vetted all the contributions to make sure they stick to those conventions, and that's still the case. I think we have a very nice codebase that allows other people to build on top of it. One of our sub-values is [boring solutions](https://handbook.gitlab.com/handbook/values/#efficiency): don't do anything fancy. This is so that others can build on top it. I think we've done that really well … and we're really thankful that Ruby has been such a stable, ecosystem for us to build on.\"\n\n[Cover image](https://unsplash.com/photos/0y6Y56Pw6DA) by [Elvir K](https://unsplash.com/@elvir) on Unsplash\n{: .note}\n",[848,268,1636,890,1787,933,783],{"slug":2778,"featured":6,"template":683},"why-we-use-rails-to-build-gitlab","content:en-us:blog:why-we-use-rails-to-build-gitlab.yml","Why We Use Rails To Build Gitlab","en-us/blog/why-we-use-rails-to-build-gitlab.yml","en-us/blog/why-we-use-rails-to-build-gitlab",{"_path":2784,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2785,"content":2791,"config":2796,"_id":2798,"_type":17,"title":2799,"_source":18,"_file":2800,"_stem":2801,"_extension":21},"/en-us/blog/two-questions-we-ask-ux-designers-in-job-interviews",{"title":2786,"description":2787,"ogTitle":2786,"ogDescription":2787,"noIndex":6,"ogImage":2788,"ogUrl":2789,"ogSiteName":671,"ogType":672,"canonicalUrls":2789,"schema":2790},"2 Questions we ask UX designers in job interviews (and why)","UX designer interviews are quite simple at GitLab. There are no trick questions – but here are two 'basic' ones that tell us a lot about you.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678794/Blog/Hero%20Images/ux-interviews.jpg","https://about.gitlab.com/blog/two-questions-we-ask-ux-designers-in-job-interviews","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"2 Questions we ask UX designers in job interviews (and why)\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Matej Latin\"}],\n        \"datePublished\": \"2018-10-25\",\n      }",{"title":2786,"description":2787,"authors":2792,"heroImage":2788,"date":2793,"body":2794,"category":14,"tags":2795},[2392],"2018-10-25","\nAs of 2022, we have updated our internal interview process for Product Designers to include a consistent set of questions for every candidate at each phase of the process. This will help us create fairness and improve the quality of our evaluation process. The following questions are no longer part of our interview process. You can read about our [current hiring process in our Product Designer job family](https://handbook.gitlab.com/job-families/product/product-designer/#hiring-process). \n{: .alert .alert-info .note}\n\nWe won’t ask you how many golf balls fit in a bus or how many times a day a clock’s hands overlap – nothing like what Google became famous for. While there's some value in seeing how candidates react to curve-ball questions, they don't really add much to a 45-minute interview. We also won't ask you to attend an all-day session with a series of interviewers.\n\nI think the [hiring process](https://handbook.gitlab.com/job-families/product/product-designer/#hiring-process) at GitLab is way simpler and more efficient. A successful candidate has to go through four stages of interviewing before receiving an offer. Altogether, we spend around 2-3 hours with them, so we need to ask the right questions to be efficient.\n\nI'm so confident in the efficiency of these questions that I’m completely okay with sharing these publicly. What you answer matters less than how you answer them.\n\n## 1. Can you speak to the difference between information architecture, interaction design, usability, and user research?\n\nI was asked this when was interviewing for the Senior UX designer position at GitLab. I wasn’t expecting such a ‘basic’ question, but I immediately realized how ingenious it is.\n\nHere’s what’s so brilliant about it: We're testing if the candidate has solid foundations for being a UX designer. With enough experience, explaining these terms should be a piece of cake, whereas struggling can be a red flag. Even if a candidate doesn’t have a formal education, they should be able to provide descriptions with their own words and ideally throw in snippets from their past experience.\n\nWe don’t focus on the correctness of the answer so much as the body language and level of confidence the candidate shows when replying. Someone who’s not experienced in these UX basics can Google the terms before the interview and even prepare notes but we’ll pick that up. The lack of confidence will be obvious in their body language, their voice, and the words they use to describe the terms. Candidates who lack experience all tend to use similar, generic descriptions for these terms and seem to talk a lot, but don’t actually say much.\n\n> We don’t focus on the correctness of the answer so much as the body language and level of confidence the candidate shows when replying\n\n## 2. Pick an application you like/dislike and explain why.\n\nThis may seem like another basic question but it’s great for finding out what kind of a designer and person the candidate is. This is what we're looking for:\n\n### Passion\n\nWe’re interested in your opinion about the product as a designer, and we want to see if you talk about it with passion. If you love the product, the passion will be clear through the words you use to describe it and whether your eyes light up when you talk about it. The same applies for a product that you dislike: you should dislike it with passion.\n\nThis question tells us immediately if the candidate is passionate about being a designer or not. I’m often surprised at how many designers out there became designers only because it’s hip or well paid. These are not good reasons for becoming a designer – passion for creating things that improve people’s lives is.\n\n### Attention to detail\n\nWe want to see examples of candidates talking about small visual design and UI details; about seemingly insignificant but delightful UX solutions that can make a user’s day. The way a candidate talks about visual design gives us an insight into candidate’s skills in this area (what they notice, what they learn and how they use and adapt elements in their own work). We’re looking for well-rounded people who can cover the whole design process.\n\nIf they talk about things that aren’t good, we want to hear how they would improve them. Everyone can criticize; few can find good and feasible solutions. In most cases, I really don’t need to see the app that the candidate talks about. The way they describe it usually tells me enough to make a judgement. Good candidates describe things so well that I can imagine them without looking at the product.\n\n> Everyone can criticize; few can find good and feasible solutions\n\nCommunication in design work is key, so being able to accurately describe the problems or the delightful things in a product or an app is a good indicator of those skills.\n\n### User’s point of view\n\nAs a designer, you should always consider other users and how they experience things. This can be the crucial point of the interview. If you only describe the app from your point of view and based on your experience, it will be a potential red flag. You shouldn’t have to conduct user testing to imagine what other people could have problems with. For example: are certain UI elements or the font size really small? This could be a serious problem for older people or people with certain health conditions. Does the app behave consistently? If not, it could cause usability problems. These are the sorts of things that we want to hear our candidates talk about – empathy for users is key.\n\n### Bonus points\n\nI have to give bonus points to candidates that take the initiative and offer to share their screen or show me their phone to show me the app they talk about. The candidate is in a challenging moment, outside of their comfort zone, and it’s reassuring to see them take the initiative in such occasions.\n\n## Our interviews aren’t tricky\n\nIf you’re a passionate designer with an appropriate level of experience for the position, that will be clear from how you speak about design and how you think about user problems. I prefer to see passion and commitment to the design profession than a formal education and numerous years of experience in a non-challenging environment. We look for well-rounded and passionate people with a wide range of skills matching their experience. If you think you’re a good match, you’re welcome to [check out our careers page](/jobs/). We look forward to meeting you in our interviews. Good luck!\n\nCover image by [Kaleidico](https://unsplash.com/photos/26MJGnCM0Wc?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/search/photos/sketch?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)\n{: .note}\n",[890,1039,1037,955],{"slug":2797,"featured":6,"template":683},"two-questions-we-ask-ux-designers-in-job-interviews","content:en-us:blog:two-questions-we-ask-ux-designers-in-job-interviews.yml","Two Questions We Ask Ux Designers In Job Interviews","en-us/blog/two-questions-we-ask-ux-designers-in-job-interviews.yml","en-us/blog/two-questions-we-ask-ux-designers-in-job-interviews",{"_path":2803,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2804,"content":2810,"config":2815,"_id":2817,"_type":17,"title":2818,"_source":18,"_file":2819,"_stem":2820,"_extension":21},"/en-us/blog/github-launch-continuous-integration",{"title":2805,"description":2806,"ogTitle":2805,"ogDescription":2806,"noIndex":6,"ogImage":2807,"ogUrl":2808,"ogSiteName":671,"ogType":672,"canonicalUrls":2808,"schema":2809},"GitHub Actions affirms all-in-one is eating the marketplace model","GitHub announces GitHub Actions, a continuous integration tool, affirming the need for single application for the entire DevOps lifecycle.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678806/Blog/Hero%20Images/single-application.png","https://about.gitlab.com/blog/github-launch-continuous-integration","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitHub Actions affirms all-in-one is eating the marketplace model\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2018-10-16\",\n      }",{"title":2805,"description":2806,"authors":2811,"heroImage":2807,"date":2812,"body":2813,"category":14,"tags":2814},[676],"2018-10-16","\nGitHub announced the launch of their continuous integration tool, [GitHub Actions](https://blog.github.com/2018-10-16-future-of-software/), entering into competition with 14 of its [continuous integration marketplace vendors](https://github.com/marketplace/category/continuous-integration), including Travis CI, CircleCI, and CodeShip. This isn’t the first time we’ve seen GitHub compete against a popular area of its marketplace; they also competed against marketplace vendors in the [project management](https://github.com/marketplace/category/project-management) (Waffle.io vs. issue boards) and [dependency scanning](https://github.com/marketplace/category/dependency-management) categories (Snyk).\n\nWhy compete with vendors within their own marketplace? Similar to [Amazon’s private brands](https://www.businessinsider.com/amazon-owns-these-brands-list-2018-7), which compete in categories with well-established leaders on its own platform, all-in-one is eating the marketplace model, and GitHub is ready to eat its own marketplace to stay competitive.\n\nToday’s increasingly complex technology landscape demands a simplified and seamless all-in-one solution – and built-in [continuous integration](/solutions/continuous-integration/) is a logical first step. We know this because when we decided to build a [single application for the entire DevOps lifecycle](/why/), integrated pipelines were the critical first step to helping development teams build, test, deploy, and monitor their code. Companies like [Ticketmaster](/blog/continuous-integration-ticketmaster/) and [Paessler AG](/customers/paessler/) have shown us that when teams are working within a seamlessly integrated application experience, cycle times are reduced by as much as 200%, and the speed of pipelines can be reduced from over two hours to within eight minutes.\n\nWhile there will undoubtedly be space for some successful point solutions, we’re seeing a turning point from disparately integrated toolchains to all-in-one solutions in the tech tools landscape.\n\n## Need for speed and simplicity\n\nSoftware development and delivery is getting more complicated, requiring more tools per team and project. The advent of Kubernetes has brought a desire for DevOps and with it an avalanche of highly focused, sharp tools. The proliferation of teams and tools makes toolchain maintenance unmanageable and cumbersome, slowing down cycle times and inhibiting collaboration at a time when speed to market is critical to business success. Chaining together tools comes at too great of a cost. The explosion of microservices has exacerbated the issue. As more development teams embrace cloud native, building and running application in containers, the number of projects multiples and changes need to be made frequently. Disparate toolchains were not built to handle this level of integration complexity.\n\nA single application removes this complexity, providing a single setup, datastore, flow, and interface where teams can work collaboratively and concurrently. It enables [Concurrent DevOps](/topics/concurrent-devops/), removing the need for sequential handoffs, allowing cross-functional collaboration at speed. Developers, engineers, product managers, and security experts can all work on their piece without slowing each other down, allowing better visibility into work in flight, and the opportunity to shift left contributions from various teams.\n\nEliminating context switching, automated links between environments, code, issues, and epics, real-time updates, and everything in context are just a few reasons the all-in-one model beats out the toolchain. For a complete list, see our [advantages of a single application](/handbook/product/single-application/) page.\n\n## GitLab is a complete DevOps platform, delivered as a single application\n\nWe shipped [GitLab CI/CD](/solutions/continuous-integration/) in 2016, and completed our Master Plan to ship the entire software development lifecycle by the end of 2016. For the past two years, we’ve been continuously improving our single application, and we’re now working on packaging, monitoring, Kubernetes, and even [serverless](/topics/serverless/).\n\nWe’ve made a couple of [acquisitions](/handbook/acquisitions/) to integrate great point-solutions into our single application. It’s our prediction that we will see more acquisitions, big and small, across the technology landscape as the demand for an all-in-one solution grows.\n",[680,995,847],{"slug":2816,"featured":6,"template":683},"github-launch-continuous-integration","content:en-us:blog:github-launch-continuous-integration.yml","Github Launch Continuous Integration","en-us/blog/github-launch-continuous-integration.yml","en-us/blog/github-launch-continuous-integration",{"_path":2822,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2823,"content":2828,"config":2833,"_id":2835,"_type":17,"title":2836,"_source":18,"_file":2837,"_stem":2838,"_extension":21},"/en-us/blog/gitlab-to-deprecate-older-tls",{"title":2824,"description":2825,"ogTitle":2824,"ogDescription":2825,"noIndex":6,"ogImage":1328,"ogUrl":2826,"ogSiteName":671,"ogType":672,"canonicalUrls":2826,"schema":2827},"GitLab to deprecate support for TLS 1.0 and TLS 1.1 by end of 2018","Support for TLS 1.0 and 1.1 will be disabled on December 15th, 2018","https://about.gitlab.com/blog/gitlab-to-deprecate-older-tls","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab to deprecate support for TLS 1.0 and TLS 1.1 by end of 2018\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Melissa Farber\"}],\n        \"datePublished\": \"2018-10-15\",\n      }",{"title":2824,"description":2825,"authors":2829,"heroImage":1328,"date":2830,"body":2831,"category":14,"tags":2832},[2585],"2018-10-15","\n\nWe are focused on improving our security posture at GitLab and are always working to evolve our security processes. Part of that evolution is the incorporation of stronger cryptographic standards into our environment, and the deprecation of those that have been rendered out-dated or proven to be prone-to-attacks. In an effort to continue to raise that bar, we are announcing our plan to discontinue support for Transport Layer Security (TLS) 1.0 and 1.1 on GitLab.com and in our GitLab API by December 15, 2018. To that end, we have published this [public issue](https://gitlab.com/gitlab-com/security/issues/202) that will be used to track progress of this initiative and provide updates to the GitLab community.\n\nCurrently, GitLab.com supports TLS 1.0 and TLS 1.1. There have been many serious security issues reported with TLS 1.0 and TLS 1.1, including but not limited to [Heartbleed](http://heartbleed.com/).\n\nIn addition, from a security compliance standpoint, the Payment Card Industry (PCI) DSS 3.1 standard mandates the migration away from these weaker cryptographic standards. This mandate is to exclude Secure Sockets Layer (SSL) 3.0, TLS 1.0, and some ciphers supported by TLS 1.1 from protocols supporting strong cryptography.\nOur intent in making this announcement and creating the [public issue](https://gitlab.com/gitlab-com/security/issues/202) is to minimize any potential operational disruptions to GitLab.com customers while deprecating TLS 1.0 and TLS 1.1. This post is the first of three that we will publish during this interim period prior to disabling support for TLS 1.0 and 1.1 on December 15th, 2018.\nAs always, we will continue to monitor TLS 1.0 and 1.1 vulnerabilities and will adapt our timeline as required to mitigate protocol-level issues if they arise.  In addition to the monthly blog posts on the status of this initiative, updates to timelines will be posted to our Twitter feed and tracked in [public issues](https://gitlab.com/gitlab-com/security/issues/202). Additionally, GitLab.com users who have opted to receive [security alert emails](/company/preference-center/) from GitLab will receive status updates regarding the this deprecation process.\n\nIf you have any questions, please reach out to the Security team by emailing security@gitlab.com\n\n## Identified client incompatibilities\n\nThe majority of traffic should be unaffected by the deprecation of support for versions 1.0 and 1.1. Currently, the nof requests to GitLab.com are using up-to-date clients with support for TLS1.2. Whereas there are a few remaining clients that we believe will be affected (see below) most of these can be updated to work with TLS 1.2.\n\n### Git-Credential-Manager-for-Windows prior to 1.14.0\nVersions prior to 1.14.0 of Git-Credential-Manager-for-Windows do not support TLSv1.2. This can be addressed by updating to v1.14.0.    \n\n### Git on Red Hat 5, \u003C 6.8, and \u003C 7.2\nUsers running Red Hat 5 are advised to upgrade to a newer version of the operating system as Red Hat does not have a point release planned for 5 that supports TLS 1.2. Git clients shipped with Red Hat 6 and 7 did not support TLSv1.2, which can be remediated by updating to versions 6.8 and 7.2 respectively.\n\n### JGit / Java releases \u003C JDK 8\nVersions of the JDK 6 and prior do not support TLSv1.2. We advise users of JDK \u003C= 6 to upgrade to a newer version of the JDK.\n\n### Visual Studio\nThe latest version of Visual Studio 2017 supports TLSv1.2. Users not running the latest version are advised to upgrade.",[994],{"slug":2834,"featured":6,"template":683},"gitlab-to-deprecate-older-tls","content:en-us:blog:gitlab-to-deprecate-older-tls.yml","Gitlab To Deprecate Older Tls","en-us/blog/gitlab-to-deprecate-older-tls.yml","en-us/blog/gitlab-to-deprecate-older-tls",{"_path":2840,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2841,"content":2846,"config":2852,"_id":2854,"_type":17,"title":2855,"_source":18,"_file":2856,"_stem":2857,"_extension":21},"/en-us/blog/enforcing-managing-2fa-support-security",{"title":2842,"description":2843,"ogTitle":2842,"ogDescription":2843,"noIndex":6,"ogImage":1051,"ogUrl":2844,"ogSiteName":671,"ogType":672,"canonicalUrls":2844,"schema":2845},"This is what happens if you lose access to your 2FA GitLab.com account","Support Engineering Manager Lyle Kozloff explains why we no longer accept government ID for two-factor authentication removal.","https://about.gitlab.com/blog/enforcing-managing-2fa-support-security","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"This is what happens if you lose access to your 2FA GitLab.com account\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Lyle Kozloff\"}],\n        \"datePublished\": \"2018-10-08\",\n      }",{"title":2842,"description":2843,"authors":2847,"heroImage":1051,"date":2849,"body":2850,"category":14,"tags":2851},[2848],"Lyle Kozloff","2018-10-08","\nYou may have read my previous post about [how to keep your GitLab account safe and accessible](/blog/keeping-your-account-safe/). That came about because the Support Team recently changed how we verify your identity when you lose access to your GitLab.com account and request that the [two-factor authentication (2FA)](https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html) be reset. This was a collaborative effort between our Support and Security teams, and I wanted to share our updated, more secure process.\n\nUp until recently, the procedure for regaining access to your account started with resetting with an [SSH key](https://docs.gitlab.com/ee/user/ssh.html). Many users didn't have one registered, so the standard fallback for proving your identity was to provide your government-issued ID for verification. This is fairly common, but has a couple of drawbacks:\n\n- Many GitLab users don't use their real names on their GitLab accounts, so \"@elitehacker,\" for example, would have a pretty hard time proving their identity that way.\n- Also, GitLab, unlike other companies, doesn't use an independent verification service to assess these IDs. I don't even know what an Illinois driver's license looks like, let alone one issued by a country I've never been to. So there's a risk that our team wouldn't be able to identify fraudulent IDs.\n\n## How we authenticate users without using government ID\n\nWith this in mind, we started discussing ways to authenticate users that didn't rely on government-issued ID. I chatted to [Westley](/company/team/#wvandenberg) on the Security team, and got some insight into different approaches he had seen when he previously worked at Amazon. This is what the process looks like now:\n\n### Step 1: Determine risk factor\n\nThe first step is to classify the data we're potentially granting access to if we reset 2FA. There's a vast difference in risk between effectively granting access to thousands of private repositories which look like they contain secret government data, and granting access to a handful of tutorials on Angular that are public. So we came up with four different classifications based on what a user would get access to if we reset their 2FA – you can check out [the first iteration of these in the discussion in the issue](https://gitlab.com/gitlab-com/security/issues/45). This is a peer-reviewed process, so there will always be another agent confirming that the classification looks appropriate.\n\n### Step 2: Pose authentication challenges\n\nTogether Westley and I came up with a series of challenges the Support Team can pose to users who have lost access, which require knowledge and familiarity with the user's account. These challenges are given scores, and depending on what classification your account is given, there will be a minimum score you need to attain in order for us to reset your 2FA. The set of challenges posed is selected by the agent handling the ticket, and it may differ each time.\n\nThere's no one, single factor that will get you into your account – the spirit is rather that you can build a body of evidence to verify your identity, rather than relying on one thing (which used to be the case with the government ID). If you succeed in the challenges, we will reset your 2FA so you can get back into your account.\n\nThese challenges aren't made public – we're not going to give away exactly what you need to access a 2FA account, obviously 😆 We'll keep [iterating](https://handbook.gitlab.com/handbook/values/#iteration) on them too.\n\nAs mentioned, this new workflow is really a result of collaboration between Support and Security. Having identified that our existing process was less than ideal, we asked for an audit of our proposal from Security, to get their stamp of approval and ensure that we were leveraging our internal resources to keep our users' accounts safe. You can [check out the issue for this consultation with Security here](https://gitlab.com/gitlab-com/security/issues/45) for the full discussion.\n\nTo avoid resetting your 2FA altogether, here's [how to keep your GitLab account safe and accessible](/blog/keeping-your-account-safe/).\n",[848,890,994],{"slug":2853,"featured":6,"template":683},"enforcing-managing-2fa-support-security","content:en-us:blog:enforcing-managing-2fa-support-security.yml","Enforcing Managing 2fa Support Security","en-us/blog/enforcing-managing-2fa-support-security.yml","en-us/blog/enforcing-managing-2fa-support-security",{"_path":2859,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2860,"content":2866,"config":2871,"_id":2873,"_type":17,"title":2874,"_source":18,"_file":2875,"_stem":2876,"_extension":21},"/en-us/blog/gitlab-product-vision",{"title":2861,"description":2862,"ogTitle":2861,"ogDescription":2862,"noIndex":6,"ogImage":2863,"ogUrl":2864,"ogSiteName":671,"ogType":672,"canonicalUrls":2864,"schema":2865},"GitLab's product vision for 2019 and beyond","Watch Head of Product, Mark Pundsack, present our product vision.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671613/Blog/Hero%20Images/gitlab-innovate-cover.png","https://about.gitlab.com/blog/gitlab-product-vision","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab's product vision for 2019 and beyond\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2018-10-01\",\n      }",{"title":2861,"description":2862,"authors":2867,"heroImage":2863,"date":2868,"body":2869,"category":14,"tags":2870},[699],"2018-10-01","\n\nWe [recently went live](/blog/gitlab-live-event-recap/) to discuss the\nnews of our [Series D funding](/blog/announcing-100m-series-d-funding/)\nand what the future holds for GitLab. You can watch GitLab's Head of Product,\nMark Pundsack, present our vision with some previews of what's in the works\nbelow:\n\n## Watch the recording\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/ZgFqyXCsqPY?start=3796\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### View the slides\n\n\u003Cfigure class=\"video_container\">\n\u003Ciframe src=\"https://docs.google.com/presentation/d/e/2PACX-1vRCKP-VcLD9IomS8d1U8N73dfFWLtsVCAPtGiKBwlIv68U6tlZViv6HGCk53Nd_8HxitqDN-lVvIaTE/embed?start=false&loop=false&delayms=3000\" frameborder=\"0\" width=\"960\" height=\"569\" allowfullscreen=\"true\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\">\u003C/iframe>>\n\u003C/figure>\n\n## Summary of our product vision\n\nOur strategy is to double down on what's working: while we already cover the\nentire DevOps lifecycle, we want to increase depth in some of our existing\nfeatures, transitioning from minimum viable change to minimum loveable feature.\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-partner=\"tweetdeck\">\u003Cp lang=\"en\" dir=\"ltr\">I thought \u003Ca href=\"https://twitter.com/Jobvo?ref_src=twsrc%5Etfw\">@Jobvo\u003C/a> had me at &quot;Minimal Viable Change&quot;.  But then \u003Ca href=\"https://twitter.com/MarkPundsack?ref_src=twsrc%5Etfw\">@MarkPundsack\u003C/a> comes out with &quot;Minimal Lovable Product&quot; and I&#39;m awestruck \u003Ca href=\"https://twitter.com/hashtag/GitLabLive?src=hash&amp;ref_src=twsrc%5Etfw\">#GitLabLive\u003C/a>\u003C/p>&mdash; Brendan O&#39;Leary 👨🏻‍💻 (@olearycrew) \u003Ca href=\"https://twitter.com/olearycrew/status/1042837763480068096?ref_src=twsrc%5Etfw\">September 20, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\nWe're also going to continue to increase our breadth, building out new\ncapabilities across the entire DevOps lifecycle.\n\nAnd finally, because we believe everyone can contribute, we're going to add more\nroles to the scope of product, including executives, designers, product\nmanagers, and essentially anyone who is involved in software development and\ndelivery. Our goal is to get everyone working concurrently in a single product,\nwith nine best-in-class categories.\n\n## Coming up...\n\nWe're working on building out 26 new capabilities, but because you don't have\nall day, below are three examples to give you a taste of what's in the works.\n\n\u003Csmall>*Obligatory disclaimer: These are mock-ups and the features may turn out\nlooking a little different, or may not ship at all*\u003C/small>\n\n### Executive flow: Value Stream Management\n\nAt its heart, [Value Stream Management](/solutions/value-stream-management/)\nis about understanding your teams' work and their workflow on the way to\ndelivering value to customers. The way we're approaching it is to extend\nsomething development teams are already using to track their work, namely issue\nboards, and bring it into the bigger picture by having a board that covers the\nentire workflow necessary to get ideas into production.\n\nBecause GitLab already covers that entire scope, we can automate it too. We know\nwhen a feature is scheduled. We know when you push your first commit. We know\nwhen code review starts. We know when you deploy your code to production. So we\ncan move the cards to the right spots automatically, so not only can you track\nyour progress and communicate it to your team, you can track it all\nautomatically and more accurately. Neat, huh?\n\n![Value Stream Management analytics view](https://about.gitlab.com/images/blogimages/product-vision-sep-20/vsm-analytics.png){: .shadow.medium.center}\n\nThe above mock-up demonstrates a situation where someone was able to dive into\nthe time spent on various areas, and see that the time spent waiting for someone\nto even start QA was really high, and they managed to shave off a few days just\nby rearranging some internal processes. The same goes for the code review cycle.\n\n### Ops flow: Incident management\n\nThis is an operations flow based on a new product capability:\n[incident management](https://gitlab.com/groups/gitlab-org/-/epics/349). We\nmonitor your production apps and detect an anomaly, alert you, and then open an\nincident. Then in one place you can see: what triggered the alert, who's\ninvolved in responding, quick links to the Slack conversation, Zoom call, and\nwhere to update your public status page. There's also a timeline of all\nactivity. Because this is part of the same application that developers are\nusing, it’s not just operations people using this tool, so when you’re working\ntogether on problems, you’re looking at the same data, and GitLab knows not only\nwhat metrics are alerting, but what code was recently deployed that might have\ncaused it, and who was behind that code. When the incident is resolved, you can\neasily follow up with your users with a postmortem, pulling in all the relevant\ndata and timeline of events. Of course, with all that data comes great power for\nanalytics, to help the team learn from the incidents and improve.\n\n![Incident open](https://about.gitlab.com/images/blogimages/product-vision-sep-20/incident-management-error-rate.png){: .shadow.medium.center}\n  *\u003Csmall>Mock-up showing an Incident open with timeline view, including Slack messages and Status page updates\u003C/small>*\n\n### Security flow: Auto remediate\n\nA common security task is watching for new vulnerabilities in your project’s\ndependencies. If a module you depend on has a vulnerability, there’s usually a\npatch update to go along with it. When that patch is released, you then need to\ntest your software again with that patch, to make sure everything still works\nbefore you deploy it. That’s a pain!\n\nInstead of making anyone do all that repetitive, but necessary security work,\n[we want to automate it all away](https://gitlab.com/groups/gitlab-org/-/epics/133).\nIn our vision, a bot detects that a dependency has a new version, and instead of\nalerting someone, automatically creates a merge request that bumps the version\nnumber for you, and runs the test suite to make sure that everything still\nworks. The CI pipeline passes, and confirms that the security vulnerability is\nnow gone, so the bot automatically merges the changes. If all goes well, your\nsecurity and development teams just get an email in the morning saying that all\nthe projects with that dependency were automatically fixed.\n\nBy why leave a known, security vulnerability live any longer than it needs to?\nTo bring it full circle, after merging, the CI/CD pipeline starts incrementally\ndeploying to production. If the production error rate jumps, we automatically\nstop the incremental rollout, and go ahead and roll back to the last-known good\nversion immediately. The bot detects this and automatically reverts the merge\nrequest so we can leave `master` in a good state. This, we can finally alert the\nteams about, so instead of having to test 20 projects manually, they can focus\non the few that can’t be automated.\n\n![Auto remediate reverted](https://about.gitlab.com/images/blogimages/product-vision-sep-20/auto-remediate-reverted.png){: .shadow.medium.center}\n  *\u003Csmall>Mock-up showing a merge request reverted automatically following detection of production errors\u003C/small>*\n\nAs always, our plans are in draft and we welcome your feedback and input!\n",[723,890],{"slug":2872,"featured":6,"template":683},"gitlab-product-vision","content:en-us:blog:gitlab-product-vision.yml","Gitlab Product Vision","en-us/blog/gitlab-product-vision.yml","en-us/blog/gitlab-product-vision",{"_path":2878,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2879,"content":2885,"config":2891,"_id":2893,"_type":17,"title":2894,"_source":18,"_file":2895,"_stem":2896,"_extension":21},"/en-us/blog/customer-interview-charter-communications",{"title":2880,"description":2881,"ogTitle":2880,"ogDescription":2881,"noIndex":6,"ogImage":2882,"ogUrl":2883,"ogSiteName":671,"ogType":672,"canonicalUrls":2883,"schema":2884},"Better Developer & Customer Experiences with One Application","Director of Product Integration Michael Sobota of Charter Communications shares how they're using GitLab to simplify their toolchain, with big results.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663655/Blog/Hero%20Images/gitlab-live-sept-2018.png","https://about.gitlab.com/blog/customer-interview-charter-communications","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Customer story: Driving better developer and customer experiences with a single application\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2018-09-26\",\n      }",{"title":2886,"description":2881,"authors":2887,"heroImage":2882,"date":2888,"body":2889,"category":14,"tags":2890},"Customer story: Driving better developer and customer experiences with a single application",[2489],"2018-09-26","\nDuring [#GitLabLive](/blog/gitlab-live-event-recap/), customer Michael Sobota,\nDirector of Product Integration at [Charter Communications](https://www.spectrum.com/about.html), joined us to share how adopting\nGitLab as the [single application](/handbook/product/single-application/) for their entire software development lifecycle has brought their\nfeedback loop of two weeks down to a matter of minutes. Charter is an American telecom\ncompany providing services to over 26 million customers in 41 states, and is the second-largest\ncable operator in the US. They have 94,000 employees worldwide.\n\nYou can watch the interview with Michael and check out our key takeaways from it below:\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/HnTPi7y5MVo\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n## Key takeaways\n\n### A single place for all development, operations, and feedback is critical to a great developer experience\n\n Michael: \"It's my job to make sure developers who are providing a digital experience to our\n subscribers have a great developer experience: Helping them realize that vision of quick iterations,\n giving them feedback, shifting left concerns like security and testing, deployments, and getting\n that feedback early in our value stream where it’s cheaper to course correct.\"\n\n\"GitLab has been a cornerstone of our [DevOps platform](/solutions/devops-platform/): using it for source control management,\nfor continuous integration, continuous deployment, a Docker registry, artifacts. We want to give\ndevelopers a single place to get feedback, self-service, and do it in a responsible manner that\nallows us to provide great value to our subscribers.\"\n\n### Quick feedback is also essential to staying competitive\n\nMichael: \"Consumers and subscribers are looking for different, more digital ways to interact\nwith companies and to consume content. Shifting left allows us to be competitive in creating\nthese new, digital ways for consumers to interact with us, whether it’s paying their bill or understanding\nhow their account is set up, ordering a new service, consuming live streaming video, or video on demand.\nCustomers want that quick feedback and do to that we need to shift things left.\"\n\n### Having everything in one place can drastically reduce your feedback loop\n\nMichael: To be able to understand, \"Did my code merge in? Did it build the capacity tests? Did it pass\nthe security standards?\" – these things, in a single place, within the merge request, within that\nUI, have helped us cut down our feedback loop that was typically around our sprint cycle of\naround two weeks, down to minutes.\"\n\n\"Gone are the days of managing different build machines. It’s all in the power of the developers,\nand now from the first line of code on every single branch, we can deploy a mutually exclusive\nenvironment and get feedback in minutes down from that two-week cycle. Now, almost every\nsingle branch of code can have a deployment, and you can have feedback as a developer, as a\nproduct owner, or as a designer, right away.\"\n",[995,1479,783],{"slug":2892,"featured":6,"template":683},"customer-interview-charter-communications","content:en-us:blog:customer-interview-charter-communications.yml","Customer Interview Charter Communications","en-us/blog/customer-interview-charter-communications.yml","en-us/blog/customer-interview-charter-communications",{"_path":2898,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2899,"content":2905,"config":2911,"_id":2913,"_type":17,"title":2914,"_source":18,"_file":2915,"_stem":2916,"_extension":21},"/en-us/blog/create-vision",{"title":2900,"description":2901,"ogTitle":2900,"ogDescription":2901,"noIndex":6,"ogImage":2902,"ogUrl":2903,"ogSiteName":671,"ogType":672,"canonicalUrls":2903,"schema":2904},"GitLab's 2019 product vision for DevOps Create","Take an early look at where collaboration, merge requests, and the Web IDE are heading in 2019.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678812/Blog/Hero%20Images/web-ide-cover.jpg","https://about.gitlab.com/blog/create-vision","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab's 2019 product vision for DevOps Create\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"James Ramsay\"}],\n        \"datePublished\": \"2018-09-21\",\n      }",{"title":2900,"description":2901,"authors":2906,"heroImage":2902,"date":2908,"body":2909,"category":14,"tags":2910},[2907],"James Ramsay","2018-09-21","\nGitLab is a single application, so for convenience we organize by [DevOps stages](/handbook/product/categories/). The Create stage of the DevOps lifecycle is about creating code, and includes Git repositories, merge requests, code review, the Web IDE, wikis, and snippets.\n\nManaging source code is at the heart of GitLab – it's in our name and it powers your applications. This year we've shipped many important improvements to make it easier to go from idea to production. The [Web IDE](/releases/2018/06/22/gitlab-11-0-released/#cicd-pipeline-status-and-job-traces-in-the-web-ide) makes it easy for anyone to contribute, and faster to work with merge requests. [Squash and Merge](/releases/2018/06/22/gitlab-11-0-released/#squash-and-merge-in-gitlab-core-and-gitlabcom-free), and [Rebase and Fast-forward Merge](/releases/2018/01/22/gitlab-10-4-released/#rebase-and-fast-forward-in-ce) are available in GitLab CE. [File locking](/releases/2018/02/22/gitlab-10-5-released/#git-lfs-2-locking-support) is integrated with Git LFS. [Maintainers can push to forks](/releases/2018/03/22/gitlab-10-6-released/#maintainers-can-push-to-mr-from-fork). And there is much more to come this year, like [batch comments](https://gitlab.com/gitlab-org/gitlab-ee/issues/1984) for merge requests, and [suggested approvers](https://gitlab.com/gitlab-org/gitlab-ee/issues/5382) based on code owners.\n\nHere are some of the things we're thinking about for 2019:\n\n- [Collaboration](#collaboration)\n- [Code review and approvals](#code-review-and-approvals)\n- [Web IDE](#web-ide)\n- [Summary](#summing-up)\n\nAs our plans are always in draft, we'd love to hear your thoughts, and any suggestions.\n\n### Collaboration\n\nGit's distributed design made new collaborative workflows possible, and forking has made collaboration even easier. Forking is the workflow of choice for open source, and for the same reasons it is also great for private organizations. We want to remove the barriers to collaboration and [inner sourcing](/topics/version-control/what-is-innersource/), but also make it easier to collaborate with external open source projects too.\n\nThe distributed capabilities of Git aren't limited to a single server. Open source software is used extensively in commercial applications of all kinds, but collaboration between open source projects and commercial is difficult. Features and bug fixes to open source projects can sit in stale forks in private Git repositories for lack of tools and process. [Distributed merge requests](https://gitlab.com/groups/gitlab-org/-/epics/260) will make it easy publish a patch from a private GitLab instance to a public upstream server, be it GitLab, GitHub or Bitbucket. Teams will be able to work on a patch privately following internal processes, but instead of merging the reviewed and tested change privately, it can be published to a new public merge request upstream. Contributing fixes and features upstream isn't only good for the community, but it also makes commercial sense by eliminating the costly task of keeping a stale, private fork up to date. We want to make it easy for everyone to contribute to open source software, as individuals and as companies!\n\n![Mockup of distributed merge request widget](https://about.gitlab.com/images/blogimages/merge-request-distributed.png){: .medium.center.shadow}\n\nWe'll also be improving simpler forking workflows too with important quality-of-life improvements. To make it easy to see how far behind or diverged your fork is, we will make it possible to [compare branches](https://gitlab.com/gitlab-org/gitlab-ce/issues/19788) across forks and [cherry pick](https://gitlab.com/gitlab-org/gitlab-ce/issues/43568) changes directly from the upstream project into your fork. Forks of private projects will also [inherit permissions](https://gitlab.com/gitlab-org/gitlab-ce/issues/8935) from the upstream project, making it possible for upstream maintainers to rebase stale merge requests and help contributors. This will allow teams to adopt forking workflows without needing to make every project public to the world or to the organization.\n\n### Code review and approvals\n\nMerge requests are key to the workflows that allow teams to iterate rapidly and ship amazing products quickly, by bringing together all the important information in a single place. Critical to this workflow is the code review, and we want GitLab to be the best tool for doing code reviews.\n\nAutomatic code quality and linting tools can prevent code reviews becoming simple code style reviews, but without the inline feedback a reviewer can't be sure which problems have been automatically detected. A new [API for line by line code quality feedback](https://gitlab.com/gitlab-org/gitlab-ce/issues/50299) will allow output from tools to be rendered natively in GitLab in the merge request diff. Merge request authors will have a single source of truth, and code reviewers can confidently focus on important structural feedback.\n\nCode review feedback cannot truly be resolved and the merge request approved until the reviewer checks the feedback was correctly addressed. This step prevents feedback from being misunderstood or overlooked, but it is currently difficult and time consuming. We are going to streamline this important step by allowing you to [review changes since code review](https://gitlab.com/groups/gitlab-org/-/epics/314) and making [merge request diffs smarter](https://gitlab.com/groups/gitlab-org/-/epics/340). When the change is straightforward, we're going to make it possible to simply [propose a change](https://gitlab.com/gitlab-org/gitlab-ce/issues/18008) as easily as leaving a comment that can be applied with a single click – no more copying and pasting `sed` one liners! And we're going to make it easier to [view and add comments to commits](https://gitlab.com/gitlab-org/gitlab-ee/issues/1769) at any time.\n\nIn the real world, complex features often require large, complex merge requests. We will support these situations better with [commit by commit code review](https://gitlab.com/groups/gitlab-org/-/epics/285), autosquashing [`fixup!`](https://gitlab.com/gitlab-org/gitlab-ee/issues/212) and [`squash!`](https://gitlab.com/gitlab-org/gitlab-ce/issues/50400) commits, and allowing you to [preview](https://gitlab.com/gitlab-org/gitlab-ee/issues/7259) the resultant squashed commits.\n\nComplex real-world changes also need good commit messages, but commit messages are too easily neglected. Without good commit messages, debugging a regression, or modifying an important existing function is painful and error prone. To help teams adopt best practice [commit hygiene](/blog/keeping-git-commit-history-clean/), we will make [commit messages part of code review](https://gitlab.com/groups/gitlab-org/-/epics/286) by allowing comments on commit messages, improving the [visibility of commit messages](https://gitlab.com/gitlab-org/gitlab-ce/issues/49803), and making [squash and merge smarter](https://gitlab.com/gitlab-org/gitlab-ce/issues/47149). GitLab should celebrate great commit messages and amplify their benefits to make it easier for teams to adopt best practices.\n\n### Web IDE\n\nIn 2018 we're building a strong foundation for a cloud development environment with [client side evaluation](https://gitlab.com/gitlab-org/gitlab-ce/issues/47268) and [server side evaluation](https://gitlab.com/gitlab-org/gitlab-ee/issues/4013) powered live previews, and server side evaluation will also enable a [web terminal](https://gitlab.com/gitlab-org/gitlab-ee/issues/5426) to test your changes in real time. IDEs are also very personal and should support customization, to make it easy to move between your local IDE and GitLab IDE. Please share your feedback, and consider contributing – I'd love to see support for [dark syntax themes](https://gitlab.com/gitlab-org/gitlab-ce/issues/46334) and [vim keybindings](https://gitlab.com/gitlab-org/gitlab-ce/issues/47930)!\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/sSWu6TyubTE\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nThe Web IDE makes it easier than ever to resolve code review feedback, reducing the need to switch context in your local development environment, but we can make it even better. Addressing a comprehensive code review still requires switching backwards and forwards between the merge request and the Web IDE. [Line by line code quality feedback](https://gitlab.com/gitlab-org/gitlab-ce/issues/50299) available in the merge request diff will also be available in the Web IDE as will [live linting feedback](https://gitlab.com/groups/gitlab-org/-/epics/70) powered by server side evaluation so to help prevent new code styling problems being created while resolving feedback.\n\nWe are also considering integrating [merge request discussions](https://gitlab.com/groups/gitlab-org/-/epics/72) so that code review comments can be addressed without needing to continually switch between tabs. We don't think the Web IDE should replace the merge request, nor should every feature be duplicated into it, but do think the Web IDE can further simplify the process for resolving code review feedback so teams can iterate faster.\n\n### Summing up\n\nWriting, reviewing, and merging code is where the rubber hits the road when taking your app from idea to production, and in 2019 we want it to be better than ever before!\n\nThe [GitLab product vision](/direction/) is public so you can read up on what we're thinking about at any time, about every part of the product. Please join the conversation and share your feedback on these ideas, and offer ideas of your own! Your contributions – idea or code – are welcomed and appreciated so that we can all work together to make GitLab the best application to build and ship your next great idea.\n",[890,723,848,783,995],{"slug":2912,"featured":6,"template":683},"create-vision","content:en-us:blog:create-vision.yml","Create Vision","en-us/blog/create-vision.yml","en-us/blog/create-vision",{"_path":2918,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2919,"content":2924,"config":2929,"_id":2931,"_type":17,"title":2932,"_source":18,"_file":2933,"_stem":2934,"_extension":21},"/en-us/blog/gitlab-live-event-recap",{"title":2920,"description":2921,"ogTitle":2920,"ogDescription":2921,"noIndex":6,"ogImage":2882,"ogUrl":2922,"ogSiteName":671,"ogType":672,"canonicalUrls":2922,"schema":2923},"Here's what went down at #GitLabLive","We went live today to discuss our $100m Series D funding and what's next for GitLab – catch up on the recording here.","https://about.gitlab.com/blog/gitlab-live-event-recap","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Here's what went down at #GitLabLive\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2018-09-20\",\n      }",{"title":2920,"description":2921,"authors":2925,"heroImage":2882,"date":2926,"body":2927,"category":14,"tags":2928},[2489],"2018-09-20","\n\nAfter [yesterday's big news](/blog/announcing-100m-series-d-funding/), we held a\n[#GitLabLive](https://twitter.com/search?q=%23GitLabLive&src=tyah) event today to dive into what this means for us, for you, and for GitLab the product.\n\nAs you can tell, we were all pretty excited about it:\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-partner=\"tweetdeck\">\u003Cp lang=\"en\" dir=\"ltr\">Waiting for \u003Ca href=\"https://twitter.com/hashtag/GitLabLive?src=hash&amp;ref_src=twsrc%5Etfw\">#GitLabLive\u003C/a> like \u003Ca href=\"https://t.co/eqw4ljZXaa\">pic.twitter.com/eqw4ljZXaa\u003C/a>\u003C/p>&mdash; Brendan O&#39;Leary 👨🏻‍💻 (@olearycrew) \u003Ca href=\"https://twitter.com/olearycrew/status/1042809056275193856?ref_src=twsrc%5Etfw\">September 20, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\nHosted by Director of Cloud Native Alliances [Priyanka Sharma](https://twitter.com/pritianka), the event covered GitLab past,\npresent, and future with GitLab team-members, investors, and customers. You can watch the whole thing below:\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/ZgFqyXCsqPY\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### Get the slides\n\n\u003Cfigure class=\"video_container\">\n\u003Ciframe src=\"https://docs.google.com/presentation/d/e/2PACX-1vTO_mVE0psqDSIOwmrv30ebL0IMdAIhYFHqBcoqI6b8_Cl1yl8f6FaAIm-d7qwsOWhhiUIqPxo6fjhH/embed?start=false&loop=false&delayms=3000\" frameborder=\"0\" width=\"1280\" height=\"749\" allowfullscreen=\"true\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\">\u003C/iframe>\n\u003C/figure>\n\nJust as an aside:\n\n\u003Cdiv class=\"center\">\n\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">There’s a rumor going around that we borrowed the set of “Between Two Ferns” for \u003Ca href=\"https://twitter.com/hashtag/GitLabLive?src=hash&amp;ref_src=twsrc%5Etfw\">#GitLabLive\u003C/a>, can neither confirm nor deny 😆\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1042830634366853121?ref_src=twsrc%5Etfw\">September 20, 2018\u003C/a>\u003C/blockquote>\n  \u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n## Highlights\n\n### [Company update](https://youtu.be/ZgFqyXCsqPY?t=57s)\n\nOur CEO and co-founder [Sid Sijbrandij](/company/team/#sytses) chats with Priyanka about some major company\nmilestones, from our beginnings at YCombinator, to recently being ranked [#44 on Inc. 5000's\nlist of the fastest-growing companies in the US for 2018](/blog/gitlab-ranked-44-on-inc-5000-list/), and our [CI solution being recognized by Forrester as a Leader in that space](/blog/gitlab-leader-continuous-integration-forrester-wave/). He also talks about our acquisition of Gemnasium, which spurred development of GitLab's integrated security features, as well as our focus on cloud native and [Kubernetes](/solutions/kubernetes/).\n\nReaching 2,000 contributors recently was also a landmark achievement for us, and we're proud to have switched to a [DCO for source code contributions](/blog/gitlab-switches-to-dco-license/) to make it even easier for everyone to contribute. We're thrilled to have a number of [foundational open source projects call GitLab home](/blog/welcome-gnome-to-gitlab/) now, giving weight to [#movingtogitlab](/blog/why-move-to-gitlab/).\n\nAll of this has been building towards yesterday's news: our [series D funding of $100 million](/blog/announcing-100m-series-d-funding/) to help us realize our vision of beating out nine other, best-in-class products with a single application.\n\nHow does it feel being part of the unicorn club?\n\n> \"It's exciting. When we came to Silicon Valley, YCombinator explained to us that if you're going to raise money from external investors, your aim should be to become a billion dollar company. Otherwise you should not raise any money and we seriously considered it. But we opted to raise the money and now our early shareholders can feel confident that we've got here. But we raised more money now so the bar is higher and we're going to try to keep growing the company.\" - Sid Sijbrandij, CEO, GitLab\n\n### [Why invest in GitLab?](https://youtu.be/ZgFqyXCsqPY?t=14m20s)\n\nMatthew Jacobson, General Partner at ICONiQ Capital, joins to share some insight into why they've invested in GitLab. With a focus on growth-stage investments, they look for product velocity and the strength and quality of the team.\n\nThe conversation between ICONiQ and GitLab started over two years ago, where the \"maniacal focus on product\" at GitLab became clear and the breadth of our ambition made a real impression. Nine categories is an ambitious product vision!\n\n### [Scaling a remote work culture](https://youtu.be/ZgFqyXCsqPY?t=22m4s)\n\nOur culture is extremely important to us. Chief Culture Officer [Barbie Brewer](/company/team/#BarbieJBrewer) joins to shed some light on how we preserve it as we scale, keeping people front and center at all times:\n\n> \"We focus on working with the best people, getting the best contributors, and building the best product... We have our [values](https://handbook.gitlab.com/handbook/values/) at the core of everything we do. We give each other feedback and push each other to be better.\" - Barbie Brewer, Chief Culture Officer, GitLab\n\nThe company growing doesn't necessarily mean the workforce needs to grow 1:1: \"We're not just growing fast, we're growing smart,\" said Barbie.\n\nBarbie also reiterated our commitment to [diversity, inclusion and belonging](https://handbook.gitlab.com/handbook/values/#diversity-inclusion), sharing some of the ways we encourage and empower GitLab team-members to uphold these values and help each other to learn and grow along the way. As always, our [handbook](/handbook/) is our single source of truth.\n\n### [Product update](https://youtu.be/ZgFqyXCsqPY?t=33m58s)\n\nTo fill us in on what's new with GitLab the product, we're joined by [William Chia](/company/team/#thewilliamchia), Manager, Product Marketing. We delivered the full software development lifecycle at the end of 2016, then set our sights on [Concurrent DevOps](/blog/from-dev-to-devops/). William shares how conversations with users and customers alerted us to the \"toolchain crisis\" and how this has inspired us to deliver Concurrent DevOps with a single application covering the entire DevOps lifecycle.\n\n#### [User perspective: Why GitLab?](https://youtu.be/ZgFqyXCsqPY?t=51m26s)\n\nWe hear from Michael Sobota, Director of Product Integration at Charter Communications, about their company goals of quick, iterative development, shifting operations concerns left, and how they're using GitLab as their DevOps platform to get there. They've gone from feedback cycles of **two weeks** to a matter of **minutes** – ultimately helping them to deliver a better customer experience.\n\n> \"Gone are the days of managing multiple build machines. It's all in the power of developers.\" - Michael Sobota, Director of Product Integration, Charter Communications\n\n### [Product vision](https://youtu.be/ZgFqyXCsqPY?t=1h2m50s)\n\nHead of Product [Mark Pundsack](/company/team/#MarkPundsack) joins to share our ambitious product vision, and we're so excited about it, we're dedicating a post to it on its own! In case you just can't wait, here's the rundown:\n\n1. GitLab is a complete [DevOps platform](/solutions/devops-platform/), delivered as a single application, enabling [Concurrent DevOps](/topics/concurrent-devops/).\n1. We're going to double down on what's working and focus on depth, breadth, and adding new roles to the product.\n1. In 2019, we plan to become leaders in four new areas: project management, continuous delivery and release automation, application security testing, and value stream management.\n1. We have 26 new product capabilities planned for 2019.\n1. DevOps isn't just about developers and operations. We plan to cover roles like designers and product managers so everyone can work concurrently in a single product.\n\n### [Q&A](https://youtu.be/ZgFqyXCsqPY?t=1h13m51s)\n\nSid's back in the house! He answers some audience questions, and encourages everyone to make suggestions for how to improve GitLab:\n\"Many times the hardest thing is figuring out what to make, not how to make it.\" More proof that [everyone can contribute](/company/strategy/#why)!\n",[278,680,890,680,1437],{"slug":2930,"featured":6,"template":683},"gitlab-live-event-recap","content:en-us:blog:gitlab-live-event-recap.yml","Gitlab Live Event Recap","en-us/blog/gitlab-live-event-recap.yml","en-us/blog/gitlab-live-event-recap",{"_path":2936,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2937,"content":2942,"config":2947,"_id":2949,"_type":17,"title":2950,"_source":18,"_file":2951,"_stem":2952,"_extension":21},"/en-us/blog/announcing-100m-series-d-funding",{"title":2938,"description":2939,"ogTitle":2938,"ogDescription":2939,"noIndex":6,"ogImage":2882,"ogUrl":2940,"ogSiteName":671,"ogType":672,"canonicalUrls":2940,"schema":2941},"Announcing $100 million in Series D round funding led by ICONIQ Capital","Today we announced $100M in new funding to beat nine best-in-class products with a single application.","https://about.gitlab.com/blog/announcing-100m-series-d-funding","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Announcing $100 million in Series D round funding led by ICONIQ Capital\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2018-09-19\",\n      }",{"title":2938,"description":2939,"authors":2943,"heroImage":2882,"date":2944,"body":2945,"category":14,"tags":2946},[699],"2018-09-19","Today we are thrilled to announce our $100 million Series D funding led by ICONIQ Capital, bringing our valuation to over $1 billion and validating our position as the world’s first single application for the entire DevOps lifecycle. We’re elated that ICONIQ shares our vision of beating out nine other products with a single, best-in-class application that integrates each stage of the DevOps lifecycle. We plan to use the funding to become best-in-class in every DevOps software category from planning to monitoring. More than 100,000 organizations use GitLab to deploy to multiple clouds, implement [cloud native](/topics/cloud-native/) architectures, and practice Concurrent DevOps. This results in a 200 percent faster DevOps lifecycle with unmatched visibility, higher levels of efficiency, and comprehensive governance.\n\n> “GitLab is emerging as a leader across the entire software development ecosystem by releasing software at a pace that is unmatched by any competitor. They’re taking the broad software development market head-on by developing an application that allows organizations to churn out software at an accelerated rate with cost and time savings.” - Matthew Jacobson, General Partner at ICONIQ Capital\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/ZgFqyXCsqPY\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n\u003Cfigure class=\"video_container\">\n\u003Ciframe src=\"https://docs.google.com/presentation/d/e/2PACX-1vTO_mVE0psqDSIOwmrv30ebL0IMdAIhYFHqBcoqI6b8_Cl1yl8f6FaAIm-d7qwsOWhhiUIqPxo6fjhH/embed?start=false&loop=false&delayms=3000\" frameborder=\"0\" width=\"1280\" height=\"749\" allowfullscreen=\"true\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\">\u003C/iframe>\n\u003C/figure>\n\nEnterprises are facing a tool chain crisis, investing time and resources into piecing together disparate tools from different stages of the software development and operations lifecycle. A typical enterprise needs to integrate tools like VersionOne, Jira, GitHub, Jenkins, Artifactory, Electric Cloud, Puppet, New Relic, and BlackDuck. This causes poor visibility because data lives in so many different tools, slow cycle time because teams need to wait on each other, and bolted on security as an afterthought.\n\nOur open core application, which has more than 2,000 contributors, is breaking down this barrier by building features for each stage of the DevOps lifecycle into a single application. This enables Concurrent DevOps, the ability for teams to manage, plan, create, verify, package, release, configure, monitor, and secure software together so they can have visibility into what matters, start without waiting, and ship with confidence.\n\n> “Our goal is to strive for less people managing processes and more automation within our workflow. GitLab does just that by eliminating the complicated web that tied all of our development tools together, so we now have a single, automated application that makes our team more efficient.” — Adam Dehnel, product architect, BI Worldwide\n\nWe started as source code management based on Git. But when announcing our series C last year, we [voiced the ambition](/blog/gitlab-raises-20-million-to-complete-devops/) to grow beyond that to cover every product category of the DevOps lifecycle. Some features have already become best in class, like the continuous integration system that scored highest in the current offering category in The Forrester Wave™: Continuous Integration Tools, Q3 2017 report, and was recognized as a \"Strong Performer\" in The Forrester New Wave™ for Value Stream Management Tools, Q3 2018. With this latest funding round and the growing number of people contributing code to GitLab, we are well positioned for all of our features to become best-in-class.\n\n> “Two of the defining characteristics of modern application development are an open, collaborative process and toolchains that transcend individual product categories from planning out to operations. By marrying an open source development process to a comprehensive set of functional capabilities, GitLab aims to leverage those precise qualities in a single application that meets enterprises’ DevOps needs.” - Stephen O’Grady, Principal Analyst with RedMonk\n\n> “Since raising a Series C round last year, we’ve delivered on our commitment to bring a single application for the entire DevOps lifecycle to market, and as a result have been able to reach over $1 billion in valuation. With this latest funding round, we will continue to improve upon our suite by building out our management, planning, packaging, monitoring and security features for a more robust DevOps application.” – Sid Sijbrandij, CEO of GitLab\n\nGitLab is purpose-built for organizations that are undergoing a digital transformation. Our focus is on supporting organizations that are aiming for faster DevOps lifecycles, cloud native architectures, and multi-cloud deployments. Some of our recent product milestones include the release of [Auto DevOps](/press/releases/2018-06-22-auto-devops-gitlab-11.html) to accelerate the DevOps lifecycle by 200 percent, a [Kubernetes integration](/releases/2018/03/22/gitlab-10-6-released/) so clusters can be spun up from within GitLab, and [enhancements to the Web IDE](/releases/2018/08/22/gitlab-11-2-released/) to make code changes easier for everyone.\n\nThe latest round brings our valuation to over $1 billion and validates our position as the world’s first single application for the entire DevOps lifecycle. As other DevOps tools become locked in to a single cloud, our customers are embracing a multi-cloud future, so their tooling must be independent of any single cloud provider and work across on-premises, private and public clouds. Customers want their tooling to be consistent, whether they deploy it themselves or use it as a service.\n\n> “Deployments are no longer limited to a traditional software release cycle. Using GitLab-CI for our Continuous Deployments over-the-air, we have empowered the customer to be their own technician while increasing the rate at which software can be delivered.” - Chris Hill, head of systems engineering, next generation infotainment at Jaguar Land Rover.\n\nWe began in 2014 with a mission to change all creative work from read-only to read-write, so that everyone can contribute. Since then, our all-remote company has grown from fewer than 10 to more than 350 team members in over 40 countries across the globe. And we’re not slowing down – we’re still [hiring for 77 positions](/jobs/)!\n\nWe were recently [recognized by Inc. Magazine as No. 44 out of the 5,000 fastest-growing private companies in the United States](/blog/gitlab-ranked-44-on-inc-5000-list/). We attribute our success to our open core model and our value of transparency. We have an emphasis on co-creation and a commitment to open source – [over 2,000 users and customers have contributed to GitLab’s code base](http://contributors.gitlab.com/). This philosophy helps build stronger customer relationships, which in turn result in a direct influence on feature updates to the product.\n\n## Get involved\n\nWe owe GitLab’s existence to your enthusiasm, drive, and hard work. Without our contributors’ belief in open source software, we would not be where we are today. We need your help to make our collective vision a reality. Everyone can contribute!\n\nWe are committed to standing by our [promise to be good stewards of open source](/blog/being-a-good-open-source-steward/),\nand keeping communication and collaboration amongst the community a high priority.\n\nTo get started you can learn more about [Concurrent DevOps](/topics/devops/ ), ready stories of [how others are using GitLab](/customers/), or visit our [contribution guide](/community/contribute/).",[680,890,1437],{"slug":2948,"featured":6,"template":683},"announcing-100m-series-d-funding","content:en-us:blog:announcing-100m-series-d-funding.yml","Announcing 100m Series D Funding","en-us/blog/announcing-100m-series-d-funding.yml","en-us/blog/announcing-100m-series-d-funding",{"_path":2954,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2955,"content":2961,"config":2965,"_id":2967,"_type":17,"title":2968,"_source":18,"_file":2969,"_stem":2970,"_extension":21},"/en-us/blog/free-trial-gitlab-gold",{"title":2956,"description":2957,"ogTitle":2956,"ogDescription":2957,"noIndex":6,"ogImage":2958,"ogUrl":2959,"ogSiteName":671,"ogType":672,"canonicalUrls":2959,"schema":2960},"Take GitLab Gold out for a test drive","Free trials of GitLab Gold are now available – here's how to get started.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670123/Blog/Hero%20Images/moving-to-gitlab-cover.png","https://about.gitlab.com/blog/free-trial-gitlab-gold","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Take GitLab Gold out for a test drive\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2018-09-19\",\n      }",{"title":2956,"description":2957,"authors":2962,"heroImage":2958,"date":2944,"body":2963,"category":14,"tags":2964},[699],"\n\nIf you’re like me, you probably \"try\" new software and different products all\nthe time. I’ve lost track of how many trials I’ve started, but I know that the\ntrial helps me make a better decision about what to do next.\n\nThe same is true with GitLab; you really should try it out to get a sense about\nhow much power and value is at your fingertips. What’s the difference between\nusing the open source version of GitLab and the enterprise features of GitLab.com Gold / GitLab Ultimate? Night and day.\n\nHere are a few things that you should explore in a GitLab trial:\n* Security ([SAST](https://docs.gitlab.com/ee/user/application_security/sast/), [DAST](https://docs.gitlab.com/ee/user/application_security/dast/), and [dependency scans](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/))\n* [Portfolio management](/solutions/agile-delivery/) and tracking epics and roadmaps\n* [Licence management](https://docs.gitlab.com/ee/user/compliance/license_compliance/index.html)\n* [Kubernetes](/solutions/kubernetes/) integration and management\n* [LDAP](https://docs.gitlab.com/ee/administration/auth/ldap/index.html) integration\n* [Merge requests](https://docs.gitlab.com/ee/user/project/merge_requests/) with multiple reviewers\n\nUntil now, if you wanted to explore these great GitLab features, your only option\nwas to [download GitLab Ultimate](/free-trial/), install it, spin up your self-managed instance,\nand start your trial.\n\nWe’ve heard from customers that they wanted an easier way to try the enterprise\nfeatures of GitLab without the extra work to download, install, and configure.\nNow, you can skip straight to trying GitLab with our new **GitLab Gold Trial**.\n**GitLab.com Gold** is our hosted version of Gitlab Ultimate, where you can quickly\nexplore and test the end-to-end [DevOps lifecycle](/topics/devops/) features that make GitLab a one-stop\nsolution for your entire delivery process.\n\n## Get started\n\nAre you ready to explore **GitLab Gold**? You can get started in three simple steps:\n1.  [Register  on GitLab.com](https://gitlab.com/users/sign_in#register-pane) **(If you already have an account, please skip this step)**\n2.  Sign into GitLab.com\n3.  [Click here to start your free trial of GitLab Gold](https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=blog-2018-09-19b)\n![GitLab Gold Trial](https://about.gitlab.com/images/blogimages/GitLab_Gold_Trial.png){: .shadow.center.medium}\n\nPlease make sure you're signed into GitLab.com so you can go to the trial signup page.\n\n![GitLab Gold](https://about.gitlab.com/images/blogimages/GitLabGold.png){: .shadow.center.medium}\n",[680,995],{"slug":2966,"featured":6,"template":683},"free-trial-gitlab-gold","content:en-us:blog:free-trial-gitlab-gold.yml","Free Trial Gitlab Gold","en-us/blog/free-trial-gitlab-gold.yml","en-us/blog/free-trial-gitlab-gold",{"_path":2972,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2973,"content":2979,"config":2985,"_id":2987,"_type":17,"title":2988,"_source":18,"_file":2989,"_stem":2990,"_extension":21},"/en-us/blog/gitlab-summit-cape-town-recap",{"title":2974,"description":2975,"ogTitle":2974,"ogDescription":2975,"noIndex":6,"ogImage":2976,"ogUrl":2977,"ogSiteName":671,"ogType":672,"canonicalUrls":2977,"schema":2978},"Salani kakuhle (bye!) and thanks for a great summit in Cape Town!","And just like that, it was all over. Check out the highlights and keynote from our recent summit in South Africa.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670482/Blog/Hero%20Images/summit_recap_pic_post.jpg","https://about.gitlab.com/blog/gitlab-summit-cape-town-recap","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Salani kakuhle (bye!) and thanks for a great summit in Cape Town!\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Daisy Miclat\"},{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2018-09-14\",\n      }",{"title":2974,"description":2975,"authors":2980,"heroImage":2976,"date":2982,"body":2983,"category":14,"tags":2984},[2981,2489],"Daisy Miclat","2018-09-14","\n\nFrom August 23-29, 350 GitLab team-members, significant others, community members, and customers descended on Cape Town, South Africa to get to know one another IRL at our sixth [summit](/events/gitlab-contribute/). As an all-remote company, it’s not often we’re all in one place, so we get together every nine months to hang out, bond, take in the local sights, and even get a little work done.\n\n## Highlights\n\n### Keynote\n\nAfter getting settled in and, for many, powering through some brutal jetlag, we gathered for the opening keynote with Chief Culture Officer [Barbie Brewer](/company/team/#BarbieJBrewer), Chief Revenue Officer [Michael McBride](/company/team/#mmcb), Head of Product [Mark Pundsack](/company/team/#MarkPundsack), and CEO and co-founder, [Sid Sijbrandij](/company/team/#sytses), which you can watch below:\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/4BIsON95fl8\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### Challenge\n\nIt’s become [tradition at our summits for Sid to throw down the gauntlet with a few challenges](/blog/gitlab-summit-greece-recap/#summit-challenges), and this year’s was no different:\n\n![Cape Town summit challenges](https://about.gitlab.com/images/blogimages/summit2018/summit-challenge-slide.png){: .shadow.medium.center}\n\nAnd, as with previous summits, we were promised to be rewarded richly for meeting the challenges:\n\n![Cape Town summit challenges reward](https://about.gitlab.com/images/blogimages/summit2018/summit-challenge-win.png){: .shadow.medium.center}\n\nIt's also become tradition that we hit it out of the park 😎 We're happy to report that we were successful in challenges! Greg Brewer was convinced and is #movingtogitlab, and we've [added the ability to request a free instance check](https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/6995).\n\n### Excursions\n\nThe summits also give us an amazing opportunity to get to know the area that we’re visiting. We were able to choose from some phenomenal excursions throughout Cape Town to learn more about the culture and history of what locals affectionately call the Mother City.\n\n\u003C!-- carousel -->\n\n\u003Cdiv id=\"carousel-example-generic-5\" class=\"carousel slide medium center\" data-ride=\"carousel\" data-interval=\"10000\">\n  \u003C!-- Indicators -->\n  \u003Col class=\"carousel-indicators\">\n    \u003Cli data-target=\"#carousel-example-generic-5\" data-slide-to=\"0\" class=\"active\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic-5\" data-slide-to=\"1\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic-5\" data-slide-to=\"2\">\u003C/li>\n  \u003C/ol>\n\n  \u003C!-- Wrapper for slides -->\n  \u003Cdiv class=\"carousel-inner\" role=\"listbox\">\n    \u003Cdiv class=\"item active\">\n          \u003Cimg src=\"/images/blogimages/summit2018/cape-of-good-hope.jpeg\" alt=\"Cape of Good Hope\">\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/summit2018/lanzerac-wine-tour.jpg\" alt=\"Lanzerac wine tour\">\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/summit2018/robben-island.jpg\" alt=\"Robben Island\">\n    \u003C/div>\n\n  \u003C/div>\n\n  \u003C!-- Controls -->\n  \u003Ca class=\"left carousel-control\" href=\"#carousel-example-generic-5\" role=\"button\" data-slide=\"prev\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-left\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M.44 10.13l8.345 8.345 2.007-2.007-6.814-6.814 6.814-6.815L8.785.832.44 9.177a.652.652 0 0 0-.202.477c0 .183.067.343.202.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Previous\u003C/span>\n  \u003C/a>\n  \u003Ca class=\"right carousel-control\" href=\"#carousel-example-generic-5\" role=\"button\" data-slide=\"next\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-right\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M10.59 10.13l-8.344 8.345L.24 16.468l6.814-6.814L.24 2.839 2.246.832l8.345 8.345a.652.652 0 0 1 .201.477.652.652 0 0 1-.201.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Next\u003C/span>\n  \u003C/a>\n\u003C/div>\n\n\n#### Boulders Beach and the Cape of Good Hope\n\nA beautiful tour along the coast and the opportunity to say hello to our furry friends, our first stop on this excursion was Boulders Beach, where we saw cute African Penguins waddling around, taking swims, and hanging out. They weren’t fazed by us humans. If anything they enjoyed the attention! Up next, we drove to the southernmost tip of Africa, through breathtaking, untouched terrain. Along the way, we spotted local wildlife including antelopes, ostriches, and a couple of feisty baboons.\n\n#### Robben Island\n\nA somewhat choppy 20-minute ferry ride from Victoria Wharf, [Robben Island](http://www.robben-island.org.za/) is home to the prison where political activist and South Africa's first democratic president Nelson Mandela was imprisoned for 18 years. Our tour guide was a former prisoner himself, and he shared his experiences and the history of Robben Island. Although it was a somber setting, we were able to learn more about the history of South Africa and how inequality existed not too long ago.\n\n#### Cape winelands\n\nThe Western Cape is home to some spectacular wine estates. Some GitLab team-members visited [Groot Constantia](https://www.grootconstantia.co.za/), the oldest wine-producing estate in the country, while others ventured further to Paarl, Franschhoek and Stellenbosch for a leisurely day of vineyard hopping and tasting. Those of us checking baggage loaded up on the good stuff to take home.\n\n#### City and cultural tour\n\nA tour of the city center included visits to the [District Six Museum](http://www.districtsix.co.za/), [Castle of Good Hope](https://castleofgoodhope.co.za/), and the [Slave Lodge](https://www.iziko.org.za/museums/slave-lodge), stopping off at the V&A Waterfront for lunch. Some persuasive GitLab team-members got the tour guide to agree to a diversion to quirky coffee shop and Capetonian institution, [Truth Café](https://truth.coffee/pages/truth-cafe), to soak up some of the city's coffee culture.\n\n#### Tour of Langa\n\nSome GitLab team-members also visited Langa, the oldest township in Cape Town. After being greeted by the locals at the cultural center, they shared their dance, music, and history. Some of us were even able to participate and beat on the drums or do a little dancing! Our tour guide shared the history of the township: its beginnings during Apartheid, how things are today, and where they are striving to rebuild unity within the community. Our tour ended with a lovely dance performance and goodbyes from the locals.\n\n### UGC sessions\n\nOur summit UGC (user-generated content) sessions are an opportunity for anyone attending to raise a subject for discussion or run a workshop. With topics as diverse as \"Kubernetes 101,\" \"Learn to Yo-Yo for fun and profit,\" \"How to be a great public speaker,\" \"Yoga/body balance,\" and \"Cocktail making class,\" there's always something for everyone, and it's up to individuals to decide how formal or off-the-cuff they want their session to be.\n\n\u003C!-- carousel -->\n\n\u003Cdiv id=\"carousel-example-generic-4\" class=\"carousel slide medium center\" data-ride=\"carousel\" data-interval=\"10000\">\n  \u003C!-- Indicators -->\n  \u003Col class=\"carousel-indicators\">\n    \u003Cli data-target=\"#carousel-example-generic-4\" data-slide-to=\"0\" class=\"active\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic-4\" data-slide-to=\"1\">\u003C/li>\n  \u003C/ol>\n\n  \u003C!-- Wrapper for slides -->\n  \u003Cdiv class=\"carousel-inner\" role=\"listbox\">\n    \u003Cdiv class=\"item active\">\n      \u003Cimg src=\"/images/blogimages/summit2018/yoga-ugc.jpg\" alt=\"Yoga and body balance session\">\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/summit2018/for-funs-sake-ugc.jpg\" alt=\"Pinpoint pain points in GitLab session\">\n    \u003C/div>\n  \u003C/div>\n\n  \u003C!-- Controls -->\n  \u003Ca class=\"left carousel-control\" href=\"#carousel-example-generic-4\" role=\"button\" data-slide=\"prev\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-left\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M.44 10.13l8.345 8.345 2.007-2.007-6.814-6.814 6.814-6.815L8.785.832.44 9.177a.652.652 0 0 0-.202.477c0 .183.067.343.202.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Previous\u003C/span>\n  \u003C/a>\n  \u003Ca class=\"right carousel-control\" href=\"#carousel-example-generic-4\" role=\"button\" data-slide=\"next\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-right\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M10.59 10.13l-8.344 8.345L.24 16.468l6.814-6.814L.24 2.839 2.246.832l8.345 8.345a.652.652 0 0 1 .201.477.652.652 0 0 1-.201.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Next\u003C/span>\n  \u003C/a>\n\u003C/div>\n\nAs we grow, the summit grows with us. Now, our formidable resident summit expert [Kirsten](/company/team/#kirstenabma) is focusing on planning our summits FULL TIME. As we closed out our Cape Town gathering, she announced to wild cheers that our next one will be going down in May 2019, in New Orleans, LA, USA! Bring on the beignets!\n\nSee you next time 🇿🇦\n",[723,278,891,890],{"slug":2986,"featured":6,"template":683},"gitlab-summit-cape-town-recap","content:en-us:blog:gitlab-summit-cape-town-recap.yml","Gitlab Summit Cape Town Recap","en-us/blog/gitlab-summit-cape-town-recap.yml","en-us/blog/gitlab-summit-cape-town-recap",{"_path":2992,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":2993,"content":2998,"config":3003,"_id":3005,"_type":17,"title":3006,"_source":18,"_file":3007,"_stem":3008,"_extension":21},"/en-us/blog/auto-devops-enabled-by-default",{"title":2994,"description":2995,"ogTitle":2994,"ogDescription":2995,"noIndex":6,"ogImage":967,"ogUrl":2996,"ogSiteName":671,"ogType":672,"canonicalUrls":2996,"schema":2997},"Auto DevOps will be enabled by default as part of GitLab’s 11.3 release","GitLab 11.3 will bring the power of Auto DevOps to every user","https://about.gitlab.com/blog/auto-devops-enabled-by-default","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Auto DevOps will be enabled by default as part of GitLab’s 11.3 release\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Daniel Gruesso\"}],\n        \"datePublished\": \"2018-09-10\",\n      }",{"title":2994,"description":2995,"authors":2999,"heroImage":967,"date":3000,"body":3001,"category":14,"tags":3002},[2157],"2018-09-10","\n\n[Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/) was made generally available in GitLab’s 11.0 release and, while it has had great adoption,\nwe want all of GitLab's users to take advantage of its great features. From Auto Build to Auto Monitoring,\nAuto DevOps brings valuable benefits out of the box.\n\nAt GitLab, one of our product values is to [default to on](/handbook/product/product-principles/#configuration-principles).\nWhen we introduce a new configurable feature we know to be of great value, we will default to ON so that everyone can\nbenefit from it. While Auto DevOps supports projects using the most popular programming languages, there may be some\nspecialized projects for which additional configuration is required. Therefore, before we\nenable it for everyone, we want to ensure we will not be running Auto DevOps pipelines for projects\nthat are not supported. To that end, we will [disable auto devops automatically](https://gitlab.com/gitlab-org/gitlab-ce/issues/39923)\nif a pipeline fails. GitLab will notify the project owner of this attempt so they can make the necessary configuration\nchanges to work with auto devops if desired.\n\nWe will initially enable this feature gradually on gitlab.com and monitor its performance. Barring any\nissues, we will enable it as part of our 11.3 release for self-managed customers on September 22nd, 2018.\n\nWe hope that everyone will benefit from the great features Auto DevOps brings. You can read more\nabout [Auto DevOps here](https://docs.gitlab.com/ee/topics/autodevops).\n",[723,680,912],{"slug":3004,"featured":6,"template":683},"auto-devops-enabled-by-default","content:en-us:blog:auto-devops-enabled-by-default.yml","Auto Devops Enabled By Default","en-us/blog/auto-devops-enabled-by-default.yml","en-us/blog/auto-devops-enabled-by-default",{"_path":3010,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3011,"content":3017,"config":3023,"_id":3025,"_type":17,"title":3026,"_source":18,"_file":3027,"_stem":3028,"_extension":21},"/en-us/blog/mvcs-with-big-results",{"title":3012,"description":3013,"ogTitle":3012,"ogDescription":3013,"noIndex":6,"ogImage":3014,"ogUrl":3015,"ogSiteName":671,"ogType":672,"canonicalUrls":3015,"schema":3016},"4 Examples of MVCs with big results","Small change, big impact. Here are four recent tweaks to GitLab which exemplify our value of iteration.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678764/Blog/Hero%20Images/mvcs-big-results.jpg","https://about.gitlab.com/blog/mvcs-with-big-results","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"4 Examples of MVCs with big results\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Victor Wu\"}],\n        \"datePublished\": \"2018-09-07\",\n      }",{"title":3012,"description":3013,"authors":3018,"heroImage":3014,"date":3020,"body":3021,"category":14,"tags":3022},[3019],"Victor Wu","2018-09-07","\nIteration is [one of our values](https://handbook.gitlab.com/handbook/values/#iteration), and it's often the hardest to stick to. It’s difficult to determine the smallest feature or update that will still bring additional value to users. The benefit is that we can ship quickly and get feedback from GitLab users within days or weeks, instead of months or quarters.\n\nAt GitLab we practice iteration by shipping Minimally Viable Changes (MVCs). This can be a new feature scoped to a small functionality, or incremental improvements on it thereafter. Read more about MVC in our [Product handbook](/handbook/product/product-principles/#the-minimal-viable-change-mvc).\n\nDespite being small, these new features often nonetheless have a big impact. Here are some of our recent MVCs that did just that:\n\n## 1. Function: Assignee lists and milestone lists\n\nIntroduced in 11.1, [issue board assignee lists](/releases/2018/06/22/gitlab-11-0-released/#issue-board-assignee-lists) offer a way to monitor team bandwidth right within your issue board, by showing all issues assigned to a specific user. See [4 ways to use GitLab Issue Boards](/blog/4-ways-to-use-gitlab-issue-boards/#3-team-visibility-with-assignee-lists) for more details, and [check out the documentation for assignee lists here](https://docs.gitlab.com/ee/user/project/issue_board.html#assignee-lists).\n\nIn 11.2, we added [milestone lists](/releases/2018/08/22/gitlab-11-2-released/#issue-board-milestone-lists) to allow you to view all issues assigned to a specific milestone. With this visibility, you can move issues across different milestones easily to balance [issue weight](/releases/2018/08/22/gitlab-11-2-released/#summed-weights-in-issue-board-list). View [the documentation for milestone lists here](https://docs.gitlab.com/ee/user/project/issue_board.html#milestone-lists).\n\n## 2. Design: Merge request widget info and pipeline sections redesign\n\nSometimes it's not new functionality that makes a big difference, but just changing how you view it. In 11.1, we [tweaked the design of the information and pipeline sections](/releases/2018/07/22/gitlab-11-1-released/#merge-request-widget-info-and-pipeline-sections-redesign) in a [merge request](https://docs.gitlab.com/ee/user/project/merge_requests/), making them easier to digest.\n\n![Merge request redesign](https://about.gitlab.com/images/11_1/mr-widget-info-pipeline.png){: .shadow.medium.center}\n\n## 3. Navigation: Groups dropdown\n\nAlso in 11.1, we made it easier to switch between groups and avoid disruption to your workflow by adding a [dropdown to the groups link in the top navigation](/releases/2018/07/22/gitlab-11-1-released/#groups-dropdown-in-navigation). There's no need to navigate away from your work, and your frequently visited groups are handily displayed for quick access.\n\n## 4. Shortcut: Confidential issue quick action\n\n[Quick actions](https://docs.gitlab.com/ee/user/project/quick_actions.html) make your GitLab life easier and are easy to contribute! As of 11.1 you can quickly and easily [mark an issue confidential right from the comment field](/releases/2018/07/22/gitlab-11-1-released/#confidential-issue-quick-action), thanks to a community contribution.\n\nInspired to contribute an MVC yourself? Find out [how to start contributing to GitLab](/community/contribute/). You can also check out some more [MVCs coming up in 11.3](/blog/epics-roadmap/).\n\nPhoto by [Ravali Yan](https://unsplash.com/photos/fleZeABaSWY?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/search/photos/upwards?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)\n{: .note}\n",[723,890,804],{"slug":3024,"featured":6,"template":683},"mvcs-with-big-results","content:en-us:blog:mvcs-with-big-results.yml","Mvcs With Big Results","en-us/blog/mvcs-with-big-results.yml","en-us/blog/mvcs-with-big-results",{"_path":3030,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3031,"content":3037,"config":3043,"_id":3045,"_type":17,"title":3046,"_source":18,"_file":3047,"_stem":3048,"_extension":21},"/en-us/blog/epics-roadmap",{"title":3032,"description":3033,"ogTitle":3032,"ogDescription":3033,"noIndex":6,"ogImage":3034,"ogUrl":3035,"ogSiteName":671,"ogType":672,"canonicalUrls":3035,"schema":3036},"Coming in 11.3: Seamless planning with epics & roadmap","See how you can plan and track larger initiatives even more easily with milestone dates integrated into epics.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749672146/Blog/Hero%20Images/epics-issues-milestones-planning.jpg","https://about.gitlab.com/blog/epics-roadmap","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Coming in 11.3: Seamless top-down and bottom-up planning with epics and roadmap\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Victor Wu\"}],\n        \"datePublished\": \"2018-08-23\",\n      }",{"title":3038,"description":3033,"authors":3039,"heroImage":3034,"date":3040,"body":3041,"category":14,"tags":3042},"Coming in 11.3: Seamless top-down and bottom-up planning with epics and roadmap",[3019],"2018-08-23","\n\n[Epics](https://docs.gitlab.com/ee/user/group/epics/) and [roadmap](https://docs.gitlab.com/ee/user/group/roadmap/)\n are two newer features in [GitLab Ultimate](/pricing/) and [GitLab.com Gold](/pricing/#gitlab-com). Used together, your team\n can plan and track larger initiatives. On September 22, we're shipping a new feature\n which we will help you transition seamlessly between top-down and bottom-up planning.\n\n## First things first: epics vs. issues vs. roadmap\n\nAn epic is similar to an [issue](https://docs.gitlab.com/ee/user/project/issues/) in that it\nrecords a proposed scope of work to be done, allows for team members to discuss that scope,\nand then is tracked and updated over time as that work is actually implemented.\n\nHowever, an epic exists at the [group](https://docs.gitlab.com/ee/user/group/index.html) level (as opposed to an issue, which exists at the [project](https://docs.gitlab.com/ee/user/project/index.html) level). So\nimmediately you see that an epic is designed to reflect a larger scope, and higher level of discussion\ncompared to an issue. Additionally, you can [attach any number of issues to an epic](https://docs.gitlab.com/ee/api/epic_issues.html#assign-an-issue-to-the-epic), with the idea that\nthe epic's scope decomposes into those individual issues.\n\n![epic](https://about.gitlab.com/images/blogimages/epic-view.png){: .shadow.medium.center}\n\nSince an epic is designed to scope work over a longer period of time (several issues' worth),\na timeline-based view in the form of a [roadmap](https://docs.gitlab.com/ee/user/group/roadmap/)\n is also useful: it serves as a visualization to anticipate that work, and track it as it's\n progressively completed. So the roadmap, also scoped at the group level, presents all the\n epics in time for that group.\n\nYou can apply [group labels](https://docs.gitlab.com/ee/user/project/labels.html#project-labels-and-group-labels)\n to epics, making it easy to quickly narrow down to the epics you care about, whether you\n are looking at a list view or a roadmap view.\n\n| Epics list | Roadmap |\n| --- | --- |\n| ![roadmap](https://about.gitlab.com/images/blogimages/epic-list-view.png){: .shadow} | ![roadmap](https://about.gitlab.com/images/blogimages/roadmap-view.png){: .shadow} |\n\n## Long-term vs short-term planning\n\nWhen planning any initiative, uncertainty, by definition, increases further out in\nthe future. You don't know how many resources you will have. You don't know if previous\ndependent work will be finished. You don't know if the market and your customers will change\nsuch that you won't even need that planned out initiative at all.\n\nConversely, the nearer-term future is much more certain. You have a good handle of the work\nthat should be accomplished and that it can be completed within the next few weeks, up to a\nmonth or so.\n\nAnd of course, the work you are doing now, and have already completed in the past, has zero\nuncertainty. You can't change the past.\n\nEpics and roadmap help you plan and track work in all these cases:\n\n### Long-term future: top-down planning\n\nWhen planning far in the future, we use _top-down planning_. We have strategic initiatives\nthat we want to achieve, with approximate scope and timelines. So in this case, you would\ncreate an epic, and assign `Fixed` dates (a planned start date and planned finish date) to it.\nThe epic would appear in the roadmap view, and you would be able to see it positioned further\nin the future.\n\nThis helps high-level planning, such as starting discussions with various departments in\nyour organizations, or presenting a strategic roadmap to your executive leadership. By creating the\nepic early on, it provides a collaborative space for all stakeholders to discuss feasibility\nand further detailed ideas.\n\n### Short-term future: bottom-up planning\n\nWhen planning for the nearer-term future, we use _bottom-up_ planning. So suppose the epic\nyou created previously with fixed dates has gained some traction within your organization.\nPeople are excited about the prospects and want to flesh out detailed designs and implementation\nsteps. You and your team would then start creating issues and attach them to the epic.\n\nEventually, you have scoped out the detailed work in the issues and even assigned milestones to them,\nindicating when they are planned to be worked on. Now, instead of having to manually update the epic\nto reflect the milestone dates, you would simply choose `From milestones` in the epic sidebar. In this\ncase, the epic planned start date becomes a dynamic date reflecting the earliest start date across all\nthe epic's assigned milestones. The same goes for the epic's planned end date too.\n\nThis functionality is coming in GitLab 11.3 – you can [view the original issue here](https://gitlab.com/gitlab-org/gitlab-ee/issues/6470).\n\nAdditionally, the [roadmap bar edges will reflect the fixed or dynamic start and end dates](https://gitlab.com/gitlab-org/gitlab-ee/issues/6471) accordingly.\n\n![inherited-dates](https://about.gitlab.com/images/blogimages/inherited-dates.png){: .shadow.medium.center}\n\nSo with this design, you are in control when you want to seamlessly transition an epic from a\ntop-down planning scenario, to a bottom-up one. The roadmap reflects these dates automatically too,\nso that all your epics are shown together in one view.\n\nPhoto by [Christopher Machicoane-Hurtaud](https://unsplash.com/photos/ewZkOqjl2Ys?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/photos/ewZkOqjl2Ys?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)\n{: .note}\n",[826,723,890,783],{"slug":3044,"featured":6,"template":683},"epics-roadmap","content:en-us:blog:epics-roadmap.yml","Epics Roadmap","en-us/blog/epics-roadmap.yml","en-us/blog/epics-roadmap",{"_path":3050,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3051,"content":3057,"config":3063,"_id":3065,"_type":17,"title":3066,"_source":18,"_file":3067,"_stem":3068,"_extension":21},"/en-us/blog/gitlab-ranked-44-on-inc-5000-list",{"title":3052,"description":3053,"ogTitle":3052,"ogDescription":3053,"noIndex":6,"ogImage":3054,"ogUrl":3055,"ogSiteName":671,"ogType":672,"canonicalUrls":3055,"schema":3056},"GitLab ranks 4th on Inc. 5000 fastest-growing software list","GitLab ranked 4th fastest-growing private software company (#44 overall) on the Inc. 5000 list. How did we achieve such a strong rank among 2018's fastest-growing companies? Here's what we think.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682941/Blog/Hero%20Images/inc-5000-2018.png","https://about.gitlab.com/blog/gitlab-ranked-44-on-inc-5000-list","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab ranked 4th fastest-growing private software company on Inc. 5000 list of 2018's fastest growing companies\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2018-08-16\",\n      }",{"title":3058,"description":3053,"authors":3059,"heroImage":3054,"date":3060,"body":3061,"category":14,"tags":3062},"GitLab ranked 4th fastest-growing private software company on Inc. 5000 list of 2018's fastest growing companies",[699],"2018-08-16","\nPop the champagne! GitLab is now one America's fastest-growing private companies, ranking as the 4th fastest-growing private software company (44th overall) on this year's [Inc. 5000 list](https://www.inc.com/inc5000/list/2018) with revenue growth of 6,213 percent over the past three years. This is the first year GitLab has appeared on Inc.'s 5000 list and we're happy to have such a strong showing.\n\n## Not just Git anymore\n\nWith humble beginnings as a simple Git repository manager, GitLab is now the only single application for the entire software development and operations lifecycle. Built on the philosophy that '[everyone can contribute](/company/mission/#mission),' GitLab allows product, engineering, quality assurance, operations, and security teams to work together at the same time in the same app, eliminating handoffs and bottlenecks and accelerating cycle time. From project planning and source code management, to CI/CD and monitoring, GitLab has everything businesses need for end-to-end [DevOps](/topics/devops/).\n\n## How we move so fast\n\nOur velocity of product innovation is largely thanks to our robust open source community of [more than 2,000 contributors](http://contributors.gitlab.com/). Our [open issue tracker](https://gitlab.com/gitlab-org/gitlab-ce/issues) allows anyone to comment on and contribute to the code we are co-creating with more than 100,000 organizations worldwide, including NASA, NASDAQ, Sony, and Bayer. This is just one of the ways we strive to live our [value of openness and transparency](https://handbook.gitlab.com/handbook/values/#transparency).\n\nOur customers are always telling us that they want to spend their engineering resources on writing code that makes money for the company instead of reinventing the wheel. By using GitLab they get to leverage the collective experience of over 100,000 organizations. They know they've got not only a great product today, but a strategic partner for the future. This collaborative spirit is how we're not only delivering new functionality fast (so fast, we're running out of space on the slide below 😁), but also shipping code that solves real-world problems, which accounts for the pace of our revenue growth.\n\n[![GitLab exponential rate of product development](https://about.gitlab.com/images/blogimages/gitlab-product-improvement-velocity.png)](/direction/)\n\nBeing on the Inc. 5000 list is an honor and a big milestone, but we're just getting started. We have no intention of slowing down as we look to build best-in-class functionality across every part of the DevOps lifecycle.\n\n#### About the Inc. 5000 list\n\nThis year's Inc. 5000 ranking system is based on the percentage of revenue growth qualifying companies saw from 2014 to 2017. For consideration, companies needed to be private, for-profit, independent and U.S.-based as of December 31, 2017. The companies must have also been incorporated by March 31, 2014 with a minimum revenue of $200,000 for that year and $2 million for 2017.\n",[680,804],{"slug":3064,"featured":6,"template":683},"gitlab-ranked-44-on-inc-5000-list","content:en-us:blog:gitlab-ranked-44-on-inc-5000-list.yml","Gitlab Ranked 44 On Inc 5000 List","en-us/blog/gitlab-ranked-44-on-inc-5000-list.yml","en-us/blog/gitlab-ranked-44-on-inc-5000-list",{"_path":3070,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3071,"content":3076,"config":3080,"_id":3082,"_type":17,"title":3083,"_source":18,"_file":3084,"_stem":3085,"_extension":21},"/en-us/blog/making-remote-internships-successful",{"title":3072,"description":3073,"ogTitle":3072,"ogDescription":3073,"noIndex":6,"ogImage":2542,"ogUrl":3074,"ogSiteName":671,"ogType":672,"canonicalUrls":3074,"schema":3075},"How to make remote internships successful","Support Engineering Manager Lee Matos talks about pitfalls and successes in making remote internships work.","https://about.gitlab.com/blog/making-remote-internships-successful","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How to make remote internships successful\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Lee Matos\"}],\n        \"datePublished\": \"2018-08-16\",\n      }",{"title":3072,"description":3073,"authors":3077,"heroImage":2542,"date":3060,"body":3078,"category":14,"tags":3079},[2197],"\nBack in December I introduced you to [Support Engineering at GitLab](/blog/support-engineering-at-gitlab/). Now I'm excited to talk about my experiences – good and bad – with remote internships. I think remote internships can be a great thing but not without pitfalls. Let's dive in.\n\nAs I started to lead the GitLab Support team, [Collen](/company/team/#collenkriel), our first Support Engineering intern, was wrapping up his internship. We started to spend some time together when I realized Collen was doing great work, but we didn't have a clear definition of what it took to transition out of “intern” to “Junior.” This was not due to lack of management, it was because Collen was the first. We had never even thought about what it would look like to graduate! Lesson number 1:\n\n## 1. Clearly define success\n\nInternships are challenging when you don't know what you want the internship to be about, or what you want it to accomplish. I think it's vital that everyone involved knows what success is, and how close they are to it. It took a lot of time and effort for me and Collen to figure out what we'd mark as success. That made it even more stressful as we were both scrambling to make clear and actionable markers of success as his internship came to a close. It was a sign of Collen's skill and grace that we managed to define and execute those things with a ticking clock counting down. Once we knew what success was, Collen knocked it out of the park. Now, success is different for every team and person. Keep that in mind as you define it here for yourself, and your intern.\n\n### A second chance\n\nA few months later, we had an opportunity to hire [Chenje](/company/team/#ckatanda) as an intern and my number one goal was to improve that experience. For Chenje, he had a lot of drive and a few technical projects under his belt, but lacked experience with working in technical teams. We settled on three tasks as the definition of success for Chenje's internship:\n\n+ Deploy Omnibus HA and improve Documentation\n+ Pair on 25 ticket sessions\n+ Gain expertise in one or two expert subjects\n\nFor Chenje, success was defined as completing two of the three defined tasks. This gave him some freedom to plan and schedule, and even room to fail in the face of challenging tasks. This was important because it was meaningful work, but it was also important as a manager that I can understand how team members approach problems big and small.\n\n## 2. Set expectations\n\nSome of this advice is good for any internship – not just a remote one. But one of the unique challenges of a remote internship is the lack of facetime and potential delays in communication. Both Collen and Chenje are six hours ahead of me, so the time difference was definitely a factor here. With remote work, a lot of the inefficiencies of communication and workflow that are just accepted as part of office life are exposed. There's nowhere to hide.\n\n>With remote work, a lot of the inefficiencies of communication and workflow that are just accepted as part of office life are exposed\n\nIn addition to other internship challenges, we now add the element of time coordination, and knowing that your reports can't just walk over to your desk with a question. We have to be very explicit about connecting to make meaningful change happen. There's a tendency to want that to happen synchronously, but we have to figure out alternatives.\n\nI think setting the expectation that the intern should be ready and willing to ask questions was important. Instead of waiting for you to come rescue them, they'll also need to take initiative to snag time on your calendar if they're blocked, and on your end you need to make that time to help them out. With remote work you have to be willing to step forward; you can't wait on someone else to give you tasks or to check in if everything is going smoothly. It won't work at GitLab, and probably won't fly at other remote companies either.\n\n## 3. Avoid busywork\n\nI also made it clear to Chenje that I would not be giving him busywork and that he'd be able to make real contributions. One of the advantages of a remote internship is that there's no coffee to fetch, so busywork possibilities are limited. If you're managing an intern properly, you should consider them to be 1.5x an ordinary report. I thought about the things that I wanted to do but couldn't focus on and offered those to Chenje. I wanted to give him challenges that would result in work he could be proud of. If you're considering an intern to deal with the things you don't want to do, then you should reconsider. That's a recipe for a bad internship, and your intern won't want to work with your team afterwards.\n\n>If you're managing an intern properly, you should consider them to be 1.5x an ordinary report\n\nYour intern should be someone who you believe to be capable and competent, just missing experience. The dream of an internship is that you're developing somebody who will end up working for your organization. If you're not doing it for that reason, then what's the point?\n\n## 4. But don't throw them in the deep end either\n\nWe didn't push either Collen or Chenje to jump into interacting with customers straight away, to give them time to build up their comfort level, experience, and confidence. The initial goal was that the internship is skill-building period – a safe space. You don't want to overwhelm your intern by making them do everything. They're an intern for a reason.\n\n>The initial goal was that the internship is skill-building period – a safe space\n\n## 5. Give clear feedback on progress\n\nAs an intern, Chenje had full access to the team and myself as a lead. We have weekly 1:1s and we'd review his progress. Now, Collen, our first intern, had regular 1:1s with me, but because we didn't have a clear structure of the internship, we weren't using this time to its full potential. Being able to use our 1:1 time to understand and help Chenje overcome blockers and organize made his internship incredibly smooth. We knew what success was, we regularly tracked it, and we learned how to communicate it to each other.\n\nI'm extremely proud of the work that Collen and Chenje have done on our team and how they continue to excel in the face of two very different internship experiences. If you are running a remote team, or considering interns, these things helped me turn something that started out stressful into a recipe for success.\n",[955,890,891],{"slug":3081,"featured":6,"template":683},"making-remote-internships-successful","content:en-us:blog:making-remote-internships-successful.yml","Making Remote Internships Successful","en-us/blog/making-remote-internships-successful.yml","en-us/blog/making-remote-internships-successful",{"_path":3087,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3088,"content":3094,"config":3100,"_id":3102,"_type":17,"title":3103,"_source":18,"_file":3104,"_stem":3105,"_extension":21},"/en-us/blog/google-next-2018-security-track-recap",{"title":3089,"description":3090,"ogTitle":3089,"ogDescription":3090,"noIndex":6,"ogImage":3091,"ogUrl":3092,"ogSiteName":671,"ogType":672,"canonicalUrls":3092,"schema":3093},"Google Next 2018 security track recap","Here's how one GitLab team-member made the most of the security track at Google Next 2018.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678940/Blog/Hero%20Images/securitygooglenext.jpg","https://about.gitlab.com/blog/google-next-2018-security-track-recap","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Google Next 2018 security track recap\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jim Thavisouk\"}],\n        \"datePublished\": \"2018-08-10\",\n      }",{"title":3089,"description":3090,"authors":3095,"heroImage":3091,"date":3097,"body":3098,"category":14,"tags":3099},[3096],"Jim Thavisouk","2018-08-10","\nEvery time someone asks me how I like working at GitLab, I say, \"I love it here!\"\nWith our [company culture](https://handbook.gitlab.com/handbook/values/), 100 percent [remote workforce](/company/culture/all-remote/), and [growing team](/jobs/), it's a pleasure\nto work with such a high energy team.\nThe [security department](/handbook/security/#security-department)\nis continually growing -- very fast! We each have our own specialties and bring a diverse selection\nof strong experiences, while working very well together. In my position, I have\nbeen focusing very heavily on policy as code to raise the bar in security here at GitLab. This blog post was inspired by [William Chia](/company/team/#thewilliamchia)'s\n[Google Next 2018 recap](/blog/google-next-2018-recap/). If you haven't read it, I highly recommend it!\n\n## Security highlights of Google Next 2018\n\n### Forseti\n\nI was excited coming into this conference for [Forseti](https://forsetisecurity.org/),\nespecially with the announcement of\n[Forseti 2.0](https://forsetisecurity.org/news/2018/06/11/forseti-2.0-launch.html).\nWe had a [Forseti Hack Day](https://groups.google.com/a/forsetisecurity.org/forum/#!topic/announce/bHy8QCK_AY0)\nthat kicked off a day before the actual conference, which allowed me to interact\nwith Google engineers, product managers, and Forseti customers. For\nanyone who missed Forseti's session from [Chris Law](https://www.linkedin.com/in/chrislaw/),\n[Michael Capicotto](https://www.linkedin.com/in/mcapicotto/), and\n[Marten Van Wezel](https://www.linkedin.com/in/martenvanwezel/), you can check it out\n[the recording](https://www.youtube.com/watch?v=4TrlgbV_VlQ). See [the details for joining the discussion here](https://groups.google.com/a/forsetisecurity.org/forum/#!topic/announce/8OSAB7UEzSY).\n\n### Istio\n\n[\"Istio is platform-independent and designed to run in a variety of environments,\nincluding those spanning Cloud, on-premise, Kubernetes, Mesos, and more.\"](https://istio.io/docs/concepts/what-is-istio/)\nI'm excited to see Istio 1.0, which was just released a few days ago! See [the team's talk](https://youtu.be/eOI2aM9P7-c)\nfrom [Tao Li](https://www.linkedin.com/in/tao-li-1a447935/) and\n[Samrat Ray](https://www.linkedin.com/in/samratray/).\n\n### Best practices\n\nEveryone can use best practices. At Forseti Hack Day, I met [Tom Salmon](https://www.linkedin.com/in/tomcsalmon/)\nwho has vast experience in security. In his [talk](https://www.youtube.com/watch?v=ZQHoC0cR6Qw),\nhe provides a great knowledge base and reference point to best security practices in GCP.\n\n### Sessions are now live\n\nThese were only a few sessions at Google Next, and there are hundreds of others\nto check out. You can find them neatly categorized on\n[YouTube](https://www.youtube.com/channel/UCTMRxtyHoE3LPcrl-kT4AQQ/playlists?flow=grid&view=50&shelf_id=8).\n\n## We'd love to hear your feedback\n\nWe'd love to hear from you on how you use any of these products in your environment.\nOur team is currently working very closely with the Forseti team, and I'm sure they\nwould love to have you join in on the discussion as well. Don't hesitate to\nreach out directly to me by email (jthavisouk@gitlab.com) or join any of these groups to keep a dialogue going\nabout any of these products. We can only help each other in the process.\n",[278,1100,1458,2141,1059,994],{"slug":3101,"featured":6,"template":683},"google-next-2018-security-track-recap","content:en-us:blog:google-next-2018-security-track-recap.yml","Google Next 2018 Security Track Recap","en-us/blog/google-next-2018-security-track-recap.yml","en-us/blog/google-next-2018-security-track-recap",{"_path":3107,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3108,"content":3113,"config":3117,"_id":3119,"_type":17,"title":3120,"_source":18,"_file":3121,"_stem":3122,"_extension":21},"/en-us/blog/gitlab-strong-performer-vsm",{"title":3109,"description":3110,"ogTitle":3109,"ogDescription":3110,"noIndex":6,"ogImage":694,"ogUrl":3111,"ogSiteName":671,"ogType":672,"canonicalUrls":3111,"schema":3112},"GitLab announced they’ve been recognized as a Strong Performer in “The Forrester New Wave™ for Value Stream Management Tools, Q3 2018","GitLab is best for companies that are looking for a broad, integrated solution","https://about.gitlab.com/blog/gitlab-strong-performer-vsm","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab announced they’ve been recognized as a Strong Performer in “The Forrester New Wave™ for Value Stream Management Tools, Q3 2018\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2018-08-09\",\n      }",{"title":3109,"description":3110,"authors":3114,"heroImage":694,"date":3115,"body":3116,"category":14},[699],"2018-08-09","_GitLab is best for companies that are looking for a broad, integrated solution_\n\n**SAN FRANCISCO, CALIFORNIA – August 9, 2018 -** [GitLab Inc.](https://about.gitlab.com/), The DevOps Platform, announced they’ve been recognized as a Strong Performer in “The Forrester New Wave™ for Value Stream Management Tools, Q3 2018,” published today.\n\nRealizing the importance of tracking the flow of value in IT software delivery, Forrester has initiated coverage of the Value Stream Management tool market, and included GitLab in the results, observing “GitLab is best for companies that are looking for a broad, integrated solution.”\n\nAdditionally, Forrester notes that “GitLab combines end-to-end capability with the power of open source. GitLab offers a DevOps tool for each step of the software development process. Top-level views sitting across these tools provide its VSM functionalities.”\n\n“We think the recognition by Forrester as a Strong Performer in the emerging VSM market underscores our promise to deliver a single application for the DevOps lifecycle to streamline development among enterprise teams,” said GitLab CEO Sid Sijbrandij. “We’re dedicated to continuously improving GitLab so delivery teams can efficiently meet businesses software demands.”\n\nGitLab is a single application that supports the entire DevOps tool chain. As the software delivery system of record, GitLab’s cycle analytics and support for [value stream management](/solutions/value-stream-management/) helps enterprises accelerate software delivery. Forrester suggests in its report that “organizations that want a comprehensive VSM solution that can also serve as their DevOps tool chain will really appreciate GitLab.”\n\nForrester’s New Wave report evaluates emerging technologies by looking at organizations that have a VSM product with over 5 million in revenue, and a cohesive VSM solution, not disparate tools. The Q3 2018 report did not identify one sole leader, but recognized six vendors as strong performers, GitLab being one.\n\nGitLab helps organizations, ranging from Fortune 500 enterprises to one-person shops, embrace the power of the cloud by offering the most robust and only integrated modern software development lifecycle product. As the need for modern, collaborative solutions increase, enterprises including Comcast, Siemens, Ticketmaster, ING, NASDAQ, Alibaba, Bayer, NASA and Intel, have adopted GitLab to maintain pace with the demands of today’s work environment.\n\nSee [here](https://www.globenewswire.com/Tracker?data=gUzUuQysbGjYbkna-QElIpz94AT3oS9j-CEcLFjmgbLudqGb23LBOXhGOdyMryRtJNtUCNvkd7835KxbbSidJQ==) for more on GitLab’s VSM capabilities and illustrations of future VSM mapping and management capabilities.\n\n**About GitLab**\n\nGitLab is The DevOps platform that empowers organizations to maximize the overall return on software development by delivering software faster and efficiently, while strengthening security and compliance. GitLab’s single application is easier to use, leads to faster cycle time and allows visibility throughout and control over all stages of the DevOps lifecycle. With GitLab, every team in your organization can collaboratively plan, build, secure, and deploy software to drive business outcomes faster with complete transparency, consistency and traceability.\n\nBuilt on Open Source, GitLab works alongside its growing community, which is composed of thousands of developers and millions of users, to continuously deliver new DevOps innovations. GitLab has an estimated 30 million+ registered users (both Paid and Free) from startups to global enterprises, including Ticketmaster, Jaguar Land Rover, Nasdaq, Dish Network, and Comcast trust GitLab to deliver great software faster. All-remote since 2015, GitLab has more than 1,300 team members in over 65 countries.\n\n**Media Contact:**\n\nJennifer Leslie\n\u003Cbr>\nGitLab Inc.\n\u003Cbr>\n[press@gitlab.com](mailto:press@gitlab.com)",{"slug":3118,"featured":6,"template":683},"gitlab-strong-performer-vsm","content:en-us:blog:gitlab-strong-performer-vsm.yml","Gitlab Strong Performer Vsm","en-us/blog/gitlab-strong-performer-vsm.yml","en-us/blog/gitlab-strong-performer-vsm",{"_path":3124,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3125,"content":3131,"config":3135,"_id":3137,"_type":17,"title":3138,"_source":18,"_file":3139,"_stem":3140,"_extension":21},"/en-us/blog/keeping-your-account-safe",{"title":3126,"description":3127,"ogTitle":3126,"ogDescription":3127,"noIndex":6,"ogImage":3128,"ogUrl":3129,"ogSiteName":671,"ogType":672,"canonicalUrls":3129,"schema":3130},"How to keep your GitLab account safe (and accessible)","Some practical tips from the GitLab.com Support Team to make sure you can get into your account when (not if!) disaster strikes.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666806/Blog/Hero%20Images/keep-gitlab-account-safe.jpg","https://about.gitlab.com/blog/keeping-your-account-safe","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How to keep your GitLab account safe (and accessible)\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Lyle Kozloff\"}],\n        \"datePublished\": \"2018-08-09\",\n      }",{"title":3126,"description":3127,"authors":3132,"heroImage":3128,"date":3115,"body":3133,"category":14,"tags":3134},[2848],"\nThe GitLab.com Support Team has seen a lot of unfortunate situations where people have lost access to their accounts for _very_ preventable reasons. Here are some quick tips to keep your account secure and to ensure you're always able to log in.\n\n## 1. Use 2FA (and print your recovery codes)\n\nMore and more people are [setting up two-factor authentication (2FA)](https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html) to keep their\naccount secure, but things do happen to that second factor. Phones get lost or stolen, and suddenly you’re locked out of your account.\nPlease **do** set up 2FA, but also make sure you keep a backup of your recovery codes.\n\nIf you've got access to a printer: print them!\n\nMaybe even better? Store a copy of your recovery codes in a password manager so you won’t lose them.\n\n## 2. Set up an SSH key (so that you can generate new recovery codes)\n\nDid you know that you can [generate recovery codes with an SSH key](https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html#generate-new-recovery-codes-using-ssh)? If you somehow lost your recovery codes, you can generate new ones by simply\nrunning `ssh git@gitlab.com 2fa_recovery_codes`. So, even if you don’t use SSH much, it might pay off to have a [key added to your GitLab account](https://docs.gitlab.com/ee/user/ssh.html).\n\n## 3. Add a backup email on your account\n\nMany of our users have vanity or company domains on their accounts. But, what happens if you leave\nthe company or forget to pay your domain registration? Suddenly you’re unable to receive password\nreset emails and are writing into Support from an unknown email address (it's difficult for the Support\nTeam to verify your identity if you contact us from a different email address).\n\nGo ahead and use a custom domain, but consider [having a backup email address](https://docs.gitlab.com/ee/user/profile/#profile-settings)\nfrom a well-known public provider.\n\n## 4. Use your real name on your account profile\n\nWhen we’re evaluating whether or not to restore an account or remove 2FA, it makes the call harder when the name on the\naccount is L33T H4X0R (unless, of course, that’s what is on your passport). We understand if you prefer not to include\nyour real name for privacy reasons, but do know that we may be unable to help you recover your accounts if all\nof the above have not been implemented. If your real name isn't an option, consider [adding other online identities to your profile](https://docs.gitlab.com/ee/user/profile/#profile-settings).\n\nHopefully these tips will help you secure and access your GitLab.com accounts. For the security and privacy of our users,\nthe Support Team is required to be very stringent when it comes to helping you recover your accounts. We hope that this\narticle will help you stay in control at all times!\n\nPhoto by [Jon Moore](https://unsplash.com/photos/bBavss4ZQcA?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/search/photos/security?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)\n{: .note}\n",[890,994],{"slug":3136,"featured":6,"template":683},"keeping-your-account-safe","content:en-us:blog:keeping-your-account-safe.yml","Keeping Your Account Safe","en-us/blog/keeping-your-account-safe.yml","en-us/blog/keeping-your-account-safe",{"_path":3142,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3143,"content":3149,"config":3155,"_id":3157,"_type":17,"title":3158,"_source":18,"_file":3159,"_stem":3160,"_extension":21},"/en-us/blog/meltano-follow-up",{"title":3144,"description":3145,"ogTitle":3144,"ogDescription":3145,"noIndex":6,"ogImage":3146,"ogUrl":3147,"ogSiteName":671,"ogType":672,"canonicalUrls":3147,"schema":3148},"Thanks for all the feedback and interest in Meltano!","Last week we introduced Meltano, and we're so excited to be building our community and working with you on our MVP.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678909/Blog/Hero%20Images/thanks-for-all-the-feedback-and-interest-in-meltano.jpg","https://about.gitlab.com/blog/meltano-follow-up","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Thanks for all the feedback and interest in Meltano!\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jacob Schatz\"}],\n        \"datePublished\": \"2018-08-07\",\n      }",{"title":3144,"description":3145,"authors":3150,"heroImage":3146,"date":3152,"body":3153,"category":14,"tags":3154},[3151],"Jacob Schatz","2018-08-07","\nWe recently wrote a [post introducing Meltano](/blog/hey-data-teams-we-are-working-on-a-tool-just-for-you/), an open source tool that will help data teams version control everything from raw data to visualization. We were blown away by the level of interest it received, including all sorts of comments on [Hacker News](https://news.ycombinator.com/item?id=17667399) that gave us a ton of feedback we’re excited to wrestle with and work towards. Special thanks to commenter [slap_shot](https://news.ycombinator.com/item?id=17668089), whose comments prompted us to hop on YouTube for a live conversation. We learned that in real life, slap_shot is a data and analytics engineer and founder named Brett, and you can watch our live chat here:\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/F8tEDq3K_pE\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nBrett told us something we suspected after our own experience of assembling our analytics stack – that pretty much every data team he encounters is using a \"multitude of internal processes that are broken and cobbled together for data integration, or they're not comfortable with the pricing and sales process for some of these products.\"\n\nWhen we started researching tools for our team, the goal was to use only open source. Unfortunately, the best open source that we could find wasn't up to the task for us, and changing the code proved cumbersome due to licensing issues. We settled on Looker, a fantastic (but proprietary) solution for visualization, and began reluctantly building out other parts ourselves. Brett told us the idea of an open source version of Looker could be really promising – it's too expensive for many teams, including, to some extent, our own. We think it doesn't make sense to build a dashboard and not be able to share it with the whole team.\n\nSid shares, \"We spent months assembling our data pipeline... but all these choices were so hard, and I think there's room for a convention over configuration framework, where you type in your Salesforce API keys and you get the proper Salesforce graphs. We want to get as close as possible to that experience.\"\n\n### Issues and next steps\n\n*  The Meltano team is building a set of very common core extractors, including Salesforce, Marketo, Zendesk, etc. This way we can hopefully provide a few of the most important sources out of the box, and substantial initial value. Then, being an open source product, we hope others can contribute and increase the breadth of support.\n*  The data team is going to try to apply Meltano to a machine learning project, probably around predicting probability of winning a sales opportunity, so we can incorporate any requirements specific to ML.\n\n### Q&A\n\n#### Give me the short and sweet version – what does Meltano do?\n\n[Meltano helps](https://gitlab.com/meltano/meltano/#roadmap) companies consolidate, organize, and analyze their data to make better business decisions.\n\n#### Can the BI tool and integration library be used outside of GitLab?\n\nWe're not sure yet. For now, the integration part (which we call orchestration) is GitLab CI-based. We recently had the idea to have a frontend \"production mode,\" where you can at least see everything, and maybe we'll have a \"development mode\" where you can run different pipelines inside a Python Flask app.\n\n#### Embulk and Singer built the core foundation and they allow people to build their own integrations, do we envision similar model?\n\nYes. Right now we are prioritizing getting the architecture and tooling correct, to make it easy for us and others to build additional extractors.\n\n#### What's the vision for the monorepo and what are the benefits?\n\nWe consolidated all of the code for Meltano in a single project, to make it easier to develop and contribute to. We then provide two Meltano Docker images, similar to Jupyter notebook layering: a standard image which contains all of the default extractors and loaders, as well as a base image so users can customize it to contain only what they need. `meltano/analytics` is both a prototypical Meltano implementation and the repo for GitLab Analytics.\n\n#### Would I *have* to use Meltano for everything?\n\nNo! We know teams have different needs and preferences, so you would be able to pick and choose the features that you use.\n\n#### I'd like to see GitLab CI have a clean API for others to plug into. Do you see that happening?\n\nThe Data team is committed to using GitLab CI as our orchestration platform. [Airflow](https://airflow.apache.org/) is state of the art right now, but we think we can have similar or better features within CI. If appropriate, the Meltano team will contribute back to CI to make it better too. Some features we're excited about would be better statistics across jobs, sub-pipelines and directed acyclic graphs of jobs, and intelligent data backfill support.\n\n#### This sounds really ambitious, and there are a lot of companies in the data integration space.\n\nYou're completely right! But there isn't an open source tool that checks all these boxes. It might sound a bit ludicrous, but as Sid says, \"When I saw GitLab for the first time, it made sense that something you collaborate on is also something you contribute to... it makes sense to me that it's not an individual burden, it's a shared burden.\" We think that the shared nature of the problem will make for a great open source community, and without that community, this won't really get off the ground.\n\nPhoto by [Ludovic Toinel](https://unsplash.com/photos/nGwyaWKFRVI) on [Unsplash](https://unsplash.com/)\n{: .note}\n",[890,804],{"slug":3156,"featured":6,"template":683},"meltano-follow-up","content:en-us:blog:meltano-follow-up.yml","Meltano Follow Up","en-us/blog/meltano-follow-up.yml","en-us/blog/meltano-follow-up",{"_path":3162,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3163,"content":3169,"config":3174,"_id":3176,"_type":17,"title":3177,"_source":18,"_file":3178,"_stem":3179,"_extension":21},"/en-us/blog/4-ways-to-use-gitlab-issue-boards",{"title":3164,"description":3165,"ogTitle":3164,"ogDescription":3165,"noIndex":6,"ogImage":3166,"ogUrl":3167,"ogSiteName":671,"ogType":672,"canonicalUrls":3167,"schema":3168},"4 ways to use GitLab Issue Boards","By leveraging the power of labels, GitLab Issue Boards can be easily customized to support any workflow. Here are four examples.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671759/Blog/Hero%20Images/gitlab-issue-board-cover.png","https://about.gitlab.com/blog/4-ways-to-use-gitlab-issue-boards","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"4 ways to use GitLab Issue Boards\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Victor Wu\"}],\n        \"datePublished\": \"2018-08-02\",\n      }",{"title":3164,"description":3165,"authors":3170,"heroImage":3166,"date":3171,"body":3172,"category":14,"tags":3173},[3019],"2018-08-02","\nThere are many different ways to build software and run projects. When we began\nto build portfolio and project management tools within GitLab, we asked\nourselves, \"How do you build tools to support a diverse array of workflows\nwithout crippling users with complexity?\" Our conclusion? Build fewer, but more\nflexible tools. GitLab's built-in [issue boards](/stages-devops-lifecycle/issueboard/) is a\ngreat example of how choosing to build a single, versatile tool can significantly\nreduce complexity and tooling maintenance for the user without limiting its\ncapabilities.\n\n> How do you build tools to support a diverse array of workflows without crippling\nusers with complexity? Build fewer, but more flexible tools.\n\nManaging projects and software is inherently complex, but the tools don't have to be.\nRegardless of how many projects, people, or products you're managing, getting the\nvisibility you need to keep things running smoothly should be the easy part.\n\n## GitLab issues board\n\nA GitLab Issues Board is a simplified approach to a complex problem. We built on\ntop of GitLab's existing issue-tracking functionality and leverage the power of\nGitLab issue labels by utilizing them as lists on a Kanban board. You can construct different\nviews of your issue board while maintaining the same filtering and sorting abilities\nyou see across the issue tracker. You can create multiple boards to capture every\nlayer of visibility you need, and define the scope of the board by milestone,\nlabels, assignee, and weight.\n\nAn Issue Board is based on its project's label structure, therefore, it applies\nthe same descriptive labels to indicate placement on the board, keeping\nconsistency throughout the entire development lifecycle. And, you can click\ndirectly into an issue from the board to get started on your work.\n\n## 4 uses for the GitLab issues board\n\nAn Issue Board shows you what issues your team is working on, who is assigned to\neach, and where in the workflow those issues are.\n\n### 1. Workflow tracking with GitLab issues\n\nWhether you are a project manager trying to stay on top of a project's status, or\na manager of a product who needs to report on progress, workflow visibility is critical.\n\nTo create a workflow issue board, simply create labels for each stage of your workflow\nand add them as lists on a board. Once you've labeled an issue, it will automatically\nappear on the list. When the issue is ready to move on to the next stage, simply drag\nand drop it into the next list. You can also update the labels directly in the issue\nand your changes will automatically appear on the board.\n\n![Using an issue board for workflow tracking](https://about.gitlab.com/images/blogimages/workflow.png){: .shadow.large.center}\n\nFor example, your workflow might look something like this:\n\n1. Development\n1. Design\n1. Review\n1. Test\n1. Deploy\n\nTo see this on a board, simply create a label for each stage. Create a new board\nand add a list for each stage. You can drag and drop lists to put them in the\ndesired order.\n\n### 2. Cross-functional planning with different categories\n\nSimilar to the workflow view, you can create a GitLab issues board based on categories.\n\nWhen working on a particular product or feature, you might want a high-level view\nof what each team is working on. You might create a label and a list for each team,\nor, perhaps you want to see what's being worked on across many projects or product lines.\n\n![Using an Issue Board for planning with categories](https://about.gitlab.com/images/blogimages/categories.png){: .shadow.large.center}\n\nIn the example above, we have three label lists: `time tracking`, `portfolio management`,\nand `description templates`. Each list represents a particular product area. So\nwith this one board, you'll be able to see what open issues belong to those three\nareas. If you further scope the board to a particular milestone, you'll be able\nto see which of those issues are targeted to be worked on in that milestone.\n\nThis is just one example of how you can use an issue board for planning your work.\nAgain, because the issue board is created using labels, your options are unlimited!\n\n### 3. Team visibility with assignee lists\n\nYou can easily monitor what has been assigned to individuals on your team with\nassignee lists. Assignee lists show issues that are assigned to a specific user,\nand you can create a board to display a list for everyone on your team for a\nquick view of who is working on what.\n\n![Example assignee issue board view](https://about.gitlab.com/images/blogimages/team-board.png){: .shadow.large.center}\n\n### 4. GitLab Issues and milestone planning\n\nAs part of our project management capabilities, we've built in [milestones](https://docs.gitlab.com/ee/user/project/milestones/).\nMilestones are used to track issues and merge requests associated with a specific goal\nto be accomplished within a specific time frame.\n\nSimilar to our assignee lists, you will be able to quickly create a milestone view directly from your board. This is particularly\nuseful for those leveraging an [Agile workflow](/solutions/agile-delivery/). With the milestone list, you can\neasily move issues (stories) between different milestones (i.e. sprints, iterations).\n\n| Adding a milestone list | Milestone list |\n|-------------------------|----------------|\n| ![Create milestone list](https://about.gitlab.com/images/blogimages/create-milestone-list.png){: .shadow} | ![Milestone list example](https://about.gitlab.com/images/blogimages/milestone-list-issue-board.png){: .shadow} |\n\nOf course, this is just the tip of the iceberg. Stay tuned for the our next post on\nusing GitLab for [portfolio planning and management](/blog/gitlab-for-agile-portfolio-planning-project-management/) where we will cover a few of other favorite GitLab features like [Epics](https://docs.gitlab.com/ee/user/group/epics/), [Roadmaps](https://docs.gitlab.com/ee/user/group/roadmap/), and [Milestones](https://docs.gitlab.com/ee/user/project/milestones/).\n\nUpdate as of June 26 2020: Removed the \"Coming Soon\" label on Milestones since it has been released as of 11.2",[783,933,826],{"slug":3175,"featured":6,"template":683},"4-ways-to-use-gitlab-issue-boards","content:en-us:blog:4-ways-to-use-gitlab-issue-boards.yml","4 Ways To Use Gitlab Issue Boards","en-us/blog/4-ways-to-use-gitlab-issue-boards.yml","en-us/blog/4-ways-to-use-gitlab-issue-boards",{"_path":3181,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3182,"content":3188,"config":3193,"_id":3195,"_type":17,"title":3196,"_source":18,"_file":3197,"_stem":3198,"_extension":21},"/en-us/blog/hey-data-teams-we-are-working-on-a-tool-just-for-you",{"title":3183,"description":3184,"ogTitle":3183,"ogDescription":3184,"noIndex":6,"ogImage":3185,"ogUrl":3186,"ogSiteName":671,"ogType":672,"canonicalUrls":3186,"schema":3187},"Hey, data teams - We're working on a tool just for you","Meltano is an open source tool for the entire data science lifecycle, and we want your contributions and feature requests!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678726/Blog/Hero%20Images/hey-data-analysts-we-are-working-on-a-tool-just-for-you.jpg","https://about.gitlab.com/blog/hey-data-teams-we-are-working-on-a-tool-just-for-you","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Hey, data teams - We're working on a tool just for you\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jacob Schatz\"}],\n        \"datePublished\": \"2018-08-01\",\n      }",{"title":3183,"description":3184,"authors":3189,"heroImage":3185,"date":3190,"body":3191,"category":14,"tags":3192},[3151],"2018-08-01","\nGitLab as a company faces a challenge shared by many — we have lots of data for our engineering organization (via GitLab, our single data store for that part of the company), but there are key gaps in how we understand the effectiveness of business operations. [Meltano](https://gitlab.com/meltano/meltano/tree/master) was created to help fill the gaps by expanding the common data store to support Customer Success, Customer Support, Product teams, and Sales and Marketing.\n\n### What is Meltano?\n\nMeltano aims to be a complete solution for data teams — the name stands for model, extract, load, transform, analyze, notebook, orchestrate — in other words, the data science lifecycle. While this might sound familiar if you're already a fan of GitLab, Meltano is a separate product. Rather than wrapping Meltano into GitLab, Meltano will be the complete package for data people, whereas GitLab is the complete package for software developers.\n\n### What problem does it solve?\n\nThe GitLab Data and Analytics team is [charged](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/source/job-families/finance/manager-data-and-analytics/index.html.md) with getting data from our external sources, presenting it in a usable format to business users across the company, and eventually making predictions from the data. As is the case with many data teams, we currently do this with a series of steps and separate tools, and we're not yet at the level of process and stability that is commonplace in software development. The idea of bringing best practices from software development to data analytics is a huge draw for the Data team at GitLab. Ideally, all of our work could be done in open source tools, and could be version controlled, and we’d be able to track the state of the analytics pipeline from raw data to visualization.\n\nThe endgame for Meltano involves making analytics accessible to everyone, not just professional data wranglers. GitLab Data Analyst Emilie Burke explains a common scenario: \"There are whole swathes of small and medium size companies that don’t really have data and analytics because they don’t have engineers on their team. The reports that they get are through whatever tools they are using. When they’re dependent on these siloed data sources, you can’t track cross-functional efforts. For example, if you’re doing a giveaway, you might see a bunch of new email signups piping into Mailchimp. But you won't be able to see if those users are then buying things in Shopify. Unless there's a native integration, you can’t relate that data to any other data source.\"\n\nManaging the integrations you currently have comes with its own challenges. Senior Product Manager Joshua Lambert shares, \"The difficulty of hooking up Salesforce and Marketo to see if a marketing campaign was successful is non-trivial. Often money is spent and the question is, 'Was it worth it?'\" As an open source tool, we think Meltano will make a big difference for teams without much money to invest in data analytics. It's a new field for many organizations, and we want to do everything we can to make it easier for teams and business to access their data and make better decisions. We talked more about this during a recent Q&A, which you can watch below.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/nIYMNIvKLcY\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### How can I contribute?\n\nMeltano is open source! You can check out the plan for an MVC [here](https://gitlab.com/meltano/meltano/issues/10). There are many different areas where people can contribute, including Meltano Analysis (the UI), Extractors, and Loaders. Meltano currently only supports Postgres (with Snowflake on the way!), but will need to support many different database types, so any contributions writing Loaders for one of those would be very welcome. You can make requests by opening an [issue](https://gitlab.com/meltano/meltano/issues/) and labeling it `feature request`.\n\nReaders are also extremely welcome to check out the [Data team's work](https://gitlab.com/meltano/analytics/) and suggest ways we can improve! We know some aspects of how we do analytics and data science are not where they should be. If you don’t think we’re using the right primitives or going about something the wrong way, we’re all ears!\n\n### How can I keep up with the Data Team and Meltano?\n\nThe best way to get in touch about Meltano or the Data team is to [open an issue](https://gitlab.com/meltano/meltano/issues/)! We also publish all of our team calls and working sessions on our brand new [YouTube channel](https://www.youtube.com/channel/UCmp7zJAZEC7I_n9BEydH8XQ), and you can learn more about the team, view our work in GitLab, and follow us on social:\n\n* [Jacob Schatz](https://about.gitlab.com/company/team/#jakecodes), Staff Developer, Meltano\n* [Yannis Roussos](https://about.gitlab.com/company/team/#iroussos), Senior Developer, Meltano Specialist\n* [Alex Zamai](https://about.gitlab.com/company/team/#AlexZamai), Developer, Meltano\n* [Micaël Bergeron](https://about.gitlab.com/company/team/#micaelbergeron), Developer, Meltano\n* [Joshua Lambert](https://about.gitlab.com/company/team/#joshlambert), Senior Product Manager, Package, Monitor, Distribution\n* [Taylor A. Murphy, PhD](https://about.gitlab.com/company/team/#tayloramurphy1), Manager, Data and Analytics\n* [Emilie Schario](https://gitlab.com/emilie), Data Analyst\n* [Thomas La Piana](https://gitlab.com/tlapiana), Data Engineer\n* [Chase Wright](https://about.gitlab.com/company/team/#thechasewright), Finance Operations and Planning\n\n_[Emily von Hoffmann](/company/team/#emvonhoffmann) contributed to this post._\n\nPhoto by [Jefferson Santos](https://unsplash.com/photos/9SoCnyQmkzI) on [Unsplash](https://unsplash.com/)\n{: .note}\n",[890],{"slug":3194,"featured":6,"template":683},"hey-data-teams-we-are-working-on-a-tool-just-for-you","content:en-us:blog:hey-data-teams-we-are-working-on-a-tool-just-for-you.yml","Hey Data Teams We Are Working On A Tool Just For You","en-us/blog/hey-data-teams-we-are-working-on-a-tool-just-for-you.yml","en-us/blog/hey-data-teams-we-are-working-on-a-tool-just-for-you",{"_path":3200,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3201,"content":3207,"config":3213,"_id":3215,"_type":17,"title":3216,"_source":18,"_file":3217,"_stem":3218,"_extension":21},"/en-us/blog/gitlab-workflow-with-jira-jenkins",{"title":3202,"description":3203,"ogTitle":3202,"ogDescription":3203,"noIndex":6,"ogImage":3204,"ogUrl":3205,"ogSiteName":671,"ogType":672,"canonicalUrls":3205,"schema":3206},"Demo: GitLab + Jira + Jenkins","See how you can use our Jira and Jenkins integrations to reduce context switching and streamline your workflow.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680048/Blog/Hero%20Images/gitlab-jira-jenkins-cover.png","https://about.gitlab.com/blog/gitlab-workflow-with-jira-jenkins","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Demo: GitLab + Jira + Jenkins\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Joel Krooswyk\"}],\n        \"datePublished\": \"2018-07-30\",\n      }",{"title":3202,"description":3203,"authors":3208,"heroImage":3204,"date":3210,"body":3211,"category":14,"tags":3212},[3209],"Joel Krooswyk","2018-07-30","\n\nOne of the things we love about GitLab is that while it can replace all your other software development lifecycle tools [(no, really)](/); it doesn't have to. Whether you want to rip and replace everything or use it for one or two stages of your workflow, [alongside your existing toolset](/partners/technology-partners/integrate/) (for now, or forever), we've got you covered.\n\nOne of the things we're most often asked about is how GitLab works together with [Jira](/solutions/jira/) for issue tracking, and [Jenkins](/solutions/jenkins/) for CI. This could be for one of two reasons:\n\n1. Your organization is happy with your issue tracking and CI solutions, and just want to use GitLab for other features, or\n2. You plan to move to GitLab for your end-to-end software development lifecycle, but that's a significant undertaking and it may be less disruptive to migrate on a project-by-project basis.\n\nNo matter the reason, what's important is maintaining the context of work without having to switch between applications frequently. With these integrations you can transition Jira issue states via GitLab, as well as see GitLab commits, branches, and merge requests in the Jira development panel. You can also view the status of Jenkins pipelines in GitLab to optimize your use of GitLab Merge Requests.\n\nI recorded this demo to show what a workflow using all three would look like.\n\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/Jn-_fyra7xQ\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n",[847,1356,232,783],{"slug":3214,"featured":6,"template":683},"gitlab-workflow-with-jira-jenkins","content:en-us:blog:gitlab-workflow-with-jira-jenkins.yml","Gitlab Workflow With Jira Jenkins","en-us/blog/gitlab-workflow-with-jira-jenkins.yml","en-us/blog/gitlab-workflow-with-jira-jenkins",{"_path":3220,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3221,"content":3227,"config":3232,"_id":3234,"_type":17,"title":3222,"_source":18,"_file":3235,"_stem":3236,"_extension":21},"/en-us/blog/google-next-2018-recap",{"title":3222,"description":3223,"ogTitle":3222,"ogDescription":3223,"noIndex":6,"ogImage":3224,"ogUrl":3225,"ogSiteName":671,"ogType":672,"canonicalUrls":3225,"schema":3226},"Google Next 2018 Recap","Several GitLab team-members participated in Google Next in San Francisco. Here’s a recap of what went on.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679821/Blog/Hero%20Images/melody-meckfessel-gitlab-google-next-keynote.png","https://about.gitlab.com/blog/google-next-2018-recap","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Google Next 2018 Recap\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"William Chia\"}],\n        \"datePublished\": \"2018-07-27\",\n      }",{"title":3222,"description":3223,"authors":3228,"heroImage":3224,"date":3229,"body":3230,"category":14,"tags":3231},[1707],"2018-07-27","\n\n## Google Partner Award Winner for Innovative Solution in Developer Ecosystem\n\nGoogle's Partner Summit kicked off a day before the broader Next conference started. At the summit, we were honored to receive the Google Cloud Partner Award for Innovative Solution in Developer Ecosystem for the [tight integration with GKE](/partners/technology-partners/google-cloud-platform/) we released earlier this year. Of course, we decided to take some fun photos with the cloud logo.\n\n![Sid Sijbrandij and Google execs](https://about.gitlab.com/images/blogimages/google-next-2018/sid-sijbrandij-google-execs.jpg){: .shadow.large.center}\n\n![Sid Sijbrandij and Google tech partner team](https://about.gitlab.com/images/blogimages/google-next-2018/sid-sijbrandij-google-tech-partner-team.jpg){: .shadow.large.center}\n\n![Eliran Mesika with GitLab's award + GitLab team with award](https://about.gitlab.com/images/blogimages/google-next-2018/eliran-mesika-gitlab-google-award-team.jpg){: .large.center}\n\n## Launch partner for GCP Marketplace with Kubernetes Apps\n\n![GCP Marketplace launch partners at Google Next](https://about.gitlab.com/images/blogimages/google-next-2018/gcp-marketplace-launch-partners-google-next.jpg){: .shadow.medium.center}\n\nWhile the GCP Marketplace announcement went out a few days before the show, there was still [a lot of buzz about it at Google Next](https://www.youtube.com/watch?v=C6koWw0r07Y&amp=&t=28m29s). In addition to traditional apps, which deploy VMs on Compute Engine, the new GCP Marketplace now supports Kubernetes apps, which deploy to a Kubernetes cluster running on Google Kubernetes Engine. We were happy to be a launch partner, offering the ability to [install GitLab via the GCP Marketplace](/blog/install-gitlab-one-click-gcp-marketplace/) on day one.\n\n## Serverless, Knative, and Istio\n\n[Knative](https://cloud.google.com/knative/) and [Istio](https://istio.io/) are two new projects announced during the show that we're excited about. Knative enables \"serverless\" workloads on Kubernetes while Istio is a service mesh for microservices. Check out [Josh](/company/team/#joshlambert) chatting live with [Sid](/company/team/#sytses) from the show (where Wi-Fi was a bit choppy) about serverless, Knative, and Istio, and how these technologies can potentially tie in with GitLab.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/k1jK4F4NoBw\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n## Google Cloud Build + GitLab CI/CD\n\nOne of the key announcements from the show was the introduction of Google Cloud Build, a CI/CD tool for GCP. Many folks asked us if we saw this as competitive to GitLab CI/CD, and how that would affect our partnership with Google. First and foremost, GitLab supports a multi-cloud strategy. We partner with all of the major cloud vendors to ensure GitLab CI/CD can support multi-cloud deployments. Many cloud vendors have their own CI/CD tooling, like AWS Code Deploy or IBM Cloud Pipelines. For us, Cloud Build is just another point of collaboration. In fact, our own [Josh Lambert](/company/team/#joshlambert) teamed up with [Christopher Sanson](https://www.linkedin.com/in/christophersanson/) to create a GitLab + Google demo for Christopher's session, \"CI/CD for Hybrid and Multi-Cloud Customers.\"\n\n![Christopher Sanson demos GitLab CI/CD with Cloud Build](https://about.gitlab.com/images/blogimages/google-next-2018/christopher-sanson-gitlab-cicd.jpg){: .shadow.medium.center}\n\nFirst, Christopher showed how to use GitLab as your code repo with Cloud Build as your CI/CD connected up via webhooks to Cloud Functions. Here's a link to some [sample code for setting up a Cloud Function to trigger cloud build from GitLab](https://gitlab.com/joshlambert/cloud-function-trigger) if you'd like to try it out yourself.\n\nThen Christopher showed how to use GitLab CI/CD and GitLab container registry while offloading the infrastructure build to Google Cloud Build. Using Google Cloud Build together with GitLab CI/CD is one way to overcome some of the security problems of docker-in-docker (e.g. requires privileged containers). Check out the video below to see it in action. Additionally, here's an example ruby app with a [sample configuration for connecting Gitlab CI/CD to Cloud Build](https://gitlab.com/joshlambert/minimal-ruby-app/merge_requests/1/diffs).  \n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/IUKCbq1WNWc?start=1324\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n\n## GitLab.com is migrating to GCP\n\n![Melody Meckfessel talks GitLab GCP migration during keynote](https://about.gitlab.com/images/blogimages/google-next-2018/melody-meckfessel-gitlab-google-next-keynote.png){: .shadow.medium.center}\n\n>\"Our friends at GitLab have created a complete open source DevOps stack\" - [Melody Meckfessel](https://www.linkedin.com/in/melodymeckfessel/), Vice President of Engineering, Google Cloud Platform\n\nAs part of our plans to make GitLab.com a rock solid, enterprise-ready SaaS offering, we are migrating from Azure to Google Cloud Platform. We’ve been carefully planning this migration for many months and are now very close to executing with a target migration date of August 11. Melody Meckfessel talked a bit about our migration during her keynote on Thursday. Check out our previous blog post to read up on the [full details of GitLab’s GCP migration](/blog/gcp-move-update/).  \n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/JQPOPV_VH5w?start=1363\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n## Talking to you\n\n![William, Mike, and Reb in the GitLab booth](https://about.gitlab.com/images/blogimages/google-next-2018/william-chia-mike-walsh-gitlab-booth-duo.jpg){: .shadow.large.center}\n\nOf course one of our favorite parts of any trade show is getting to meet our users and customers face to face. We love hearing the palpable excitement when you talk about how GitLab is streamlining your toolchain or easing your move to Kubernetes. We love sharing the story with folks who don’t know yet and seeing their faces light up when we tell them GitLab’s not just a version control solution, but an end-to-end DevOps application with built-in project planning, CI/CD, container registry, monitoring, and more. Google Next ’18 was a great show, and we can’t wait to see you next time! Check out the [full list of events](/events) we’ll be at to find one close to you.\n",[278,1100,1458,2141,1059],{"slug":3233,"featured":6,"template":683},"google-next-2018-recap","content:en-us:blog:google-next-2018-recap.yml","en-us/blog/google-next-2018-recap.yml","en-us/blog/google-next-2018-recap",{"_path":3238,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3239,"content":3245,"config":3250,"_id":3252,"_type":17,"title":3253,"_source":18,"_file":3254,"_stem":3255,"_extension":21},"/en-us/blog/install-gitlab-one-click-gcp-marketplace",{"title":3240,"description":3241,"ogTitle":3240,"ogDescription":3241,"noIndex":6,"ogImage":3242,"ogUrl":3243,"ogSiteName":671,"ogType":672,"canonicalUrls":3243,"schema":3244},"Install GitLab with a single click from the new GCP Marketplace","GitLab is now available on the new Google Cloud Platform Marketplace, so you can deploy GitLab on Google Kubernetes Engine with a single click!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680061/Blog/Hero%20Images/gcp-send-gitlab-large.png","https://about.gitlab.com/blog/install-gitlab-one-click-gcp-marketplace","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Install GitLab with a single click from the new GCP Marketplace\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"William Chia\"}],\n        \"datePublished\": \"2018-07-18\",\n      }",{"title":3240,"description":3241,"authors":3246,"heroImage":3242,"date":3247,"body":3248,"category":14,"tags":3249},[1707],"2018-07-18","\nToday, Google Cloud announced its [new Google Cloud Platform (GCP) marketplace](https://cloudplatform.googleblog.com/2018/07/introducing-commercial-kubernetes-applications-in-gcp-marketplace.html) with the ability to deploy applications to your Kubernetes clusters on Google Kubernetes Engine (GKE). We’re proud to make GitLab available in the GCP Marketplace from day one. While you can [install GitLab almost anywhere](/install/), the new GCP Marketpklace app installs with just a single click. It's the easiest way to get your own self-managed GitLab instance up and running.\n\n![Deploy GitLab on Google Cloud Platform](https://about.gitlab.com/images/google-cloud-platform/gcp-send-gitlab-medium.png)\n\n### Not looking to manage your own instance?\n\nFolks who don’t want to take on the overhead of administering their own GitLab instance can [sign up for GitLab.com](https://gitlab.com/users/sign_in). GitLab.com is a SaaS offering that runs the same software as GitLab self-managed, managed by GitLab.\n\nRecently, we announced our [migration from Azure to GCP](/blog/moving-to-gcp/). This migration is the first step in our goal of running GitLab.com as a cloud native application on Kubernetes. The migration has involved careful planning along with decomposing GitLab into individual services. The lessons learned through our migration have translated directly into our how we are building the GitLab Helm Chart. The work we’ve done to migrate GitLab.com has fueled our ability to offer a solid option for self-managed users to deploy GitLab to Kubernetes.\n\n### Want to deploy your application to Kubernetes?\n\nWith a built-in container registry and [Kubernetes integration](/solutions/kubernetes/), GitLab makes it easier than ever to get started with containers and cloud native development. [Gitlab CI/CD](/topics/ci-cd/) can deploy your application to any Kubernetes cluster.\n\nIf you don’t have a Kubernetes cluster, we’ve got you covered. The easiest way to get set up in using our [GKE Integration](/partners/technology-partners/google-cloud-platform/) and [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/). It takes just a few clicks to set up, then you have a full deployment pipeline. Just commit your code and GitLab does rest.\n\n![GitLab deploys your app to Google Cloud Platform](https://about.gitlab.com/images/google-cloud-platform/gitlab-send-app-medium.png)\n\n#### Join us at Google Next\n\nNext week on July 24-27 we’ll be at [Google Nex](https://cloud.withgoogle.com/next18/sf/)t in San Francisco, where there’s a lot going on. [Follow GitLab on Twitter](https://twitter.com/gitlab) to stay up to date on announcements from the show. If you’re at the show, stop by booth #S1629 and say hi! We’d love to hear how you are using GitLab and show you how our GKE Integration and Marketplace install work.  \n\n#### Summary\n\nYou can use GitLab either as a self-managed app or as a service on GitLab.com. Today, we’ve made it easier than ever to install [GitLab with the GCP Marketplace](https://console.cloud.google.com/marketplace/details/gitlab-public/gitlab?filter=solution-type:k8s). Additionally, we’ll be moving GitLab.com to GCP and soon afterward to GKE. You can look forward to the increased stability and performance that Kubernetes will bring to GitLab.com. Regardless of whether you are using self-managed GitLab or GitLab.com, GitLab’s Kubernetes integration and GKE integration make it easy to deploy your app to Kubernetes. Stop by Google Next and follow our Twitter feed to get the latest news on using GitLab together with Google Cloud Platform.\n",[1458,2141,1100,1059],{"slug":3251,"featured":6,"template":683},"install-gitlab-one-click-gcp-marketplace","content:en-us:blog:install-gitlab-one-click-gcp-marketplace.yml","Install Gitlab One Click Gcp Marketplace","en-us/blog/install-gitlab-one-click-gcp-marketplace.yml","en-us/blog/install-gitlab-one-click-gcp-marketplace",{"_path":3257,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3258,"content":3263,"config":3269,"_id":3271,"_type":17,"title":3272,"_source":18,"_file":3273,"_stem":3274,"_extension":21},"/en-us/blog/gitlab-joins-msft-tech-accord",{"title":3259,"description":3260,"ogTitle":3259,"ogDescription":3260,"noIndex":6,"ogImage":1051,"ogUrl":3261,"ogSiteName":671,"ogType":672,"canonicalUrls":3261,"schema":3262},"GitLab joins Cybersecurity Tech Accord","Today we're happy to announce that we're one of 11 companies joining the Cybersecurity Tech Accord.","https://about.gitlab.com/blog/gitlab-joins-msft-tech-accord","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab joins Cybersecurity Tech Accord\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Kathy Wang\"}],\n        \"datePublished\": \"2018-06-20\",\n      }",{"title":3259,"description":3260,"authors":3264,"heroImage":1051,"date":3266,"body":3267,"category":14,"tags":3268},[3265],"Kathy Wang","2018-06-20","\n\nGitLab has joined the [Cybersecurity Tech Accord](https://cybertechaccord.org/), along with 10 other companies. The Cybersecurity Tech Accord is a consortium of over 40 security-minded tech companies that pledge to work collaboratively to protect our users and customers, guided by a set of [security principles](https://cybertechaccord.org/accord/).\n\nTransparency is and has alway been one of GitLab’s [core values](https://handbook.gitlab.com/handbook/values/#transparency), and we have always strived to make information available to our users and customers. In the security industry, this is an especially challenging line to walk, and we want to contribute not only to the collaborative efforts outlined in the [Cybersecurity Tech Accord](https://cybertechaccord.org/accord/), but to also share our experiences with other tech companies on what worked well for us in the iterative process of making security more transparent.\n\nOur [security team](/handbook/security/) works hard to protect user and customer data. In addition, GitLab is committed to building [security capabilities in our product offerings](/pricing/feature-comparison/) to help our customers improve upon their software development lifecycle process.\n\nAt GitLab, we believe security is everyone’s job. The security industry has relied on collaborations with industry peers because collectively, we are able to obtain richer data and insights about our adversaries, in order to protect our users and customers. We look forward to building improved actionable data sharing and collaborative efforts with our tech peers.\n",[890,994,680],{"slug":3270,"featured":6,"template":683},"gitlab-joins-msft-tech-accord","content:en-us:blog:gitlab-joins-msft-tech-accord.yml","Gitlab Joins Msft Tech Accord","en-us/blog/gitlab-joins-msft-tech-accord.yml","en-us/blog/gitlab-joins-msft-tech-accord",{"_path":3276,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3277,"content":3283,"config":3288,"_id":3290,"_type":17,"title":3291,"_source":18,"_file":3292,"_stem":3293,"_extension":21},"/en-us/blog/netlify-launches-gitlab-support",{"title":3278,"description":3279,"ogTitle":3278,"ogDescription":3279,"noIndex":6,"ogImage":3280,"ogUrl":3281,"ogSiteName":671,"ogType":672,"canonicalUrls":3281,"schema":3282},"Netlify CMS launches support for GitLab","Make it even easier to bring developers and content creators together, so everyone can contribute.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671196/Blog/Hero%20Images/gitlab-netlify-cover.png","https://about.gitlab.com/blog/netlify-launches-gitlab-support","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Netlify CMS launches support for GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2018-06-13\",\n      }",{"title":3278,"description":3279,"authors":3284,"heroImage":3280,"date":3285,"body":3286,"category":14,"tags":3287},[2489],"2018-06-13","\n\nMaking it possible that “[everyone can contribute](/company/mission/#mission)” is our mission, and any development that brings us closer to it is great news! That’s why we’re happy to tell you that open source content management system [Netlify CMS](https://www.netlify.com/) is [launching support for GitLab as a back end](https://www.netlifycms.org/blog/2018/06/netlify-cms-now-supports-gitlab-as-a-backend/) today.\n\nAs more developers move to static site generators to pre-build their site’s front end for a more reliable, secure, and fast site experience, it’s important that other team members are empowered to contribute to site content easily. While [all GitLab team-members learn to contribute to this very site using GitLab itself](/blog/people-ops-using-gitlab/), most non-technical folks are accustomed to a CMS with a familiar user interface and a WYSIWYG. A simple UI wrapper for your Git repository, Netlify CMS automatically syncs all content edits made through its UI to the repository, so changes are treated in exactly the same way as code (including versioning, rollbacks, continuous deployment, and so on).\n\nThis is one of Netlify CMS’ most highly requested integrations, so much so that the plan to make it happen it is responsible for their project’s single largest contributor coming on board! GitLab users can now take advantage of the integration to simplify publishing with any SSG. Check out how it works:\n\n![Netlify CMS GitLab integration demo](https://about.gitlab.com/images/blogimages/gitlab-netlifycms-gif.gif){: .shadow.medium.center}\n\n1. An editor makes a change in the Netlify CMS\n2. That change automatically syncs to your GitLab repository\n3. And that action triggers a build to your published site\n\nReady to give it a spin? The easiest way to get started is to click on the button below: it'll automatically deploy a Netlify CMS template to a GitLab repository. It's prepackaged with the Hugo static site generator and deploys to Netlify so you can see a real, working site right away. You can also check out [the documentation](https://www.netlifycms.org/docs/start-with-a-template/). Enjoy!\n\n\u003Ca href=\"https://app.netlify.com/start/deploy?repository=https://gitlab.com/netlify-templates/one-click-hugo-cms&stack=cms\" rel=\"nofollow noreferrer noopener\" target=\"_blank\">\u003Cimg src=\"https://www.netlify.com/img/deploy/button.svg\" alt=\"Deploy to Netlify\">\u003C/a>\n",[232,804],{"slug":3289,"featured":6,"template":683},"netlify-launches-gitlab-support","content:en-us:blog:netlify-launches-gitlab-support.yml","Netlify Launches Gitlab Support","en-us/blog/netlify-launches-gitlab-support.yml","en-us/blog/netlify-launches-gitlab-support",{"_path":3295,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3296,"content":3301,"config":3305,"_id":3307,"_type":17,"title":3308,"_source":18,"_file":3309,"_stem":3310,"_extension":21},"/en-us/blog/why-move-to-gitlab",{"title":3297,"description":3298,"ogTitle":3297,"ogDescription":3298,"noIndex":6,"ogImage":2958,"ogUrl":3299,"ogSiteName":671,"ogType":672,"canonicalUrls":3299,"schema":3300},"Thinking about moving to GitLab? Here are 5 reasons why you should.","Inspired by #movingtogitlab? We've put together our top reasons to give it a try.","https://about.gitlab.com/blog/why-move-to-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Thinking about moving to GitLab? Here are 5 reasons why you should.\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Aricka Flowers\"}],\n        \"datePublished\": \"2018-06-11\",\n      }",{"title":3297,"description":3298,"authors":3302,"heroImage":2958,"date":3303,"body":3304,"category":14},[2715],"2018-06-11","\n\nWe've been getting a lot of questions about what makes GitLab great and worthy of developers’ business and, most importantly, trust. So we decided to take some time to list out the top five reasons to [move to GitLab](/community/moving-to-gitlab/):\n\n## 1. It's the only single application for the entire Devops cycle\n\nGitLab is the first application built to cover all [stages of the DevOps cycle](/topics/devops/). This means product, development, QA, and Ops teams can all work together concurrently, making the software development lifecycle three times faster. Built-in [continuous integration and continuous delivery features](/solutions/continuous-integration/) make it seamless to go from a code change to a running pipeline. On top of that, GitLab has project management, issue tracking, and free private repository hosting to make it easier to plan and manage your projects. Because GitLab is open, it has great integrations with many other tools, including container orchestration tools like [Kubernetes](/solutions/kubernetes/).\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Okay I get it. \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@GitLab\u003C/a>&#39;s product leapfrogged GitHub. I&#39;m shocked how incredibly nice, thoughtful and well designed it is. Fantastic built-in tools -- incredible Kubernetes support, built-in CI/CD, security testing, project management and support features, etc. \u003Ca href=\"https://twitter.com/hashtag/MovingToGitLab?src=hash&amp;ref_src=twsrc%5Etfw\">#MovingToGitLab\u003C/a>\u003C/p>&mdash; Zach Kelling (@zeekay) \u003Ca href=\"https://twitter.com/zeekay/status/1004529586997211137?ref_src=twsrc%5Etfw\">June 7, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n## 2. Security is built in\n\nWe're keenly aware that security is critical in software development, and too often security is at the end of the SDLC. In GitLab, security is first class. Security checks are built into merge requests (MRs), with problems being reported directly in pipelines and MRs. Some of our integrated security features include:\n\n* Dependency scanning\n* Static Application Security Testing (SAST)\n* Dynamic Application Security Testing\n* Container scanning\n\nIn GitLab, every code change can be scanned automatically.\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Today I moved all my work related repositories to \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a>, I have to admit, I wish I did it way before. Gitlab has everything in one package, groups, boards, auto dev ops. Quite impressed.\u003C/p>&mdash; Kaan Göksal (@kaangoksal) \u003Ca href=\"https://twitter.com/kaangoksal/status/1004433422515888135?ref_src=twsrc%5Etfw\">June 6, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n\n## 3. It's open core\n\nGitLab is [open core](/blog/gitlab-is-open-core-github-is-closed-source/).\nGitLab Core is open source, while higher tiers of self-managed GitLab include both open source and proprietary features. Our [Community Edition](https://gitlab.com/gitlab-org/gitlab-ce/) (CE) repository includes only [open source code](/solutions/source-code-management/), while the [Enterprise Edition repository](https://gitlab.com/gitlab-org/gitlab-ee/) (EE) holds both open source and proprietary code,\nbut operates like CE, thanks to a publicly visible issue tracker. This means that whether you use GitLab Core, GitLab.com, GitLab Ultimate, or anything in between, you can influence and contribute to GitLab, and keep an eye on [where things are going](/direction/).\n\nYou can read about our [stewardship of the open source project](/company/stewardship/) and check out [our recent post](/blog/gitlab-tiers/) which goes into more detail about the different GitLab tiers.\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">As a product-focused company, we support the \u003Ca href=\"https://twitter.com/hashtag/movingtogitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#movingtogitlab\u003C/a> movement 🦁🚀\u003Cbr>\u003Cbr>We moved to \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@Gitlab\u003C/a> in the recent months, and it has everything our engineers need in one application. \u003Ca href=\"https://twitter.com/hashtag/Gitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#Gitlab\u003C/a> enables us to move fast with all the resources we need in one place. \u003Ca href=\"https://t.co/tQMew8JosX\">https://t.co/tQMew8JosX\u003C/a>\u003C/p>&mdash; Landing Lion (@LandingLion) \u003Ca href=\"https://twitter.com/LandingLion/status/1004420532308242433?ref_src=twsrc%5Etfw\">June 6, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n## 4. Transparency is by default\n\nBuilding and maintaining open and honest relationships with users is at the core of our value system. Everything we do is public by default. Our [entire handbook](/handbook/) is open to the public along with [our website’s repository](https://gitlab.com/gitlab-com/www-gitlab-com/).\n\n{::options parse_block_html=\"false\" /}\n\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Phew...  Panic resolved. One nice thing about open-source frameworks: transitioning to a clone can be relatively seamless. Thanks \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@GitLab\u003C/a>! Good-bye \u003Ca href=\"https://twitter.com/github?ref_src=twsrc%5Etfw\">@GitHub\u003C/a> (it&#39;s not your fault). \u003Ca href=\"https://twitter.com/hashtag/MovingToGitLab?src=hash&amp;ref_src=twsrc%5Etfw\">#MovingToGitLab\u003C/a> is seamless and nearly instant for my teams&#39; usage.\u003C/p>&mdash; C Barrington-Leigh (@profcpbl) \u003Ca href=\"https://twitter.com/profcpbl/status/1003853726770081792?ref_src=twsrc%5Etfw\">June 5, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n## 5. Everyone can contribute\n\n[This GitLab principle](/company/mission/#mission) is applicable to your project’s workflow *and* our own application. Our platform allows all project stakeholders – from VPs and directors to ScrumMasters, developers and writers – to collaborate and communicate in one place, allowing for organized and open discourse.\n\nAnyone can create an issue or MR to improve GitLab. We welcome [community contributions](/community/contribute/) and celebrate them by designating a [Most Valuable Person](/community/mvp/) (MVP) every month. With [our public issue tracker](https://gitlab.com/gitlab-org/gitlab-ce/issues), anyone can propose, contribute to, and discuss GitLab’s features. Since we ship a new release on the 22nd of each month, the implementation of public contributions and input are visible in short order.\n\n{::options parse_block_html=\"false\" /}\n\n\n\u003Cdiv class=\"center\">\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">No problem, I mean what&#39;s not to love? You improve consistently, you listen to the community and you make using your platform feel like you&#39;re a part of something special. I support you all the way, I have no need to be \u003Ca href=\"https://twitter.com/hashtag/movingtogitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#movingtogitlab\u003C/a> as I&#39;ve used \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> for nearly 2 years now\u003C/p>&mdash; LTN Games (@LTNGames) \u003Ca href=\"https://twitter.com/LTNGames/status/1003079862058409984?ref_src=twsrc%5Etfw\">June 3, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\nReady to make your move? We’ve made it pretty easy to migrate projects to GitLab. Check out [our documentation](https://docs.gitlab.com/ee/user/project/import/) or this video tutorial to get moving today.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/VYOXuOg9tQI\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n",{"slug":3306,"featured":6,"template":683},"why-move-to-gitlab","content:en-us:blog:why-move-to-gitlab.yml","Why Move To Gitlab","en-us/blog/why-move-to-gitlab.yml","en-us/blog/why-move-to-gitlab",{"_path":3312,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3313,"content":3319,"config":3323,"_id":3325,"_type":17,"title":3326,"_source":18,"_file":3327,"_stem":3328,"_extension":21},"/en-us/blog/gitlab-original-t-shirt",{"title":3314,"description":3315,"ogTitle":3314,"ogDescription":3315,"noIndex":6,"ogImage":3316,"ogUrl":3317,"ogSiteName":671,"ogType":672,"canonicalUrls":3317,"schema":3318},"Here's a little something for our longtime friends","Were you #movingtogitlab before it was the thing to do? We want to acknowledge our community for supporting us from the beginning – find out how you can get your hands on a limited edition GitLab Originals T-shirt.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684052/Blog/Hero%20Images/gitlab-original-cover.jpg","https://about.gitlab.com/blog/gitlab-original-t-shirt","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Here's a little something for our longtime friends\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2018-06-08\",\n      }",{"title":3314,"description":3315,"authors":3320,"heroImage":3316,"date":3321,"body":3322,"category":14},[699],"2018-06-08","\n\nWhat a week! Some pretty big news on Monday launched the [#movingtogitlab trend](/blog/movingtogitlab/), and we've been [overwhelmed by the enthusiasm](/blog/gitlab-ultimate-and-gold-free-for-education-and-open-source/). So, if you're new or #movingtogitlab now, welcome! But we don't want to forget our longtime fans and supporters. When GitLab CEO [Sid Sijbrandij](/company/team/#sytses) read your tweets about joining GitLab before everyone was #movingtogitlab, he created [an issue](https://gitlab.com/gitlab-com/marketing/general/issues/2684) and rallied the team to come up with something special.\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003C!-- first tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">How can I be \u003Ca href=\"https://twitter.com/hashtag/movingtogitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#movingtogitlab\u003C/a> if I&#39;ve already been using \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a>?? \u003Ca href=\"https://t.co/4T15iS6nnS\">pic.twitter.com/4T15iS6nnS\u003C/a>\u003C/p>&mdash; Lana Del Taco (@lananotllama) \u003Ca href=\"https://twitter.com/lananotllama/status/1004381698581192704?ref_src=twsrc%5Etfw\">June 6, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">We have switched to \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> before it was cool. \u003Ca href=\"https://twitter.com/hashtag/movingtogitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#movingtogitlab\u003C/a> \u003Ca href=\"https://t.co/y35huohDId\">pic.twitter.com/y35huohDId\u003C/a>\u003C/p>&mdash; Tom Kukrál (@tomkukral) \u003Ca href=\"https://twitter.com/tomkukral/status/1005101013483905024?ref_src=twsrc%5Etfw\">June 8, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- second tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Together since 1st Feb 2016 \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> ;)\u003Cbr> \u003Ca href=\"https://twitter.com/hashtag/movingtogitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#movingtogitlab\u003C/a> \u003Ca href=\"https://t.co/XKZb5lsxNO\">pic.twitter.com/XKZb5lsxNO\u003C/a>\u003C/p>&mdash; Paweł Wojciechowski (@felixisflyingPL) \u003Ca href=\"https://twitter.com/felixisflyingPL/status/1005189901720195072?ref_src=twsrc%5Etfw\">June 8, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\n## How to get yours\n\n![Alt text for your image](https://about.gitlab.com/images/blogimages/gitlab-original-t-shirt.png){: .large.center}\n\nIf you're an active GitLab user and created your account before June 2nd, 2018, fill out [this form](http://eepurl.com/dxDP85) to apply for yours. You'll need a US shipping address too. Make sure you're quick, as the shirts are limited edition – only 1,250 of you will be able to show how legit you are 😎 As of Monday afternoon, just 383 of the shirts have been claimed, so there's still some time to grab one! \n\n## Why just the US?\n\nWe are a global company, but because this movement has moved so fast, it's even caught us by surprise. While we'd love to ship to everyone, the T-shirt is being custom made in the US (as we speak!), so it makes the most logistical sense to ship locally. To compare, the cost to ship the T-shirt within the US is $8, versus $85 for a reliable courier to Portugal. This is because when shipping internationally, we need to pay someone to fill out customs fees. Cheaper options do exist, but we don't want to sacrifice reliability as we'd hate for anyone's T-shirt not to reach them!\n\nIn addition to the high shipping costs on our end, we’re concerned that recipient will likely pay high VAT or customs fees when the shirt arrives.\n\nWe hope everyone understands – we had to move quickly and we'll have other freebies down the line that are more inclusive.\n\nWith the formalities out the way, if you didn't need to move to GitLab because you've been with us all along, please go forth and apply for your GitLab Originals T-shirt!\n",{"slug":3324,"featured":6,"template":683},"gitlab-original-t-shirt","content:en-us:blog:gitlab-original-t-shirt.yml","Gitlab Original T Shirt","en-us/blog/gitlab-original-t-shirt.yml","en-us/blog/gitlab-original-t-shirt",{"_path":3330,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3331,"content":3337,"config":3342,"_id":3344,"_type":17,"title":3345,"_source":18,"_file":3346,"_stem":3347,"_extension":21},"/en-us/blog/one-click-clone-to-xcode",{"title":3332,"description":3333,"ogTitle":3332,"ogDescription":3333,"noIndex":6,"ogImage":3334,"ogUrl":3335,"ogSiteName":671,"ogType":672,"canonicalUrls":3335,"schema":3336},"Announcing GitLab one-click clone to Xcode","GitLab's Xcode integration allows you to clone repos to Xcode with a single click!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680081/Blog/Hero%20Images/apple-xcode-cover.jpg","https://about.gitlab.com/blog/one-click-clone-to-xcode","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Announcing GitLab one-click clone to Xcode\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"William Chia\"}],\n        \"datePublished\": \"2018-06-06\",\n      }",{"title":3332,"description":3333,"authors":3338,"heroImage":3334,"date":3339,"body":3340,"category":14,"tags":3341},[1707],"2018-06-06","\n\nYesterday at WWDC, [Apple announced our Xcode integration with GitLab](https://twitter.com/gitlab/status/1003764673454342144), which makes it easier to work with your Xcode projects hosted in GitLab.\n\nProjects that contain a `.xcodeproj` or `.xcworkspace` file can now be cloned in Xcode using the new **Open in Xcode** button in GitLab. When viewing Xcode projects in the GitLab interface, the button will be available in GitLab next to the Git URL for cloning your project.\n\n![Open in Xcode Button](https://about.gitlab.com/images/blogimages/open-in-xcode-button.png){: .shadow.medium.center}\n\nThe button is available on GitLab.com, and will be available to self-managed GitLab instances in GitLab 11.0 from June 22, 2018. The button works with Xcode 9 and above.\n\nBe on the lookout as we have even more enhancements on the way with GitLab 11.0.\n",[232,680],{"slug":3343,"featured":6,"template":683},"one-click-clone-to-xcode","content:en-us:blog:one-click-clone-to-xcode.yml","One Click Clone To Xcode","en-us/blog/one-click-clone-to-xcode.yml","en-us/blog/one-click-clone-to-xcode",{"_path":3349,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3350,"content":3355,"config":3360,"_id":3362,"_type":17,"title":3363,"_source":18,"_file":3364,"_stem":3365,"_extension":21},"/en-us/blog/movingtogitlab",{"title":3351,"description":3352,"ogTitle":3351,"ogDescription":3352,"noIndex":6,"ogImage":2958,"ogUrl":3353,"ogSiteName":671,"ogType":672,"canonicalUrls":3353,"schema":3354},"#movingtogitlab","People are #movingtogitlab. New users can get 75% off on Gold or Ultimate for one year.","https://about.gitlab.com/blog/movingtogitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"#movingtogitlab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2018-06-03\",\n      }",{"title":3351,"description":3352,"authors":3356,"heroImage":2958,"date":3357,"body":3358,"category":14,"tags":3359},[699],"2018-06-03","\n\nWith the recent news of [Microsoft's acquisition of GitHub](https://www.bloomberg.com/news/articles/2018-06-03/microsoft-is-said-to-have-agreed-to-acquire-coding-site-github), we've seen a trend of #movingtogitlab which now has [more than 1,000 tweets](https://twitter.com/movingtogitlab).\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Stats on how Twittersphere is responding to reports that \u003Ca href=\"https://twitter.com/github?ref_src=twsrc%5Etfw\">@github\u003C/a> is about to be acquired by \u003Ca href=\"https://twitter.com/Microsoft?ref_src=twsrc%5Etfw\">@Microsoft\u003C/a> .\u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> and \u003Ca href=\"https://twitter.com/hashtag/movingtogitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#movingtogitlab\u003C/a> are the most popular in GitHub mentioned tweets, unsurprisingly \u003Ca href=\"https://t.co/dt9ZdoTQBI\">pic.twitter.com/dt9ZdoTQBI\u003C/a>\u003C/p>&mdash; Vicinitas 📈: Hashtag &amp; Keyword Tracking (@vicinitas_io) \u003Ca href=\"https://twitter.com/vicinitas_io/status/1003431925237760000?ref_src=twsrc%5Etfw\">June 4, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\nWe're also seeing a massive increase in projects migrating to GitLab.\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">We&#39;re seeing 10x the normal daily amount of repositories \u003Ca href=\"https://twitter.com/hashtag/movingtogitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#movingtogitlab\u003C/a> \u003Ca href=\"https://t.co/7AWH7BmMvM\">https://t.co/7AWH7BmMvM\u003C/a> We&#39;re scaling our fleet to try to stay up. Follow the progress on \u003Ca href=\"https://t.co/hN0ce379SC\">https://t.co/hN0ce379SC\u003C/a> and \u003Ca href=\"https://twitter.com/movingtogitlab?ref_src=twsrc%5Etfw\">@movingtogitlab\u003C/a>\u003C/p>&mdash; GitLab (@gitlab) \u003Ca href=\"https://twitter.com/gitlab/status/1003409836170547200?ref_src=twsrc%5Etfw\">June 3, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003Cdiv class=\"row\">\n\u003Cdiv class=\"col-md-6 col-sm-12\">\n\u003Cimg src=\"/images/blogimages/projects-created.png\" alt=\"Projects created in GitLab\">\n\u003C/div>\n\u003Cdiv class=\"col-md-6 col-sm-12\">\n\u003Cimg src=\"/images/blogimages/github-imports-chart.png\" alt=\"GitHub imports to GitLab\">\n\u003C/div>\n\u003Cdiv class=\"col-md-12 text-center\" style=\"margin-top: 5px\">\n\u003C/div>\n\u003C/div>\n\n## Why are people #movingtogitlab?\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">I love \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a>, the integration between code repository, documentation management, issue tracking and CI/CD is seamless ... and free. \u003Ca href=\"https://twitter.com/github?ref_src=twsrc%5Etfw\">@github\u003C/a> moving to Microsoft could be huge for GitLab \u003Ca href=\"https://t.co/t9Jzyf9dmV\">https://t.co/t9Jzyf9dmV\u003C/a>\u003C/p>&mdash; Oli Young (@oliyoung) \u003Ca href=\"https://twitter.com/oliyoung/status/1003408661815836672?ref_src=twsrc%5Etfw\">June 3, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Even if you go with \u003Ca href=\"https://t.co/e5iMjTswKf\">https://t.co/e5iMjTswKf\u003C/a> at first, the fact you’re able to quickly run your own GitLab CE install and migrate from \u003Ca href=\"https://t.co/e5iMjTswKf\">https://t.co/e5iMjTswKf\u003C/a> is crucial.\u003C/p>&mdash; Matt Lee (@mattl) \u003Ca href=\"https://twitter.com/mattl/status/1003437203480072192?ref_src=twsrc%5Etfw\">June 4, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">GitLab also ranks very highly on the FSF ethical criteria evaluation. \u003Ca href=\"https://t.co/oHvmNQqA1u\">https://t.co/oHvmNQqA1u\u003C/a>\u003C/p>&mdash; Matt Lee (@mattl) \u003Ca href=\"https://twitter.com/mattl/status/1003437206462136324?ref_src=twsrc%5Etfw\">June 4, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">No problem, I mean what&#39;s not to love? You improve consistently, you listen to the community and you make using your platform feel like you&#39;re a part of something special. I support you all the way, I have no need to be \u003Ca href=\"https://twitter.com/hashtag/movingtogitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#movingtogitlab\u003C/a> as I&#39;ve used \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> for nearly 2 years now\u003C/p>&mdash; LTN Games (@LTNGames) \u003Ca href=\"https://twitter.com/LTNGames/status/1003079862058409984?ref_src=twsrc%5Etfw\">June 3, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\n## How to move to GitLab\n\nWe've tried to make it as simple as possible to migrate your projects from GitHub to GitLab.\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Had planned to spend the day moving our repos from \u003Ca href=\"https://twitter.com/github?ref_src=twsrc%5Etfw\">@github\u003C/a> to \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> following the MS rumours.. turns out  it took &lt; 5 minutes 😂 swish 👍🏻🦄 time for beer 👍🏻 \u003Ca href=\"https://twitter.com/hashtag/devops?src=hash&amp;ref_src=twsrc%5Etfw\">#devops\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/git?src=hash&amp;ref_src=twsrc%5Etfw\">#git\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/winning?src=hash&amp;ref_src=twsrc%5Etfw\">#winning\u003C/a>\u003C/p>&mdash; Aperitif (@AperitifIO) \u003Ca href=\"https://twitter.com/AperitifIO/status/1003005028590936064?ref_src=twsrc%5Etfw\">June 2, 2018\u003C/a>\u003C/blockquote>\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">It literally takes only 2 clicks to move to GitLab \u003Ca href=\"https://twitter.com/hashtag/movingtogitlab?src=hash&amp;ref_src=twsrc%5Etfw\">#movingtogitlab\u003C/a> \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> \u003Ca href=\"https://twitter.com/movingtogitlab?ref_src=twsrc%5Etfw\">@movingtogitlab\u003C/a>\u003C/p>&mdash; Pablo (@PablockMS) \u003Ca href=\"https://twitter.com/PablockMS/status/1003385604569223168?ref_src=twsrc%5Etfw\">June 3, 2018\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\nYou can read through the [documentation](https://docs.gitlab.com/ee/user/project/import/github.html) or watch the step-by-step video below.\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/VYOXuOg9tQI\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen>\u003C/iframe>\n\n## New users get a 75% discount on GitLab's top tier plans\n\nNew GitLab users can get 75 percent off [GitLab Ultimate](/pricing/) or [Gold](/pricing/#gitlab-com) for one year. GitLab Ultimate is our top-tier self-managed offering, and GitLab Gold is our top-tier SaaS offering hosted by GitLab.com. To qualify you have to:\n\n1. Be a new user of GitLab.\n1. Send a [tweet that includes #movingtogitlab](https://twitter.com/intent/tweet?text=I%27m%20%23movingtogitlab) from your account before Wednesday, June 6, 11:59pm Pacific time.\n1. Send an email to [movingtogitlab@gitlab.com](mailto:movingtogitlab@gitlab.com) with a link to the tweet.\n1. We will send you a discount code or a quote document that can be executed by you.\n1. You need to place an order at or before Saturday, June 30, 11:59pm Pacific time.\n",[804,680],{"slug":3361,"featured":6,"template":683},"movingtogitlab","content:en-us:blog:movingtogitlab.yml","Movingtogitlab","en-us/blog/movingtogitlab.yml","en-us/blog/movingtogitlab",{"_path":3367,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3368,"content":3373,"config":3378,"_id":3380,"_type":17,"title":3381,"_source":18,"_file":3382,"_stem":3383,"_extension":21},"/en-us/blog/api-v3-removal-impending",{"title":3369,"description":3370,"ogTitle":3369,"ogDescription":3370,"noIndex":6,"ogImage":967,"ogUrl":3371,"ogSiteName":671,"ogType":672,"canonicalUrls":3371,"schema":3372},"Breaking change: Support for API v3 will be removed June 4","With the removal of deprecated GitLab API v3 in GitLab 11.0, requests to the API v3 will fail.","https://about.gitlab.com/blog/api-v3-removal-impending","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Breaking change: Support for API v3 will be removed June 4\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"James Ramsay\"}],\n        \"datePublished\": \"2018-06-01\",\n      }",{"title":3369,"description":3370,"authors":3374,"heroImage":967,"date":3375,"body":3376,"category":14,"tags":3377},[2907],"2018-06-01","\nOn June 4, 2018 integrations using API v3 connected to GitLab.com will stop\nworking. With the release of GitLab 11 on June 22, 2018 the API v3 will be\nremoved completely. **Update all integrations before June 4 to avoid downtime.**\n\n\u003C!-- more -->\n\nIn the GitLab 8.17 release post, we announced the [deprecation of API v3](/releases/2017/02/22/gitlab-8-17-released/), and that support for API\nv3 would be dropped in a future release.\n\nPlease ensure that you upgrade any integrations to API v4 to avoid any\ndowntime. Documentation is available for [upgrading from v3 to v4](https://docs.gitlab.com/ee/update/).\n\n## When will this happen?\n\nThe API v3 will be removed in GitLab 11.0 on 22 June, 2018.\nPlease consider that integrations using API v3 connected to GitLab.com will\nstop working as soon as the first RC is deployed to production, and this will\nhappen around 4 June, 2018. **Update all integrations before this date**.\n",[680,912,232],{"slug":3379,"featured":6,"template":683},"api-v3-removal-impending","content:en-us:blog:api-v3-removal-impending.yml","Api V3 Removal Impending","en-us/blog/api-v3-removal-impending.yml","en-us/blog/api-v3-removal-impending",{"_path":3385,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3386,"content":3391,"config":3396,"_id":3398,"_type":17,"title":3399,"_source":18,"_file":3400,"_stem":3401,"_extension":21},"/en-us/blog/gitlab-ultimate-early-adopter-program",{"title":3387,"description":3388,"ogTitle":3387,"ogDescription":3388,"noIndex":6,"ogImage":2863,"ogUrl":3389,"ogSiteName":671,"ogType":672,"canonicalUrls":3389,"schema":3390},"Join the GitLab Ultimate Early Adopter program by June 30","GitLab Ultimate brings together strategy, execution, security, and speed for the most comprehensive DevOps experience.","https://about.gitlab.com/blog/gitlab-ultimate-early-adopter-program","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Join the GitLab Ultimate Early Adopter program by June 30\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Erica Lindberg\"}],\n        \"datePublished\": \"2018-05-23\",\n      }",{"title":3387,"description":3388,"authors":3392,"heroImage":2863,"date":3393,"body":3394,"category":14,"tags":3395},[1958],"2018-05-23","\n\nFast feedback is key to continuously delivering great software. We are looking for innovators to  take part in our Early Adopter program and help us understand how we can make [GitLab Ultimate](/pricing/) the best experience imaginable.\n\nBringing together strategy, execution, security, and speed, Ultimate is the most comprehensive GitLab experience. We shipped GitLab Ultimate last November and have been working hard to rapidly improve it. With Agile planning features such as [Epics](https://docs.gitlab.com/ee/user/group/epics/) and [Roadmap](https://docs.gitlab.com/ee/user/group/roadmap/index.html#doc-nav), and automated security features like [Static Application Security Testing](https://docs.gitlab.com/ee/user/application_security/sast/#doc-nav), [Dependency Scanning](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#doc-nav), and [Container Scanning](https://docs.gitlab.com/ee/user/application_security/container_scanning/#doc-nav), Ultimate is designed to help you align strategy with execution so you can bring big ideas to reality without compromising security.\n\n## What is the GitLab Ultimate Early Adopter program?\n\nThe GitLab Ultimate Early Adopter program is a discounted offering of GitLab Ultimate which gives you first access to all existing and new Ultimate features and the opportunity to give direct feedback and influence the [roadmap](/direction/#ultimate).\n\nWe’re looking for ambitious, security-conscious people who want to improve how software gets built in their team, business unit, or organization. And we're looking for opinionated people to test drive GitLab Ultimate and let us know how we can best help you solve your greatest collaboration, security, and efficiency challenges.\n\n### How to sign up\n\nThere are two ways to take advantage of the early adopter pricing.\n\n1. [Purchase GitLab Ultimate](/sales/) before June 30th, or\n1. [Start a free trial](/free-trial/) of GitLab Ultimate before June 15 to reserve your spot in the Early Adopter program until September 15th\n\nThe second option is designed for people at organizations that need more time to evaluate the plan before making a purchase decision. In either case, once you’ve signed up, make sure to give us feedback on what you like, and what could better by [opening an issue](https://gitlab.com/gitlab-org/gitlab-ee/issues) in the [GitLab Enterprise Edition project](https://gitlab.com/gitlab-org/gitlab-ee). You can simply give us feedback for improvement, or choose a template from the dropdown to report a bug or suggest a feature proposal.\n\n**To be eligible for the program, you must purchase GitLab Ultimate before June 30 or start a free trial of GitLab Ultimate before June 15 to reserve your spot in the Early Adopter program until September 15th.**\n{: .alert .alert-gitlab-purple}\n",[680],{"slug":3397,"featured":6,"template":683},"gitlab-ultimate-early-adopter-program","content:en-us:blog:gitlab-ultimate-early-adopter-program.yml","Gitlab Ultimate Early Adopter Program","en-us/blog/gitlab-ultimate-early-adopter-program.yml","en-us/blog/gitlab-ultimate-early-adopter-program",{"_path":3403,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3404,"content":3410,"config":3416,"_id":3418,"_type":17,"title":3419,"_source":18,"_file":3420,"_stem":3421,"_extension":21},"/en-us/blog/gitlab-issue-bash-june-2018",{"title":3405,"description":3406,"ogTitle":3405,"ogDescription":3406,"noIndex":6,"ogImage":3407,"ogUrl":3408,"ogSiteName":671,"ogType":672,"canonicalUrls":3408,"schema":3409},"Join GitLab's June Issue Bash","Join us thin June and help us squash some of the open issues in the GitLab Community Edition tracker!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680123/Blog/Hero%20Images/gitlab-issue-bash-june-2017-cover.png","https://about.gitlab.com/blog/gitlab-issue-bash-june-2018","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Join GitLab's June Issue Bash\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mark Fletcher\"}],\n        \"datePublished\": \"2018-05-09\",\n      }",{"title":3405,"description":3406,"authors":3411,"heroImage":3407,"date":3413,"body":3414,"category":14,"tags":3415},[3412],"Mark Fletcher","2018-05-09","\n\nThis June we'll be holding another of our quarterly issue bashes to allow the community to get involved in helping to squash some issues in the GitLab Community Edition issue tracker. We have over 1,900\n[GitLab contributors](http://contributors.gitlab.com/),\nand we are always looking for more people to join in and contribute to the project in any way that they can.\n\n\u003C!-- more -->\n\nOf course, some lucky contributors will be rewarded with awesome swag! 🙌\n\nCheck out [the Issue Bash landing page](/community/issue-bash/) for all the information about how it works. Please take a look there and provide any feedback to our [feedback project](https://gitlab.com/gitlab-org/issue-bash/feedback) or propose changes directly [here](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/source/community/issue-bash/index.html.haml)!\n\n## When is it going to happen?\n\nWe'll kick it off at 00:01 UTC on Saturday, **June 2nd**\nand will keep it up until 23:59 UTC on Sunday, **June 3rd**.\n\n## Who can contribute?\n\n{::options parse_block_html=\"true\" /}\n\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n&nbsp;&nbsp;\n**At GitLab, everyone can contribute!**\n&nbsp;&nbsp;\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n{: .alert .alert-webcast}\n\nThis is your chance to get involved! Most of the tasks don't require\ntechnical expertise, therefore, non-technical community\nmembers are definitely welcome and prize worthy!\n\n## How do you get involved?\n\nPlease see [the FAQ on the Issue Bash landing page](/community/issue-bash/#bash-q-a) to learn more about how to get involved.\n\n## Prizes\n\nAs prizes, we have some awesome swag available:\n\n- 14 T-shirts\n- 1 T-shirt and Hoodie for a lucky contributor\n\nUsers making any contributions to the project,\nbetween the start and end times of the event, will be entered into the random draw\nto win a prize. The contributions will be collated after the end of the event and\nprize winners, drawn at random, will be contacted in the weeks that follow.\n\nTo see how we draw winners at random please take a look at the [prize winner calculator project](https://gitlab.com/gitlab-org/issue-bash/prize-winner-calculator).\n\n## Questions? More info?\n\n[GitLab team](/company/team/) and [GitLab core team](/community/core-team/) members will be on hand to answer questions and close issues. Please mention them if you need any help or need attention on an issue.\n\n* [@markglenfletcher](https://gitlab.com/markglenfletcher)\n* [@tnir](https://gitlab.com/tnir)\n",[278,890,268,804],{"slug":3417,"featured":6,"template":683},"gitlab-issue-bash-june-2018","content:en-us:blog:gitlab-issue-bash-june-2018.yml","Gitlab Issue Bash June 2018","en-us/blog/gitlab-issue-bash-june-2018.yml","en-us/blog/gitlab-issue-bash-june-2018",{"_path":3423,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3424,"content":3430,"config":3435,"_id":3437,"_type":17,"title":3438,"_source":18,"_file":3439,"_stem":3440,"_extension":21},"/en-us/blog/new-gitlab-com-terms-of-service",{"title":3425,"description":3426,"ogTitle":3425,"ogDescription":3426,"noIndex":6,"ogImage":3427,"ogUrl":3428,"ogSiteName":671,"ogType":672,"canonicalUrls":3428,"schema":3429},"New GitLab.com Terms of Service: Coming soon","We're updating GitLab.com Terms of Service to comply with upcoming GDPR regulations.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671239/Blog/Hero%20Images/contract-document-documents-48148.jpg","https://about.gitlab.com/blog/new-gitlab-com-terms-of-service","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"New GitLab.com Terms of Service: Coming soon\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"John Jeremiah\"}],\n        \"datePublished\": \"2018-05-01\",\n      }",{"title":3425,"description":3426,"authors":3431,"heroImage":3427,"date":3432,"body":3433,"category":14,"tags":3434},[2021],"2018-05-01","\n\n## Why the change?\n\nMany of you are aware of the pending implementation of the [General Data Protection Regulation (GDPR)](/privacy/privacy-compliance/), which has specific requirements for how personal data is protected and managed. As a result of these new requirements, we will be updating our Terms of Service (TOS) and will also need to ensure that GitLab.com users are aware of the change and agree to these new terms.\n\nIn the past, we’ve been able to offer a more passive approach to accepting TOS, but going forward the new process will **require a distinct step from users to agree to them**. As a result of this change, you will be asked to review and agree to the updated TOS.\n\n**Key point:** When the new TOS and acceptance requirement goes live, **you will be unable to access** GitLab.com until you have accepted the new TOS.\n{: .alert .alert-gitlab-orange}\n\n## What do I need to do and when?\n\nBecause many of you access GitLab.com through API and Git interactions, we're planning on a two-phase implementation. The first phase will focus on users who access GitLab.com from the web. Soon, when you visit GitLab.com from the web, you will be presented with a new TOS to accept.\n\nNote, at this point, API access to and Git interactions with GitLab.com will _not yet_ be affected. If you use GitLab.com via any automated API or Git process, **please log into GitLab.com as those API/Git users and navigate to [https://gitlab.com/-/users/terms](https://gitlab.com/-/users/terms) to accept the terms.** (Note: this page will be active shortly)\n\n### May 23, 2018\n\nOn May 23, 2018, the new TOS requirement will be enforced for all traffic. At this point, all web traffic, API access, and Git interactions will be blocked for any GitLab.com user that has not accepted the new TOS. If you use GitLab.com via any automated API or Git process, access will stop working on May 23, 2018 if you have not accepted the new TOS. **Remember, if you accept the TOS by May 23 for your users, you will not experience any disruption.**\n\nWe are committed to protecting your data and your privacy and being transparent in our processes and approach. If you have any questions or concerns, please leave us a comment here.\n\n[Cover image](https://www.pexels.com/photo/sign-pen-business-document-48148/) licensed\nunder [CC X](https://www.pexels.com/photo-license/)\n{: .note}\n",[890,680],{"slug":3436,"featured":6,"template":683},"new-gitlab-com-terms-of-service","content:en-us:blog:new-gitlab-com-terms-of-service.yml","New Gitlab Com Terms Of Service","en-us/blog/new-gitlab-com-terms-of-service.yml","en-us/blog/new-gitlab-com-terms-of-service",{"_path":3442,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3443,"content":3449,"config":3454,"_id":3456,"_type":17,"title":3457,"_source":18,"_file":3458,"_stem":3459,"_extension":21},"/en-us/blog/gitlab-tiers",{"title":3444,"description":3445,"ogTitle":3444,"ogDescription":3445,"noIndex":6,"ogImage":3446,"ogUrl":3447,"ogSiteName":671,"ogType":672,"canonicalUrls":3447,"schema":3448},"New names for GitLab self-managed pricing tiers","Understand GitLab's pricing tiers and know which features your subscription gives you access to.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680136/Blog/Hero%20Images/gitlab-tiers-cover.png","https://about.gitlab.com/blog/gitlab-tiers","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"New names for GitLab self-managed pricing tiers\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"William Chia\"}],\n        \"datePublished\": \"2018-04-20\",\n      }",{"title":3444,"description":3445,"authors":3450,"heroImage":3446,"date":3451,"body":3452,"category":14,"tags":3453},[1707],"2018-04-20","\n\n_Note: We've continued to iterate on our platform and pricing model since this blog post was published in 2018. To see what's new (including everything from security and container-focused capabilities to guest users), check out our [platform](https://about.gitlab.com/platform/), [pricing](https://about.gitlab.com/pricing/), and [why GitLab](https://about.gitlab.com/why-gitlab/) pages._\n\nAt GitLab, [iteration is one of our ore values](https://handbook.gitlab.com/handbook/values/#iteration). We’ve recently iterated on the names of our self-managed pricing tiers, so [Marcia](/company/team/#XMDRamos) and I got together and wrote this post\nto catch you up on the current options. We’ll explain each tier, and share how to figure out\nwhich features your subscription gives you access to.\n\n- [GitLab deployment options](#gitlab-deployment-options)\n- [GitLab self-hosted](#gitlab-self-managed)\n- [GitLab.com](#gitlabcom)\n- [Repository architecture](#repository-architecture)\n- [Subscription model](#subscription-model)\n- [Examples of use cases](#examples)\n\n## GitLab deployment options\n\nTo use GitLab, you have two options:\n\n- **GitLab self-managed**: Install, administer, and maintain your own GitLab self-managed instance.\n- **GitLab.com**: GitLab's SaaS offering. You don't need to install anything to use GitLab.com,\nyou only need to [sign up](https://gitlab.com/users/sign_in) and start using GitLab\nstraight away.\n\n### GitLab self-managed\n\nWith GitLab self-managed, you deploy your own GitLab instance on-premises or in the cloud. From\nbare metal to Kubernetes, you can [install GitLab almost\nanywhere](/install/). GitLab self-managed has both [free\nand paid options](/pricing/):\n**Core**, **Starter**, **Premium**, and **Ultimate**.\n\nYou can see a full list of features in each self-managed tier on the [self-managed feature\ncomparison](/pricing/feature-comparison/) page. For more details on storage amounts and CI/CD minutes per month, see our [pricing page](https://about.gitlab.com/pricing/).\n\n### GitLab.com\n\nGitLab.com is hosted, managed, and administered by GitLab, Inc., with\n[free and paid options](/pricing/) for individuals\nand teams: **Free**, **Bronze**, **Silver**, and **Gold**.\n\nTo support the open source community and encourage the development of\nopen source projects, GitLab grants access to **Gold** features\nfor all GitLab.com **public** projects, regardless of the subscription.\n\nYou can see a full list of features in each GitLab.com tier on the [GitLab.com feature\ncomparison](/pricing/feature-comparison/) page.\n\n### Repository architecture\n\nWe develop GitLab from two repositories, one for GitLab Community Edition (CE)\nand another for GitLab Enterprise Edition (EE):\n\n- [GitLab CE](https://gitlab.com/gitlab-org/gitlab-ce/): open source code, [MIT-based\nlicense](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/LICENSE), from which we deliver\nGitLab CE packages.\n- [GitLab EE](https://gitlab.com/gitlab-org/gitlab-ee/): open core code, [proprietary\nlicense](https://gitlab.com/gitlab-org/gitlab-ee/blob/master/LICENSE), from which we deliver\nGitLab EE packages.\n\nGitLab EE grants you access to features by installing a license key. You\ncan also install GitLab EE and run it for free without a license key which will give you\naccess to the same features as CE. This makes it easier to upgrade later on.\n\nVisit the CE vs EE page to see [which GitLab installation method to\nchoose](/install/ce-or-ee/).\n\n### Subscription model\n\nGitLab Core contains all of the open source features of GitLab. Whether you are running GitLab\nCE or GitLab EE without a license key, you'll get access to the same Core features. The\nproprietary features of EE are unlocked by purchasing a license key.\n\nTiers are additive:\n- Starter contains all the features of Core\n- Premium contains all the features of Starter and Core\n- Ultimate contains all of the features of Premium, Starter, and Core\n\n![GitLab Core, Starter, Premium, Ultimate](https://about.gitlab.com/images/blogimages/gitlab-tiers-repos-and-tiers.jpg)\n\n### Examples\n\n- Consider a user of [GitLab Premium](/pricing/premium/) who wants to contribute to a given feature present in GitLab Core, e.g. Issue Boards. The code is submitted to the CE repo, therefore, it's open source code. The master branch of GitLab CE is then merged into GitLab EE. The CE code will be available to this Premium user in the next release.\n- Consider a user of GitLab Premium who wants to contribute to a given feature present only in Premium, e.g., Geo. The code is submitted directly to the EE repo, therefore, it's proprietary. The same is valid for Starter and Ultimate features.\n\n### Use cases\n\n#### GitLab self-managed use cases\n\n- I installed GitLab CE: I’m a Core user. I have access to Core features. The software I’m using is 100 percent open source.\n- I installed GitLab EE: the software I’m using is open core- it includes both open source and proprietary code.\n  - I don't have a subscription: I have access to Core features.\n  - I have a Starter subscription: I have access to Starter features.\n  - I have a GitLab Premium subscription: I have access to Premium features.\n  - I have a GitLab Ultimate subscription: I have access to Ultimate features.\n- I have a trial installation: I installed GitLab EE, and I’m an Ultimate user during the valid period of the trial. If the trial period expires and I don’t get a paid subscription (Starter, Premium, or Ultimate), I’ll become a Core user, with access to Core features.\n\n#### GitLab.com use cases\n\n- I use GitLab.com, a huge installation of GitLab EE. I’m using proprietary software.\n- I don’t have access to administration features as GitLab.com is administered by GitLab, Inc.\n- _Subscriptions_:\n  - I have a Bronze subscription: my private projects get access to Bronze features. My public projects get access to Gold features.\n  - I have a Silver subscription: my private projects get access to Silver features. My public projects get access to Gold features.\n  - I have a Gold subscription: my private projects get access to Gold features, as well as my public projects.\n  - I don’t have any paid subscriptions: I’m a Free GitLab.com user:\n      - I have access to Free features for private projects.\n      - I have access to Gold features for public projects.\n\n_Questions, comments? Let us know what you think below._\n",[890,723],{"slug":3455,"featured":6,"template":683},"gitlab-tiers","content:en-us:blog:gitlab-tiers.yml","Gitlab Tiers","en-us/blog/gitlab-tiers.yml","en-us/blog/gitlab-tiers",{"_path":3461,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3462,"content":3468,"config":3474,"_id":3476,"_type":17,"title":3477,"_source":18,"_file":3478,"_stem":3479,"_extension":21},"/en-us/blog/gitlab-merge-requests-in-tower",{"title":3463,"description":3464,"ogTitle":3463,"ogDescription":3464,"noIndex":6,"ogImage":3465,"ogUrl":3466,"ogSiteName":671,"ogType":672,"canonicalUrls":3466,"schema":3467},"Merge requests are coming to your desktop with Tower","GitLab users can now work with merge requests right from their desktops. A new version of Tower brings native support for all self-managed versions of GitLab and GitLab.com.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680144/Blog/Hero%20Images/gitlab-merge-requests-in-tower.png","https://about.gitlab.com/blog/gitlab-merge-requests-in-tower","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Merge requests are coming to your desktop with Tower\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Tobias Günther\"}],\n        \"datePublished\": \"2018-04-18\",\n      }",{"title":3463,"description":3464,"authors":3469,"heroImage":3465,"date":3471,"body":3472,"category":14,"tags":3473},[3470],"Tobias Günther","2018-04-18","\n\nThe concept of \"[merge requests](https://docs.gitlab.com/ee/user/project/merge_requests/)\" has changed the way we work – by redefining the way we _collaborate_. Although it's a relatively new tool, it's already hard to think back to how we worked without them.\n\nVery recently, they have even burst out of the browser and are now, finally, accessible right on your desktop: the upcoming new major version of [Tower, a Git desktop client for Mac and Windows](https://www.git-tower.com/public-beta-2018), brings native support for GitLab merge requests!\n\nThis means that working with merge requests has become even more comfortable and easy: the most common tasks can now be performed directly from your desktop! You can create, merge, comment, inspect, and close merge requests in Tower. And, since you can of course work on your MRs in Tower _and_ in the browser side by side, we've included a quick link so you can access the browser version with just a click.\n\nAt the moment, you can use the _new_ Tower for free during our Public Beta. Simply [sign up on our beta page](https://www.git-tower.com/public-beta-2018) and give it a try. You'll see that we've worked very hard to make GitLab merge requests feel at home in Tower.\n\n### Check out how the integration works in the demo below:\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/AXAyloYrgx4\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nAnd please let us know if you have [feedback for us](https://www.git-tower.com/support/contact): we're eager to help GitLab users become even more productive through Tower!\n\n## About the guest author\n\nTobias Günther is the founder and CEO of [Tower, the popular Git client for Mac and Windows](https://www.git-tower.com/).\n",[232],{"slug":3475,"featured":6,"template":683},"gitlab-merge-requests-in-tower","content:en-us:blog:gitlab-merge-requests-in-tower.yml","Gitlab Merge Requests In Tower","en-us/blog/gitlab-merge-requests-in-tower.yml","en-us/blog/gitlab-merge-requests-in-tower",{"_path":3481,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3482,"content":3488,"config":3493,"_id":3495,"_type":17,"title":3496,"_source":18,"_file":3497,"_stem":3498,"_extension":21},"/en-us/blog/telstra-invests-in-gitlab",{"title":3483,"description":3484,"ogTitle":3483,"ogDescription":3484,"noIndex":6,"ogImage":3485,"ogUrl":3486,"ogSiteName":671,"ogType":672,"canonicalUrls":3486,"schema":3487},"Telstra Ventures invests in GitLab to boost innovation and collaboration","We’re excited to announce that Telstra Ventures has invested in GitLab!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671288/Blog/Hero%20Images/gitlab-live-event.png","https://about.gitlab.com/blog/telstra-invests-in-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Telstra Ventures invests in GitLab to boost innovation and collaboration\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2018-04-16\",\n      }",{"title":3483,"description":3484,"authors":3489,"heroImage":3485,"date":3490,"body":3491,"category":14,"tags":3492},[699],"2018-04-16","\n\nTelstra Ventures, the investment arm of Australia’s leading telecommunications and technology company, has chosen to invest in GitLab for our open core DevOps philosophy that supports the entire development and operations lifecycle.\n\n“Customers are increasingly demanding better digital experiences, and DevOps is becoming the leading way for companies to develop, deliver, and support applications that drive great customer experiences,” said Mark Sherman, Managing Director at Telstra Ventures. “One of the reasons we decided to invest is because GitLab is committed to continuously improving its application, which is key to helping companies rapidly take their best ideas from development to market.”\n\n>“One of the reasons we decided to invest is because GitLab is committed to continuously improving its application, which is key to helping companies rapidly take their best ideas from development to market.”\n\nWe believe that a collaborative environment is necessary to take your best ideas to market. We know from our [2018 Global Developer Report](/developer-survey/previous/2018/) that a collaborative environment is important to you (94 percent of respondents said so!), but that visibility and transparency has some catching up to do. In addition, 55 percent of respondents are still using at least five tools for their development processes and 62 percent of respondents acknowledged losing time due to context switching between tools on a typical work day. This isn’t a good use of anyone’s time, which is why it’s our mission to deliver a single application that meets everyone’s needs.\n\nOur focus on a collaborative approach gives development, quality assurance, security, and operations teams the ability to concurrently work on the same project within a single application and to see the entire workflow from their own point of view. The same information’s all there – just presented in a way that’s relevant to each team. We published a blog post last year with more details of [our DevOps vision](/blog/devops-strategy/). This investment from Telstra is affirmation that we’re on the right track and will help accelerate our progress towards realizing this vision.\n\n“We look forward to partnering with Telstra to support its large application team and to aid the company in its vision of connecting people through technology,” said [Sid Sijbrandij](/company/team/#sytses), our CEO and co-founder. “DevOps is increasingly being adopted by organizations around the globe to radically improve productivity and the pace at which software moves from idea to market.”\n\nAs the only single software application that supports the entire DevOps lifecycle, GitLab is built from the ground up to enable collaboration amongst teams adopting the methodology. We’re happy that Telstra believes in our vision and our capability to enable software development teams to achieve faster DevOps lifecycles.\n",[890,680],{"slug":3494,"featured":6,"template":683},"telstra-invests-in-gitlab","content:en-us:blog:telstra-invests-in-gitlab.yml","Telstra Invests In Gitlab","en-us/blog/telstra-invests-in-gitlab.yml","en-us/blog/telstra-invests-in-gitlab",{"_path":3500,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3501,"content":3506,"config":3511,"_id":3513,"_type":17,"title":3514,"_source":18,"_file":3515,"_stem":3516,"_extension":21},"/en-us/blog/gke-gitlab-integration",{"title":3502,"description":3503,"ogTitle":3502,"ogDescription":3503,"noIndex":6,"ogImage":2132,"ogUrl":3504,"ogSiteName":671,"ogType":672,"canonicalUrls":3504,"schema":3505},"GitLab + Google Cloud Platform = simplified, scalable deployment","We’ve teamed up with Google Cloud Platform – here’s what that means for you.","https://about.gitlab.com/blog/gke-gitlab-integration","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab + Google Cloud Platform = simplified, scalable deployment\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2018-04-05\",\n      }",{"title":3502,"description":3503,"authors":3507,"heroImage":2132,"date":3508,"body":3509,"category":14,"tags":3510},[2489],"2018-04-05","\n\nGet super-simple deployment for your app with GitLab and Google Cloud Platform (GCP): thanks to our integration with Google Kubernetes Engine (GKE), you can now get CI/CD and Kubernetes deployment set up with just a few clicks, and [$500 credit](#get-seamless-integration-with-gke-and-500-credit-for-your-project) to get you started.\n\n## Now everyone can get automatic code quality, security testing, and no-configuration deployment\n\nWith increasing adoption of [cloud native](/topics/cloud-native/) practices, the use of [microservices](/topics/microservices/) and containers has become critical to modern software development. Kubernetes has emerged as the first choice for container orchestration, allowing apps to scale elastically from a couple of users to millions. It's been possible to deploy to Kubernetes from GitLab for quite a while, but the process of setting up and managing everything was manual and time intensive.\n\nToday, we’re happy to announce we've been collaborating with Google to make Kubernetes easy to set up on GitLab. Now, with our native [Google Kubernetes Engine integration](/partners/technology-partners/google-cloud-platform/), you can automatically spin up a cluster to deploy applications, with just a few clicks. Simply connect your Google account, enter a few details, and you're good to go! GitLab will create the clusters for you. The clusters are fully managed by Google and run on Google Cloud Platform's best-in-class infrastructure.\n\nThis also means you can easily take advantage of GitLab [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/). This feature does all the hard work for you, by automatically configuring CI/CD pipelines to build, test, and deploy your application. To make use of Auto DevOps, it used to be necessary to have an in-depth understanding of Kubernetes, and you had to manage your own clusters. Not any more!\n\nWith the integration between GitLab and GKE, we’ve made it simple to set up a managed deployment environment on Google Cloud Platform and access our robust [DevOps capabilities](/topics/devops/). That’s all the benefits of fully automated code quality, security testing, and deployment, with none of the headache of managing and updating your clusters (Google does that all for you!). More than half of developers and 78 percent of managers in our [2018 Global Developer Report](/developer-survey/) agreed that automating more of the software development lifecycle is a top priority for their organization. We hope that this integration gives you a head start, by offering automation out of the box with Kubernetes and Auto DevOps.\n\n## What’s next for GitLab?\n\nWe’re not just excited about offering this integration for you to use, we’re excited to use it ourselves! We’re already in the process of migrating GitLab.com to Google Cloud Platform. For us, the primary reason to migrate was because it has the most mature Kubernetes platform. By moving, we get access to security functionality like default encrypted data at rest, a broad, ever-expanding list of localities served globally, and tight integration with our existing CDN for faster caching. Be on the lookout for more information on our migration as it progresses.\n\n## Get seamless integration with GKE and $500 credit for your project\n\nEvery new Google Cloud Platform account receives $300 in credit [upon signup](https://console.cloud.google.com/freetrial?utm_campaign=2018_cpanel&utm_source=gitlab&utm_medium=referral). In partnership with Google, GitLab is able to offer an additional $200 for new GCP accounts to get started with GitLab’s GKE integration. Here's a link to [apply for your $200 credit](https://cloud.google.com/partners/partnercredit/?pcn_code=0014M00001h35gDQAQ#contact-form).\n\n## Join Google and GitLab for a live demo\n\nOn April 26th, join Google’s [William Denniss](https://www.linkedin.com/in/williamdenniss/) and GitLab’s [William Chia](https://www.linkedin.com/in/williamchia/) for a walkthrough of the new GKE integration. You’ll learn how easy it is to set up a Kubernetes cluster, how to deploy your app using GitLab CI/CD, and how GKE enables you to deploy, update, and manage containerized applications at scale.\n\n[Register today](/webcast/scalable-app-deploy/)!\n",[2141,1100,232,1059,995],{"slug":3512,"featured":6,"template":683},"gke-gitlab-integration","content:en-us:blog:gke-gitlab-integration.yml","Gke Gitlab Integration","en-us/blog/gke-gitlab-integration.yml","en-us/blog/gke-gitlab-integration",{"_path":3518,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3519,"content":3525,"config":3531,"_id":3533,"_type":17,"title":3534,"_source":18,"_file":3535,"_stem":3536,"_extension":21},"/en-us/blog/gitlabs-global-compensation-calculator-the-next-iteration",{"title":3520,"description":3521,"ogTitle":3520,"ogDescription":3521,"noIndex":6,"ogImage":3522,"ogUrl":3523,"ogSiteName":671,"ogType":672,"canonicalUrls":3523,"schema":3524},"GitLab’s Global Compensation Calculator: The next iteration","We released a new version of our Compensation Calculator in January – here’s what that means for new and existing GitLab team-members.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667966/Blog/Hero%20Images/global-compensation-calculator-iteration.jpg","https://about.gitlab.com/blog/gitlabs-global-compensation-calculator-the-next-iteration","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab’s Global Compensation Calculator: The next iteration\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Brittany Rohde\"}],\n        \"datePublished\": \"2018-03-23\",\n      }",{"title":3520,"description":3521,"authors":3526,"heroImage":3522,"date":3528,"body":3529,"category":14,"tags":3530},[3527],"Brittany Rohde","2018-03-23","\n\nWe know many of you have thoughts about our [Compensation Calculator](/handbook/total-rewards/compensation/compensation-calculator/#the-compensation-calculator)! We see your comments on Hacker News; we are listening and continually working on improving it. In line with our value of [iteration](https://handbook.gitlab.com/handbook/values/#iteration), we have made additional changes to our Compensation Calculator. In January 2018, we released a new version to align the calculator closer to market rates, and adjust all current team members’ pay to be in line with the outputs of the iterated version. Here’s how it works.\n\n \u003C!-- more -->\n\n## What is our new formula?\n\nYour compensation = [SF benchmark](#sf-benchmark) x (0.7 x (max (0.2, [Rent Index](#rent-index) + [Hot Market Adjustment](#hot-market-adjustment)) / 1.26) + 0.30) x [Level Factor](#level-factor) x [Experience Factor](#experience-factor) x [Contract Type Factor](#contract-type-factor) x [Country Factor](#country-factor)\n\n### SF benchmark\n\nThis is the employee salary at the 50th percentile for the role in San Francisco (SF), which we determine using various sources of market data including [Comptryx](http://www.comptryx.com/).\n\n### Rent Index\n\nThis is taken from [Numbeo](https://www.numbeo.com/cost-of-living/), which expresses the ratio of cost of rent in many metro areas. Since we are using San Francisco benchmarks, we divide by 1.26 to normalize the rent index to San Francisco. A minimum Rent Index of 0.2 is applied so no one is paid less than 41 percent of San Francisco's market.\n\nWe multiply the Rent Index by 0.7 and then add 0.3, so the sum would equal 1 (i.e. we pay San Francisco rates in San Francisco).\n\n### Hot Market Adjustment\n\nThis is an adjustment to any US-based metro area where the geographical area Rent Index is less than the Hot Market Adjustment plus the Numbeo Rent Index, to recognize that \"hot markets\" tend to have a Rent Index that is trailing (i.e. lower than) what one would expect based on compensation rates in the area.\n\n### Level Factor\n\nThis is currently defined as junior (0.8), intermediate (1.0), senior (1.2), staff (1.4), or manager (1.4), and will be defined as II (.8), III (1.0), Senior (1.2), Staff (1.4), or manager (1.4).\n\n### Experience Factor\n\nThis falls between 0.8 - 1.2 based on our [Experience Factor Guidelines](/handbook/total-rewards/compensation/compensation-calculator/#level-factor):\n\n- 0.8: New to the position requirements\n- 0.9: Learning the position requirements\n- 1: Comfortable with the requirements\n- 1.1: Thriving with the requirements\n- 1.2: Expert in the requirements\n\n### Country Factor\n\nThis is a ratio of the calculator to market data. We [determine this ratio](/handbook/total-rewards/compensation/compensation-calculator/#location-factor) by looking at how our calculator aligns to market in the region. If the calculator comes in higher than market, a factor lower than 1 is applied. If the calculator is in line with market, the factor stays at 1.\n\n### Contract Type Factor\n\nThis distinguishes between employee (1) or contractor (1.17). A contractor may carry the costs of their own health insurance, social security taxes, etc, leading to a 17 percent higher compensation for the contractor to account for the extra expenses to these GitLab team-members.\n\nThe calculator can be found on each position description. For example, take a look at our [Compensation Calculator for Developers](https://handbook.gitlab.com/job-families/engineering/backend-engineer/?area=San-Francisco_California&country=United-States&experience=0&level=Intermediate&low=96160&high=144240#compensation).\n\n## Using San Francisco Market Data\n\nThe first step in this iteration was to gather market data and incorporate it as the benchmarks for each role. After obtaining a global data set to map to our positions, we needed to decide if New York was still the right city to pivot the benchmarks around. After some analysis, we determined that San Francisco was a better source of data, so we adjusted the formula. We also analyzed and adjusted the parameters around rent index to ensure in San Francisco you make San Francisco's benchmark.\n\n## Instituting a Minimum Rent Index\n\nEarlier in 2017, we instituted a Geographical Areas iteration to the compensation calculator to ensure that there are not large pay differences in regions that have a similar job market. We looked at the rent indexes by [region](/handbook/total-rewards/compensation/compensation-calculator/#location-factor), determined any outliers on the high or low end of the rent index, and set the regional rent index at the highest of the remaining data set. With the January iteration of the compensation calculator, we also set a Minimum Rent Index so no one would be paid less than 41 percent of San Francisco’s market.\n\n## Adjusting our team’s pay\n\nWith this iteration of the compensation calculator, we wanted to align our team’s salaries according to market. We first looked at how experienced the team member is in their role by having the manager conduct an [Experience Factor Review](/handbook/total-rewards/compensation/compensation-calculator/#level-factor). This review verified we are paying our team in line with their experience, and not determining their experience to fit compensation. This review generates an output which is applied in the compensation calculator, but is also a great way to start the conversation around growth within each role. Managers and direct reports were able to review the experience factors and have constructive conversations around experience. Once we had all of the calculator inputs, including the up-to-date Experience Factor, our People Ops team reviewed all salaries to match the new compensation calculator. At the same time as the calculator was released, the increases to pay were also communicated.\n\n## What’s next, and why we think the compensation calculator is a powerful tool\n\nWe’ll continue to add more countries to our Country Factors list, review adding an additional factor for specialization within Development roles, review how the levels overlap when it comes to promotions, and review the Rent Indexes for countries with many data points (like the United States and United Kingdom).\n\nWe want to continue to make the calculator as reflective of market in as many locations as we can, given possible data constraints. This will go some way towards eliminating pay inequality among underrepresented groups, promote salary transparency on what each team member and candidate’s market value is, and save valuable recruiting time.\n\nWe also want to hear from you on where this calculator can continue to improve! Please let us know what you think in the comments.\n\n[Cover image](https://unsplash.com/photos/_zsL306fDck?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) by Antoine Dautry on [Unsplash](https://unsplash.com/search/photos/numbers?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)\n{: .note}\n",[891,890,955],{"slug":3532,"featured":6,"template":683},"gitlabs-global-compensation-calculator-the-next-iteration","content:en-us:blog:gitlabs-global-compensation-calculator-the-next-iteration.yml","Gitlabs Global Compensation Calculator The Next Iteration","en-us/blog/gitlabs-global-compensation-calculator-the-next-iteration.yml","en-us/blog/gitlabs-global-compensation-calculator-the-next-iteration",{"_path":3538,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3539,"content":3544,"config":3549,"_id":3551,"_type":17,"title":3552,"_source":18,"_file":3553,"_stem":3554,"_extension":21},"/en-us/blog/gitlabs-2018-product-vision",{"title":3540,"description":3541,"ogTitle":3540,"ogDescription":3541,"noIndex":6,"ogImage":3485,"ogUrl":3542,"ogSiteName":671,"ogType":672,"canonicalUrls":3542,"schema":3543},"GitLab's 2018 Product Vision: Prototype demo","Take an early look at where we're heading this year.","https://about.gitlab.com/blog/gitlabs-2018-product-vision","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab's 2018 Product Vision: Prototype demo\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mark Pundsack\"}],\n        \"datePublished\": \"2018-02-26\",\n      }",{"title":3540,"description":3541,"authors":3545,"heroImage":3485,"date":3546,"body":3547,"category":14,"tags":3548},[1373],"2018-02-26","\nAt GitLab, we believe there's something magical about a video demo as a way to\n[convey strategic\nvision](/handbook/product/index.html#communicating-product-vision). We've\ncreated this video to internally align where we're going; and since we're\n[transparent by\ndefault](https://handbook.gitlab.com/handbook/values/#transparency), you get to see\nit as well!\n\n\u003C!-- more -->\n\nSo sit back, [watch the video](https://youtu.be/RmSTLGnEmpQ), follow\nalong with [the\npresentation](https://docs.google.com/presentation/d/19dZ1Y4us11B_96YoXvgQL4aBXPy2iNYRId0vmTulnnQ/edit?usp=sharing),\nor read below for a lightly edited transcript of the video. You can also [play\nwith the prototype](https://framer.cloud/UaofH/index.html) yourself (click the\nheader to move to the next page, click the left sidebar to move back) or\n[follow our progress](/direction/).\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/RmSTLGnEmpQ\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## Introduction\n\nToday I’m going to talk about GitLab’s product vision for 2018. Specifically,\nI’m going to show a prototype of what the product might look like.\n\nAs you can imagine with a product vision as extensive as ours, there’s a lot to\ncover. So if you only remember three things from this presentation, know that:\n\n1. We’re going after the **complete DevOps** lifecycle, and specifically,\n2. we want **Operations and Security** to use GitLab as a primary interface, and\n3. a [single application](/topics/single-application/) covering this entire scope brings emergent benefits, specifically that people can work **concurrently**, on the same data, with the same interface.\n\nSo hopefully it’s\n[obvious](/blog/devops-strategy/)\n[by](/blog/gitlab-raises-20-million-to-complete-devops/)\n[now](/blog/from-dev-to-devops/) that we’re going\nfrom covering the development lifecycle to covering the entire DevOps lifecycle.\n\n\u003Cimg src=\"/images/blogimages/2018-product-vision/dev2devops.png\" alt=\"Dev to DevOps\" style=\"width: 700px;\"/>{: .shadow}\u003Cbr/>\n*\u003Csmall>From Dev to DevOps\u003C/small>*\n\nBut traditional DevOps tools only focus on the intersection between Dev and Ops,\nand GitLab is going to deliver a complete scope for both Dev and Ops. In\nparticular, that means we’re not just looking at how Developers can get their\ncode into production, but how Operations can then monitor and manage those\napplications and underlying infrastructure. A big milestone for GitLab will be\nwhen Operations people log into GitLab every day and consider it their main\ninterface for getting work done.\n\nBut even that’s not really sufficient, as we’re redefining what the scope of\nDevOps even is; we’re also covering Security and Business needs (such as project\nmanagers). Rather than coming up with some crazy DevSecBizOps name, we’re just\ncalling it DevOps, and putting it all into a single application.\n\n\u003Cimg src=\"/images/blogimages/2018-product-vision/devsecbizops.png\" alt=\"DevSecBizOps\" style=\"width: 700px;\"/>{: .shadow}\u003Cbr/>\n*\u003Csmall>No DevSecBizOps; a single application for DevOps\u003C/small>*\n\nAnd with that, each group gets an experience tailored to their needs, but shares\nthe same data and interface as everyone else, so collaboration is easy. Imagine\nan Ops person finds an issue in production, drills down to find the application\nwith the problem, and sees that a recent deploy caused the problem.\nSimultaneously, a dev gets alerted that their recent deploy triggered a change\nin production, goes to the merge request and sees the performance change right\nthere. When Dev, Ops, and Security talk, they’re looking at the same data, but\nfrom their own point of view.\n\nNow the scope we’re going after is quite large, with a lot of new categories\nbeing introduced this year. I won’t go into all of these today, but instead I\nwant to focus on a couple flows that paint a picture of how this could look.\n\n\u003Cimg src=\"/images/blogimages/2018-product-vision/product-categories.png\" alt=\"Product categories\" style=\"width: 700px;\"/>{: .shadow}\u003Cbr/>\n*\u003Csmall>New product categories in 2018\u003C/small>*\n\n## Interactive prototype\n\nFor this, I’ll switch over to an [interactive\nprototype](https://framer.cloud/UaofH/index.html). *[Note: if you want to try it for yourself, click the header to\nmove to the next page, click the left sidebar to move back.]* While this may\nlook like a fully functioning instance of GitLab, it is just a demo and many of\nthese features have not been implemented yet.\n\n### Development flow\n\nI’ll start by showing a merge request.\n\n\u003Cimg src=\"/images/blogimages/2018-product-vision/development.png\" alt=\"Developer Flow\" style=\"width: 700px;\"/>{: .shadow}\u003Cbr/>\n*\u003Csmall>Developer Flow: Merge Request\u003C/small>*\n\nOne of the new elements we see is a “Test summary” which shows a deeper\nunderstanding of your test results. Using standard JUnit XML output, we can tell\nexactly which tests fail, and provide that information in a nice summary format.\n\nWe also see links to the binary artifacts and container images associated with\nthis merge request.\n\nAs I scroll down, we see a lot of information about the extensive collection of\ntests we’ve run on the code.\n\nFirst we see the code quality section, which we’ve had for a while.\n\nThen the relatively new Security section with static [application security\ntesting](/topics/devsecops/) to find vulnerabilities in your *code* or your code's dependencies,\ndynamic application security testing to find vulnerabilities while actually\n*running your app*, and an analysis of any vulnerabilities in any of your\nunderlying Docker layers.\n\nWe’ll also show how your application performance has changed.\n\nAnd lastly, we’ll check your dependencies for any violations of your company’s\nlicense policy.\n\nNow, this is a LOT to cover for every merge request, so we have separate issues\nto redesign for all this new information, but I wanted to show it all to you now\nto see how much we’re doing automatically for you.\n\nDown below all of that is an enhanced code diff that highlights any code you\nshould pay attention to because of code quality concerns or missing test\ncoverage.\n\n\u003Cimg src=\"/images/blogimages/2018-product-vision/code-coverage.png\" alt=\"code coverage\" style=\"width: 700px;\"/>{: .shadow}\u003Cbr/>\n*\u003Csmall>Code coverage and alerts\u003C/small>*\n\nThis is all part of the “shift left” movement, where important quality,\nsecurity, and performance tests that may have once been run manually, if at all,\nand usually much later in the development lifecycle, are now being run\nautomatically as soon as the first code is written.\n\nThere’s a lot more planned, but this is a good idea of the direction we’re going\nin to help Developers get their ideas into production faster.\n\n### Operations flow\n\nBut that only covers part of our vision, because there’s also\nthe Operations point of view. And a big milestone for our DevOps vision is when\nOperations start using GitLab as their primary interface.\n\n\u003Cimg src=\"/images/blogimages/2018-product-vision/operations-health.png\" alt=\"Operations health\" style=\"width: 700px;\"/>{: .shadow}\u003Cbr/>\n*\u003Csmall>Operations flow: operations health dashboard\u003C/small>*\n\nThere’s a long way to go, but here we’re answering the question, “How is\nproduction doing?” In this case we’re seeing a group with four projects in it, and\na quick green/yellow/red indicator of how those projects are doing. We’ve put a\ngraph of the Apdex score there to represent the one-metric-to-watch.\n\nBelow the projects is a view of the cluster, including CPU and memory usage,\npossibly indicating when you need to scale up or down the cluster size.\n\nNow, if there was an indication that something was wrong, you’d be able to drill\ndown and see more details and rectify the situation.\n\nBut that’s only the first-level understanding of operations. I mean, if we’ve\ngot the data about how things are doing, why not proactively alert you to the\nproblem? Well, that’s the second level, and a natural step. But we’re not going\nto stop there. The third level is to automatically detect *and resolve* any\nissues. If your app needs more resources, just autoscale it. If you then hit a\nlimit on the cluster, well, add a node to the cluster automatically. The\nOperations experience then should really just be that I go to work in the morning\nand see an email summary of what has happened, without me having to do anything.\n\nBut autoscaling is just scratching the surface, as Operations involves a lot\nmore, from application, infrastructure, and network monitoring, to security\npatches. After we’ve got this breadth as a structure, we look forward to the\ncustomer feature requests.\n\n### Security flow\n\nSo that covers Dev and Ops, but we’ve got a lot of security\nfeatures in the product now. How about treating Security folks as first-class\ncitizens and giving them their own Security Audit view?\n\n\u003Cimg src=\"/images/blogimages/2018-product-vision/security-audit.png\" alt=\"Security audit\" style=\"width: 700px;\"/>{: .shadow}\u003Cbr/>\n*\u003Csmall>Security flow: security audit\u003C/small>*\n\nThis is your one-stop-shop to see what security vulnerabilities have been\ndetected across the group, showing any automatic or manual actions taken to\naddress the vulnerabilities, and of course letting you click into details.\n\nIn the top left we’re reporting an overall success rate in hitting our own\ninternal SLAs for security vulnerabilities.\n\n### Full circle\n\nLet’s drill down on one of these vulnerabilities.\n\n\u003Cimg src=\"/images/blogimages/2018-product-vision/automatic-updates.png\" alt=\"Automatic updates\" style=\"width: 700px;\"/>{: .shadow}\u003Cbr/>\n*\u003Csmall>Automatic updates for security vulnerabilities\u003C/small>*\n\nWe see that the GitLab Bot automatically created a merge request to upgrade one\nof our dependencies because it noticed that a new version was released.\n\nSince the tests all pass, and of course the merge request fixed the\nvulnerability, the merge request was automatically merged by the Bot as well.\n\nBut, to bring it full circle, l’m showing here that after merging, the CI/CD\npipeline started deploying automatically to Production. I mean, why leave a\nknown, fixable security vulnerability live any longer than it needs to, right?\n\nBut, in this case, even though all tests passed, we still saw the error rate\njump to more than five percent, so we automatically stopped the rollout process, and\nactually rolled back to the last-known good version immediately.\n\nThen, the Bot detects this and automatically reverts the merge request so we can\nleave `master` in a good state.\n\nPhew.\n\n## Summary\n\nSo, wrapping it up:\n1. We’re going after the **complete DevOps** lifecycle,\n2. we want **Operations and Security** to be our new favorite users, and\n3. we want teams working **concurrently**.\n\nAnd that’s the GitLab Product Vision for 2018!\n",[890,723],{"slug":3550,"featured":6,"template":683},"gitlabs-2018-product-vision","content:en-us:blog:gitlabs-2018-product-vision.yml","Gitlabs 2018 Product Vision","en-us/blog/gitlabs-2018-product-vision.yml","en-us/blog/gitlabs-2018-product-vision",{"_path":3556,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3557,"content":3563,"config":3568,"_id":3570,"_type":17,"title":3571,"_source":18,"_file":3572,"_stem":3573,"_extension":21},"/en-us/blog/european-general-data-protection-regulation-law",{"title":3558,"description":3559,"ogTitle":3558,"ogDescription":3559,"noIndex":6,"ogImage":3560,"ogUrl":3561,"ogSiteName":671,"ogType":672,"canonicalUrls":3561,"schema":3562},"If you do business in Europe, you need to know about GDPR","You may be affected by European Union’s General Data Protection Regulation – here's what you need to know.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680218/Blog/Hero%20Images/gdpr-european-parliament.jpg","https://about.gitlab.com/blog/european-general-data-protection-regulation-law","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"If you do business in Europe, you need to know about GDPR\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Aricka Flowers\"}],\n        \"datePublished\": \"2018-02-16\",\n      }",{"title":3558,"description":3559,"authors":3564,"heroImage":3560,"date":3565,"body":3566,"category":14,"tags":3567},[2715],"2018-02-16","\n\nAn explainer on the European Union’s General Data Protection Regulation, which is set to take effect in May 2018.\n\n\u003C!-- more -->\n\nIf your company does business involving the personal data of EU residents through the offering of services and goods or otherwise, there's a good chance that your firm may need to be compliant with the European Union’s General Data Protection Regulation (GDPR).\n\nThe law will go into effect on May 25 and replaces the EU’s 1995 Data Protection Directive. It’s meant to give EU residents more control over their personal data, specifically in how it is collected, controlled, and processed. As a result, companies that control and/or process the personal information of EU residents for their own company’s purposes, or on behalf of another business, will be required to adhere to GDPR standards.\n\n## FAQs\n\n### What counts as personal data?\n\n Personal data includes a vast range of information including social security numbers, gender, location, ethnicity, online identifiers, and genetic or biometric markers, such as fingerprints and facial recognition.\n\n### What are data controllers?\n\nControllers are a company or organization that determines the purpose for and manner in which personal data is processed.\n\nControllers can also be processors.\n\n### What are data processors?\n\nData processors take the information controllers have accumulated and process the personal information.\n\n### What do companies need to do to be compliant?\n\n- Have a legal basis for data collection and processing\n- Be transparent about how the data is collected and used\n- Provide prompt notification of security breaches\n- Put data protection safeguards in place early in the development process and as the default setting in their products and services\n\nIt is recommended that companies conduct data discovery activities like data mapping and a gap analysis in order to get a true handle on the amount and nature of the personal data they control and process. A recent report from Forrester warned against approaching GDPR readiness from a fragmented framework that relies heavily on IT for specific compliance requirements – like focusing on data breach notifications, stating that such tactics are “short-sighted, and most likely will need radical revision after the enforcement of GDPR rules start in May.”\n\nFailure to comply with the GDPR requirements could result in serious penalties, with the worst case scenario being a fine of €20 million or 4 percent of the company’s previous year’s total global revenue, whichever is greater.\n\nFor a more detailed look at the law and how organizations can ensure they’re compliant, check out [GitLab’s GDPR page](/privacy/privacy-compliance/).\n\nCover image licensed under [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.en)\n{: .note}\n",[680],{"slug":3569,"featured":6,"template":683},"european-general-data-protection-regulation-law","content:en-us:blog:european-general-data-protection-regulation-law.yml","European General Data Protection Regulation Law","en-us/blog/european-general-data-protection-regulation-law.yml","en-us/blog/european-general-data-protection-regulation-law",{"_path":3575,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3576,"content":3581,"config":3586,"_id":3588,"_type":17,"title":3589,"_source":18,"_file":3590,"_stem":3591,"_extension":21},"/en-us/blog/gitlab-issue-bash-march-2018",{"title":3577,"description":3578,"ogTitle":3577,"ogDescription":3578,"noIndex":6,"ogImage":3407,"ogUrl":3579,"ogSiteName":671,"ogType":672,"canonicalUrls":3579,"schema":3580},"Join GitLab's March 2018 Issue Bash","Help us to squash some of the open issues in the GitLab Community Edition tracker!","https://about.gitlab.com/blog/gitlab-issue-bash-march-2018","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Join GitLab's March 2018 Issue Bash\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mark Fletcher\"}],\n        \"datePublished\": \"2018-02-15\",\n      }",{"title":3577,"description":3578,"authors":3582,"heroImage":3407,"date":3583,"body":3584,"category":14,"tags":3585},[3412],"2018-02-15","\n\nThis March we'll be holding another of our quarterly issue bashes to allow the community to get involved in helping to squash some issues in the GitLab Community Edition issue tracker. We have over 1,900\n[GitLab contributors](http://contributors.gitlab.com/),\nand we are always looking for more people to join in and contribute to the project in any way that they can.\n\n\u003C!-- more -->\n\nOf course, some lucky contributors will be rewarded with awesome swag! 🙌\n\nWe now have [the issue bash landing page](/community/issue-bash/) with all the information about how exactly the Issue Bash works. Please take a look there and provide any feedback to our [feedback project](https://gitlab.com/gitlab-org/issue-bash/feedback) or propose changes directly [here](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/source/community/issue-bash/index.html.haml)!\n\n## When is it going to happen?\n\nWe'll kick it off at 00:01 UTC on Saturday, **March 3rd**\nand will keep it up until 23:59 UTC on Sunday, **March 4th**.\n\n## Who can contribute?\n\n{::options parse_block_html=\"true\" /}\n\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n&nbsp;&nbsp;\n**At GitLab, everyone can contribute!**\n&nbsp;&nbsp;\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n{: .alert .alert-webcast}\n\nThis is your chance to get involved! Most of the tasks don't require\ntechnical expertise, therefore, non-technical community\nmembers are definitely welcome and prize worthy!\n\n## How do you get involved?\n\nPlease see [the FAQ on the Issue Bash landing page](/community/issue-bash/#bash-q-a) to learn more about how to get involved.\n\n## Prizes\n\nAs prizes, we have some awesome swag available:\n\n- 14 T-shirts\n- 1 T-shirt and Hoodie for a lucky contributor\n\nUsers making any contributions to the project,\nbetween the start and end times of the event, will be entered into the random draw\nto win a prize. The contributions will be collated after the end of the event and\nprize winners, drawn at random, will be contacted in the weeks that follow.\n\nTo see how we draw winners at random please take a look at the [prize winner calculator project](https://gitlab.com/gitlab-org/issue-bash/prize-winner-calculator)\n\n## Questions? More info?\n\n[GitLab team](/company/team/) and [GitLab core team](/community/core-team/) members will be on hand to answer questions and close issues. Please mention them if you need any help or need attention on an issue\n\n* [@markglenfletcher](https://gitlab.com/markglenfletcher)\n* [@tnir](https://gitlab.com/tnir)\n",[268,278,804],{"slug":3587,"featured":6,"template":683},"gitlab-issue-bash-march-2018","content:en-us:blog:gitlab-issue-bash-march-2018.yml","Gitlab Issue Bash March 2018","en-us/blog/gitlab-issue-bash-march-2018.yml","en-us/blog/gitlab-issue-bash-march-2018",{"_path":3593,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3594,"content":3600,"config":3605,"_id":3607,"_type":17,"title":3608,"_source":18,"_file":3609,"_stem":3610,"_extension":21},"/en-us/blog/using-gitlab-to-manage-house-renovation-priorities",{"title":3595,"description":3596,"ogTitle":3595,"ogDescription":3596,"noIndex":6,"ogImage":3597,"ogUrl":3598,"ogSiteName":671,"ogType":672,"canonicalUrls":3598,"schema":3599},"Using GitLab to project manage home renovation priorities","Solutions Architect Brendan O'Leary shares how he and his family use GitLab Issue Boards for an unconventional purpose: home improvement prioritization!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680235/Blog/Hero%20Images/home-improvement.jpg","https://about.gitlab.com/blog/using-gitlab-to-manage-house-renovation-priorities","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Using GitLab to project manage home renovation priorities\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Brendan O'Leary\"}],\n        \"datePublished\": \"2018-02-08\",\n      }",{"title":3595,"description":3596,"authors":3601,"heroImage":3597,"date":3602,"body":3603,"category":14,"tags":3604},[1747],"2018-02-08","\n\nLast summer my wife and I bought a new house for our ever-growing family. Before we moved in, we had a couple of improvements made – wood floors to replace the aging carpet in the master bedroom, some required structural fixes. However, when we bought the house, we knew there would be a lot more we wanted to do over the years. When it came to organizing those ideas into things that need to happen sooner rather than later and those that could wait, however, we found ourselves struggling to keep all of the plans in order.\n\n\u003C!-- more -->\n\n## Trying to get organized\n\nI've been able to complete a few other projects since we moved in – but most were small in scale. A built-in shelf wall for my wife's office, painting and staining the new deck, and of course a DIY standing desk to use in my new office kitchen (which is also the house's kitchen... [working from home for the win!](/company/culture/all-remote/)). These projects were great, but we needed a way to organize and prioritize larger renovation projects.\n\n![Home improvement examples](https://about.gitlab.com/images/blogimages/home-improvement-examples.png){: .shadow}\n\n*\u003Csmall>Clockwise, from left: built-in shelf wall, painted and stained deck, DIY standing desk\u003C/small>*\n\nI was a GitLab user for years before I even became a GitLab team-member. I've always hosted my side-project code in GitLab.com since GitLab offers [unlimited private repositories](/pricing/#gitlab-com) for free. For project management in my \"day job\" I've used dozens of other tools outside of GitLab, so when I joined it was the first time I saw the full breadth of what GitLab offers in issue management.\n\nIn thinking about the other tools I've used in the past, they didn't seem to meet the full bar of what I was looking for to solve our problem. As a mother of four young children, my wife is always on the go... but I'm on a computer all day long. So we needed something that worked seamlessly between platforms. We also needed to be able to easily re-arrange and re-prioritize items. Also, I fancy myself a bit of a DIY-er, so I wanted to be able to label some items as at least *possible* for me to maybe complete myself. All of these requirements had me wondering what tool would be best for my wife and me to collaborate on.\n\n## Enter GitLab Issue Boards\n\nWith these requirements, and my newfound GitLab knowledge, I was able to come up with a novel solution to the problem we were having: why not use a [GitLab Issue Board](/stages-devops-lifecycle/issueboard/) to manage our ever-changing home renovation priorities?\n\nWith Issue Boards, we would have a fantastic solution for mobile and desktop (shout out to the [GitLab UX team](https://docs.gitlab.com/ee/development/ux_guide/)!). With [labels](https://docs.gitlab.com/ee/user/project/labels.html), I could organize and group issues however we wanted. And the customizable columns would allow us to prioritize, track and manage the various issues and ideas.\n\n## How the board works\n\nTo start, I [created a new group on GitLab.com](https://gitlab.com/groups/new) to house (pun intended) everything for our family. I made a project in that group called `priorities` to be the central place to collect all the renovation ideas we had. In the future, I may have a project for a specific renovation, managing purchases, and contractors, etc.\n\nAs with every GitLab project, issues and issue boards were baked right in. I started adding issues right away – beginning with those that were at the top of mind, like the water heater that is at the end of its usable life, repairs to our front entryway, and window replacement.  My wife didn't have a GitLab.com account yet, but it was easy to add her to the project as a member just by putting her email address in on the member's page, allowing her to sign up and get access to the project in one step.\n\n![Invite member by e-mail](https://about.gitlab.com/images/blogimages/invite-member-by-email.png){: .shadow}\n\nTo get organized, I created a few labels: `P1` for top priority items, `DIY Possibility` for those I might be able to tackle on my own, and `Furniture` for those that involved furnishing various rooms. The labels will help filter issues so that if I find a free weekend, I can search for `DIY Possibility` issues to maybe get started on. Or if we go to a furniture store, we could filter to those issues to get an idea of cost while we are there.\n\nFor the board columns, I decided to use `P1` as the first column after Backlog to highlight those issues. From there, it's a matter of agreeing on an organization of priority 😃\n\n![Home improvement issue board](https://about.gitlab.com/images/blogimages/home-improvement-issue-board.png){: .shadow}\n\n## Where to go next\n\nNow it's time to execute! One thing we didn't account for in the first iteration was the scope of issues. Some things were relatively minor regarding time and investment. Others (like replacing all 27 windows!) are larger projects for which we need to budget. For this, we will be using [issue weight](https://docs.gitlab.com/ee/user/project/issues/issue_weight.html) to understand how different projects align with budget and time investment to pull off.\n\nIt's been an exciting experience using GitLab Issue Boards for something outside of the development space. We'd love to hear from you too about \"non-standard\" uses for GitLab's features. Feel free to comment on this post or tweet us [@GitLab](https://twitter.com/gitlab).\n\n*Cover photo by [George Pastushok](https://unsplash.com/photos/d0yNnTEjEWY?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/)*\n{: .note}\n",[890,1479],{"slug":3606,"featured":6,"template":683},"using-gitlab-to-manage-house-renovation-priorities","content:en-us:blog:using-gitlab-to-manage-house-renovation-priorities.yml","Using Gitlab To Manage House Renovation Priorities","en-us/blog/using-gitlab-to-manage-house-renovation-priorities.yml","en-us/blog/using-gitlab-to-manage-house-renovation-priorities",{"_path":3612,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3613,"content":3619,"config":3625,"_id":3627,"_type":17,"title":3628,"_source":18,"_file":3629,"_stem":3630,"_extension":21},"/en-us/blog/balanced-piaa",{"title":3614,"description":3615,"ogTitle":3614,"ogDescription":3615,"noIndex":6,"ogImage":3616,"ogUrl":3617,"ogSiteName":671,"ogType":672,"canonicalUrls":3617,"schema":3618},"Announcing a more balanced Proprietary Information and Assignment Agreement","We've amended our PIAA to help our contributors maintain their ability to work on projects that are unrelated to GitLab business, including other open source projects.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670464/Blog/Hero%20Images/gitlab-loves-open-source.jpg","https://about.gitlab.com/blog/balanced-piaa","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Announcing a more balanced Proprietary Information and Assignment Agreement\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jamie Hurewitz\"}],\n        \"datePublished\": \"2017-12-18\",\n      }",{"title":3614,"description":3615,"authors":3620,"heroImage":3616,"date":3622,"body":3623,"category":14,"tags":3624},[3621],"Jamie Hurewitz","2017-12-18","\n\nWe recently [switched from a Contributor License Agreement (CLA) to a Developer's Certificate of\nOrigin (DCO)](/blog/gitlab-switches-to-dco-license/)\nto make it easier for everyone to contribute to GitLab. Now, we're taking our commitment to\nour core tenet, \"everyone can contribute,\" a step further. We're amending our Proprietary\nInformation and Assignment Agreement (PIAA) and putting clarifying processes in\nplace to help our contributors maintain their ability to work on projects that\nare unrelated to GitLab's business, including other open source projects.\n\n\u003C!-- more -->\n\nGitHub [announced the Balanced Employee Intellectual Property Agreement](https://github.com/blog/2337-work-life-balance-in-employee-intellectual-property-agreements)\n(BEIPA), an open source intellectual property (IP) agreement which seeks to take\na more balanced approach to assigning control over IP. We want to\nthank GitHub for taking the lead on a very important conversation. Their new\napproach inspired us to take a closer look at our own PIAA, make improvements to better clarify our\nposition, and encourage our contributors to work on projects outside of GitLab if they want to.\n\nWe [recently launched a Twitter poll](https://twitter.com/gitlab/status/938921270913019904)\nto assess the potential risk IP agreements pose to developers in our community.\nWe found that the majority of developers (85 percent) have a side project and nearly half\n(44 percent) have worried about the IP ownership of that project. Forty-four percent\nsay they have used company resources for a side project, potentially putting them\nat risk of violating their workplace IP agreement.\n\nAt GitLab, we want to give our contributors confidence that their developments\nwill *not* be owned by GitLab simply by virtue of their use of GitLab-issued computers,\nGitLab facilities, or the GitLab source code repository. Furthermore, we want to\nalleviate stress of not knowing whether they are in violation, given that there\nis necessarily some ambiguity about which projects relate to or don't relate to\nour business. So, we are making some changes.\n\nOne of [our values is boring solutions](https://handbook.gitlab.com/handbook/values/#efficiency).\nWith this in mind we looked at either adopting the BEIPA outright or contributing\nto the document. After considerable thought we concluded that it wasn’t possible\nto make either of these approaches work. Accordingly, we focused on improving our\nexisting PIAA.\n\n## Why the change?\n\nThe industry standard for intellectual property agreements tend to assign a broad\nswath of IP to the employer, making it difficult for a contributor to work on\noutside projects without being in violation of the agreement. The most important\npiece of any employee agreement is the definition of what IP is assigned from the\nemployee to the company.\n\nThe industry standard is to define the scope of the IP definition in three buckets:\n\n1. IP that relates to the current or prospective business of the company\n2. IP created by the employee as part of its work for the company\n3. IP created using materials, facilities, funding, or confidential information of the company\n\nWe want to alleviate the unnecessary risks posed to contributors posed by buckets 1 and 3 above.\n\n## What's changing\n\nAs a result of our internal review, we are making three important changes to our PIAA\nand processes related to outside creations developed by our contributors:\n\n1. We have entirely eliminated the section in our PIAA that would grant GitLab ownership\nin developments simply by virtue of the use of GitLab equipment, including\nGitLab-issued computers, GitLab facilities, or GitLab.com as a software\ndevelopment platform.\n\n2. In the event there is concern on our contributor’s behalf that there may be a gray\narea, we have created a process whereby GitLab can confirm that the development is\noutside the scope of GitLab’s business.\n\n3. We have [added plain language text to our publicly viewable Handbook](/handbook/people-group/contracts-probation-periods/#approval-for-outside-projects) that clarifies\nwhen contributors should seek further assurances from GitLab and when\nthey shouldn’t.  \n\nOur goal is to give contributors a way to gain confidence in their ability to pursue\nindependent projects ahead of time, and reduce the risk of potential conflicts down the line.\n",[680,804,890],{"slug":3626,"featured":6,"template":683},"balanced-piaa","content:en-us:blog:balanced-piaa.yml","Balanced Piaa","en-us/blog/balanced-piaa.yml","en-us/blog/balanced-piaa",{"_path":3632,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3633,"content":3638,"config":3643,"_id":3645,"_type":17,"title":3646,"_source":18,"_file":3647,"_stem":3648,"_extension":21},"/en-us/blog/gitlab-issue-bash-december-2017",{"title":3634,"description":3635,"ogTitle":3634,"ogDescription":3635,"noIndex":6,"ogImage":3407,"ogUrl":3636,"ogSiteName":671,"ogType":672,"canonicalUrls":3636,"schema":3637},"Join GitLab's December Issue Bash","Join us December 2017 and help us to squash some of the open issues in the GitLab Community Edition tracker!","https://about.gitlab.com/blog/gitlab-issue-bash-december-2017","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Join GitLab's December Issue Bash\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mark Fletcher\"}],\n        \"datePublished\": \"2017-11-20\",\n      }",{"title":3634,"description":3635,"authors":3639,"heroImage":3407,"date":3640,"body":3641,"category":14,"tags":3642},[3412],"2017-11-20","\n\nThis December we'll be holding another of our quarterly issue bashes to allow the community to get involved in helping to squash some issues in the GitLab Community Edition issue tracker. We have over 1,800\n[GitLab contributors](http://contributors.gitlab.com/contributors/),\nand we are always looking for more people to join in and contribute to the project in any way that they can.\n\n\u003C!-- more -->\n\nOf course, some lucky contributors will be rewarded with awesome swag! 🙌\n\nWe now have [the issue bash landing page](/community/issue-bash/) with all the information about how exactly the Issue Bash works. Please take a look there and provide any feedback to our [feedback project](https://gitlab.com/gitlab-org/issue-bash/feedback) or propose changes directly [here](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/source/community/issue-bash/index.html.haml)!\n\n## When is it going to happen?\n\nWe'll kick it off at 00:01 UTC on Saturday, **December 16th**\nand will keep it up until 23:59 UTC on Sunday, **December 17th**.\n\n## Who can contribute?\n\n{::options parse_block_html=\"true\" /}\n\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n&nbsp;&nbsp;\n**At GitLab, everyone can contribute!**\n&nbsp;&nbsp;\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n{: .alert .alert-webcast}\n\nThis is your chance to get involved! Most of the tasks don't require\ntechnical expertise, therefore, non-technical community\nmembers are definitely welcome and prize worthy!\n\n## How do you get involved?\n\nPlease see [the FAQ on the Issue Bash landing page](/community/issue-bash/#bash-q-a) to learn more about how to get involved.\n\n## Prizes\n\nWe have some awesome swag available to as prizes:\n\n- Five T-shirts\n- Four pairs of pajama pants\n- Three Moleskine notebooks\n- Two [PocketCHIPs](https://getchip.com/pages/pocketchip)\n- One messenger bag (filled with all the stuff listed above!)\n\n![GitLab Issue Bash - Prizes](https://about.gitlab.com/images/blogimages/gitlab-issue-bash-june-2017-prizes.png)\n\nUsers making any contributions to the project,\nbetween the start and end times of the event, will be entered into the random draw\nto win a prize. The contributions will be collated after the end of the event and\nprize winners, drawn at random, will be contacted in the weeks that follow.\n\nTo see how we draw winners at random please take a look at the [prize winner calculator project](https://gitlab.com/gitlab-org/issue-bash/prize-winner-calculator)\n\n## Questions? More info?\n\n[GitLab team](/company/team/) and [GitLab core team](/community/core-team/) members will be on hand to answer questions and close issues. Please mention them if you need any help or need attention on an issue\n\n* [@markglenfletcher](https://gitlab.com/markglenfletcher)\n* [@tnir](https://gitlab.com/tnir)\n* [@blackst0ne](https://gitlab.com/blackst0ne)\n",[278,268,804],{"slug":3644,"featured":6,"template":683},"gitlab-issue-bash-december-2017","content:en-us:blog:gitlab-issue-bash-december-2017.yml","Gitlab Issue Bash December 2017","en-us/blog/gitlab-issue-bash-december-2017.yml","en-us/blog/gitlab-issue-bash-december-2017",{"_path":3650,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3651,"content":3656,"config":3661,"_id":3663,"_type":17,"title":3664,"_source":18,"_file":3665,"_stem":3666,"_extension":21},"/en-us/blog/gitlab-switches-to-dco-license",{"title":3652,"description":3653,"ogTitle":3652,"ogDescription":3653,"noIndex":6,"ogImage":3616,"ogUrl":3654,"ogSiteName":671,"ogType":672,"canonicalUrls":3654,"schema":3655},"We're switching to a DCO for source code contributions","We want to make it even easier for everyone to contribute, by doing away with our Contributor License Agreement in favor of the Developer's Certificate of Origin.","https://about.gitlab.com/blog/gitlab-switches-to-dco-license","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"We're switching to a DCO for source code contributions\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jamie Hurewitz\"}],\n        \"datePublished\": \"2017-11-01\",\n      }",{"title":3652,"description":3653,"authors":3657,"heroImage":3616,"date":3658,"body":3659,"category":14,"tags":3660},[3621],"2017-11-01","\n\nWe're committed to being [good stewards of open source](/blog/being-a-good-open-source-steward/),\nand part of that commitment means we never stop re-evaluating how we do that.\nSaying \"everyone can contribute\" is about removing barriers to contribution.\nFor some of our community, the Contributor License Agreement is a deterrent to\ncontributing to GitLab, so we're changing to a Developer's Certificate of Origin instead.\n\n\u003C!-- more -->\n\nMany large open source projects want to be masters of their own destiny.\nHaving the freedom to run your own infrastructure based on open source software,\ntogether with the ability to modify and audit source code and not be dependent\non a vendor, makes open source appealing. We want GitLab to be an option for everyone.\n\n## Why the change?\n\nA Contributor License Agreement (CLA) is the industry standard for open source\ncontributions to other projects, but it's unpopular with developers, who don't\nwant to enter into legal terms and are put off by having to review a lengthy\ncontract and potentially give up some of their rights. Contributors find the\nagreement unnecessarily restrictive, and it's deterring developers of open\nsource projects from using GitLab. We were approached by Debian developers to\nconsider dropping the CLA, and that's what we're doing.\n\n## What's changing?\n\nAs of today, we're rolling out changes so that contributors to the GitLab [source\ncode](/solutions/source-code-management/) will only be required to make contributions and bug fixes under a project\nlicense (MIT for all repositories with the exception of Omnibus which would be\nlicensed under Apache) and a [Developer's Certificate of Origin](https://developercertificate.org/) (DCO).\nThe DCO gives developers greater flexibility and portability for their\ncontributions, and it's one of the reasons that Debian and GNOME plan to migrate\ntheir communities and projects to GitLab. We hope this change\nencourages more developers to contribute to GitLab. Thank you Debian, for\nprompting us to make this change.\n\n> \"We applaud GitLab for dropping their CLA in favor of a more OSS-friendly\napproach. Open source communities are born from a sea of contributions that come\ntogether and transform into projects. This gesture affirmed GitLab's willingness\nto protect the individual, their creative process, and most importantly, keeps\nintellectual property in the hands of the creator.\" - Carlos Soriano, Board Director at GNOME\n\n>\"We’re thrilled to see GitLab simplifying and encouraging community\ncontributions by switching from a CLA to the DCO. We recognize that making a\nchange of this nature is not easy and we applaud the time, patience and\nthoughtful consideration GitLab has shown here.\" - Chris Lamb, Debian Project Leader\n\nYou can [read the analysis that informed our decision](https://docs.google.com/a/gitlab.com/document/d/1zpjDzL7yhGBZz3_7jCjWLfRQ1Jryg1mlIVmG8y6B1_Q/edit?usp=sharing).\nRead all about our [stewardship of GitLab Community Edition](/company/stewardship/).\n",[804,680,268],{"slug":3662,"featured":6,"template":683},"gitlab-switches-to-dco-license","content:en-us:blog:gitlab-switches-to-dco-license.yml","Gitlab Switches To Dco License","en-us/blog/gitlab-switches-to-dco-license.yml","en-us/blog/gitlab-switches-to-dco-license",{"_path":3668,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3669,"content":3675,"config":3680,"_id":3682,"_type":17,"title":3683,"_source":18,"_file":3684,"_stem":3685,"_extension":21},"/en-us/blog/gitlab-summit-greece-recap",{"title":3670,"description":3671,"ogTitle":3670,"ogDescription":3671,"noIndex":6,"ogImage":3672,"ogUrl":3673,"ogSiteName":671,"ogType":672,"canonicalUrls":3673,"schema":3674},"αντίο (Goodbye) and thanks for a great GitLab summit – Crete edition","That's a wrap! Check out the keynote from our summit in Greece below.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671644/Blog/Hero%20Images/gitlab-summit-crete.jpg","https://about.gitlab.com/blog/gitlab-summit-greece-recap","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"αντίο (Goodbye) and thanks for a great GitLab summit – Crete edition\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Erica Lindberg\"}],\n        \"datePublished\": \"2017-10-25\",\n      }",{"title":3670,"description":3671,"authors":3676,"heroImage":3672,"date":3677,"body":3678,"category":14,"tags":3679},[1958],"2017-10-25","\n\nFor the past week, around 250 GitLab team-members and significant others gathered in Crete, Greece\nto achieve one simple goal: **get to know each other!** As a remote-only company, we\ndon't often meet face to face, so our [summits](/events/gitlab-contribute/) are an extraordinary occasion. This year, in the spirit of \"everyone can contribute,\" we tried something new.\nWe decided to live stream from 9am to 9pm in an effort to bring the summit experience\ndirectly to you, wherever you are.\n\n\u003C!-- more -->\n\n## Highlights\n\nOver the course of the week, we accomplished a lot! Team members from over 30\ndifferent countries had the chance to work creatively with people outside of their\ncore team during the Amazing Race, mingle on the beautiful island of Santorini,\nand explore the ancient ruins of the Knossos Palace.\n\n### Summit challenges\n\n[In keeping with tradition from past summits](https://www.youtube.com/watch?time_continue=1&v=39chczWRKws),\nSid also had a couple of work-related challenges for the team. If we completed the challenges\nby the end of the week, he would perform a GitLab song.\n\n![summit challenges slide](https://about.gitlab.com/images/blogimages/summit-challenges-slide.jpg)\n\nWe managed to complete all of our challenges and at the closing Toga Party, Sid and Karen delighted us with a GitLab song to the tune\nof *[I'm Gonna Be (500 Miles)](https://www.youtube.com/watch?v=tbNlMtqrYS0)* \u003Ci class=\"fas fa-microphone\" aria-hidden=\"true\">\u003C/i>\n\nAnd the best part is that we were able to share this in real time with contributors from around the world. It was our vision to make the summit `read-write`, so that even if you weren't with us in Greece, you could\nstill participate and contribute. Thanks to everyone who joined in, sent in questions and comments, and for a while made the planet feel a little smaller.\n\n### Keynote with CEO Sid Sijbrandij\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/AopRnEbvgzE?start=3925\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n\n#### Keynote slides\n\n\u003Ciframe src=\"https://docs.google.com/presentation/d/e/2PACX-1vQA5srWjTIMmNHR3vWITDXlHj3iBSwxaTVLc_haoDZoBiH6XnGn_JdbR11A1YVOBd_mdcMZnxG_5yDS/embed?start=false&loop=false&delayms=3000\" frameborder=\"0\" width=\"1280\" height=\"749\" allowfullscreen=\"true\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\">\u003C/iframe>\n\nThanks everyone for participating! See you next time 😎\n",[891,890],{"slug":3681,"featured":6,"template":683},"gitlab-summit-greece-recap","content:en-us:blog:gitlab-summit-greece-recap.yml","Gitlab Summit Greece Recap","en-us/blog/gitlab-summit-greece-recap.yml","en-us/blog/gitlab-summit-greece-recap",{"_path":3687,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3688,"content":3694,"config":3699,"_id":3701,"_type":17,"title":3702,"_source":18,"_file":3703,"_stem":3704,"_extension":21},"/en-us/blog/watch-the-gitlab-summit-from-your-desk",{"title":3689,"description":3690,"ogTitle":3689,"ogDescription":3690,"noIndex":6,"ogImage":3691,"ogUrl":3692,"ogSiteName":671,"ogType":672,"canonicalUrls":3692,"schema":3693},"We're coming to you live from Crete, at the GitLab Summit!","Read on for all the events you can watch and participate in.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680330/Blog/Hero%20Images/greece-summit-2017.png","https://about.gitlab.com/blog/watch-the-gitlab-summit-from-your-desk","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"We're coming to you live from Crete, at the GitLab Summit!\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emily von Hoffmann\"}],\n        \"datePublished\": \"2017-10-17\",\n      }",{"title":3689,"description":3690,"authors":3695,"heroImage":3691,"date":3696,"body":3697,"category":14,"tags":3698},[1496],"2017-10-17","\n\nIt's that time again! Every nine months, our entire remote workforce descends on one location for the [GitLab Summit](/events/gitlab-contribute/). This year, we'll be in Crete, and you're invited!\n\n\u003C!-- more -->\n\nBefore you go off and buy a plane ticket, we should clarify that there probably isn't room for all of you on the island. But we're trying something new this Summit — we're live streaming every day to bring the experience to as many of our remote friends as possible.\n\n## Watch\n\nWe'll be streaming on [YouTube](https://rebrand.ly/gitlab-summit-stream). You can watch [Sid](/company/team/#sytses) and [Dmitriy](/company/team/#dzaporozhets)'s keynotes, our Santorini trip, [GitLab team-member-led user generated content (UGC) sessions](https://docs.google.com/forms/d/e/1FAIpQLSf9PSEMkxdlYQnAmDcXvsqeeXe-O1kRECZopG9nmwfn_O5qgA/viewform), the 10.1 release, and our final party can all be viewed in one place.\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/95FuYdcziLQ\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n\n## Schedule\n\nWe'll likely make some changes to this schedule as we close in on kickoff, so please keep in mind it's a WIP!\n\n#### [Thursday, October 19](https://www.youtube.com/watch?v=3EegHi0fdPQ)\n\nWatch Thursday's live stream [here](https://www.youtube.com/watch?v=3EegHi0fdPQ)\n\n* 10am-6pm UTC - Arrivals and getting to know GitLab team-members\n\n#### [Friday, October 20](https://www.youtube.com/watch?v=AopRnEbvgzE)\n\nWatch Friday's live stream [here](https://youtu.be/AopRnEbvgzE)\n\n* 7am UTC - Welcome & keynote with GitLab CEO Sid Sijbrandij ([@sytses](https://twitter.com/sytses))\n* 8am UTC - AMA with GitLab CEO Sid Sijbrandij (chat your questions here or on Twitter using #GitLabSummit)\n* 9am UTC - Eat lunch with us!\n* 10am UTC - Join us live for our Amazing Race challenge\n* 12pm UTC - How GitLab Started keynote with CTO & Co-founder Dmitriy Zaporozhets ([@dzaporozhets](https://twitter.com/dzaporozhets);chat your questions on YouTube or on Twitter using #GitLabSummit)\n* 1:15pm UTC - Award Ceremony and Happy Hour\n* 3pm UTC - GitLab BBQ\n\n#### Saturday, October 21\n\n**Due to WIFI issues, we were not able to live stream Saturday's events. However,\nwe'll be showing re-runs and highlight footage during [Sunday's stream](https://www.youtube.com/watch?v=95FuYdcziLQ).**\n\n* 4am - 5pm UTC Day trip to Santorini\n* 5:15 pm UTC - Join us for dinner and hallway conversations\n\n#### [Sunday, October 22](https://www.youtube.com/watch?v=95FuYdcziLQ)\n* 6-7am UTC - AMAs - Send us your questions ahead of time on Twitter with #GitLabSummit\n * 6-6:15am Mark Pundsack (@MarkPundsack), Head of Product\n * 6:15-6:30am Barbie Graver (@BarbieGraver), Chief Culture Officer\n * 6:30-6:45am Sarrah Vesselov (@SVesselov), UX Lead\n* 7am UTC - Chat with our developers and engineers as they release GitLab 10.1\n* 9am-3pm UTC - Day trip to Heraklion\n\n#### [Monday, October 23](https://www.youtube.com/watch?v=7r9mo-QwBbM)\n\n[Vote for the UGC Sessions you want to see on the live stream!](https://docs.google.com/forms/d/e/1FAIpQLSf9PSEMkxdlYQnAmDcXvsqeeXe-O1kRECZopG9nmwfn_O5qgA/viewform)\n\n* 6-11am UTC - Send us your questions to have them answered live\n* 11am UTC - UGC Session 1\n* 12pm UTC - UGC Session 2\n* 1pm UTC - UGC Session 3\n* 2pm UTC - UGC Session 4\n* 3pm UTC - Join us for dinner\n* 5pm UTC - Join us for Game Night and a Gitter AMA\n\n#### [Tuesday, October 24](https://www.youtube.com/watch?v=LRpkLBWA_sI)\n\n[Vote for the UGC Sessions you want to see on the live stream!](https://docs.google.com/forms/d/e/1FAIpQLSf9PSEMkxdlYQnAmDcXvsqeeXe-O1kRECZopG9nmwfn_O5qgA/viewform)\n\n* 6-11am UTC Send us your questions to have them answered live\n* 11am UTC - UGC Session 1\n* 12pm UTC - UGC Session 2\n* 1pm UTC - UGC Session 3\n* 2pm UTC - UGC Session 4\n* 3pm UTC - Join us for dinner\n* 5pm UTC - Join the Toga Party!\n\n## Get involved\n\nWe want to see you there! [Tweet us](https://twitter.com/gitlab) using #GitLabSummit to let us know your questions and comments. We'll be giving away limited edition swag to people who chime in and ask questions on social, and we'll also poll you to ask which UGC sessions you want live streamed. We're so excited to share the Summit with our community for the first time, and we hope you'll join us!\n\nRead more about our company values in our [open source](/blog/our-handbook-is-open-source-heres-why/) [handbook](https://handbook.gitlab.com/handbook/values/), licensed by [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/).\n",[891,890],{"slug":3700,"featured":6,"template":683},"watch-the-gitlab-summit-from-your-desk","content:en-us:blog:watch-the-gitlab-summit-from-your-desk.yml","Watch The Gitlab Summit From Your Desk","en-us/blog/watch-the-gitlab-summit-from-your-desk.yml","en-us/blog/watch-the-gitlab-summit-from-your-desk",{"_path":3706,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3707,"content":3713,"config":3718,"_id":3720,"_type":17,"title":3721,"_source":18,"_file":3722,"_stem":3723,"_extension":21},"/en-us/blog/from-dev-to-devops",{"title":3708,"description":3709,"ogTitle":3708,"ogDescription":3709,"noIndex":6,"ogImage":3710,"ogUrl":3711,"ogSiteName":671,"ogType":672,"canonicalUrls":3711,"schema":3712},"Complete DevOps is DevOps reimagined. Here's what that looks like","It's all systems go on Complete DevOps! We've re-imagined the scope of DevOps to bring development and operations work into a single application.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670652/Blog/Hero%20Images/dev-to-devops-cover.png","https://about.gitlab.com/blog/from-dev-to-devops","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Complete DevOps is DevOps reimagined. Here's what that looks like\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2017-10-11\",\n      }",{"title":3708,"description":3709,"authors":3714,"heroImage":3710,"date":3715,"body":3716,"category":14,"tags":3717},[676],"2017-10-11","\n\nUpdate: for the most recent status of complete DevOps please see our [Product Vision](/direction/) page.\n\nEarlier this week [we announced our #CompleteDevOps vision](/blog/gitlab-raises-20-million-to-complete-devops/). Let's take a closer look at what that means, and how it's different from traditional DevOps.\n\n\u003C!-- more -->\n\n## Traditional vs. Complete DevOps\n\nIn the early days of software development the process of taking an idea to production was slow, insecure and vulnerable to errors. DevOps emerged as a way to foster collaboration and create faster iteration cycles with greater quality and security. As it sits today, DevOps is a set of practices at the intersection of development and operations. It was a huge step forward.\n\n\u003Cimg src=\"/images/blogimages/dev-to-devops-intersection.png\" alt=\"Intersection of Dev and Ops\" style=\"width: 500px;\"/>{: .shadow}\n\nBut it didn't go far enough.\n\nEven with the [adoption of DevOps](/topics/devops/), serious challenges continue to exist. Developers and operators used to be separate groups with separate tools. The people are now closer together but their tools are still apart. This hinders dev and ops teams from working together. Trying to glue their tools together with traditional DevOps applications doesn't solve the fundamental problem of having separate applications.\n\n\u003Cimg src=\"/images/blogimages/dev-to-devops-tools.jpg\" alt=\"Distinct tools of developers and operators\" style=\"width: 800px;\"/>{: .shadow}\n\n## Why Complete DevOps?\n\n\u003Cimg src=\"/images/blogimages/dev-to-devops-union.png\" alt=\"Union of Dev and Ops\" style=\"width: 500px;\"/>{: .shadow}\n\nComplete DevOps reimagines the scope of tooling to include both developers and operations teams in one unified solution. This dramatically reduces friction, increases collaboration, and drives a competitive advantage. Doing away with context switching and having all the necessary information in one place closes the loop and enables a better understanding of each team's needs.\n\n\u003Cimg src=\"/images/blogimages/dev-to-devops-advantages.jpg\" alt=\"The advantages of Complete DevOps\" style=\"width: 800px;\"/>{: .shadow}\n\n To make our vision a reality, we're working on a number of new features and improving on existing ones. You can take an in-depth at some of these in our Head of Product [Mark Pundsack](/company/team/#MarkPundsack)'s [outline here](/blog/devops-strategy/), or watch the full presentation about our Complete DevOps vision below.\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/5dhjw-TT964?start=1437\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n\nYou can also browse the slides at your leisure:\n\n\u003Ciframe src=\"https://docs.google.com/presentation/d/e/2PACX-1vRVKUjMMa7M7lPV04_TMgfmd2Fj_kEQYW9-RvKAtKf799_Dwbfvos8diqinI-Uhm1uTwPYCdAPPzun1/embed?start=false&loop=false&delayms=3000\" frameborder=\"0\" width=\"1280\" height=\"749\" allowfullscreen=\"true\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\">\u003C/iframe>\n\nShare your thoughts, comments, and questions about #CompleteDevOps with us on [Twitter](https://twitter.com/gitlab)!\n",[890,995,680],{"slug":3719,"featured":6,"template":683},"from-dev-to-devops","content:en-us:blog:from-dev-to-devops.yml","From Dev To Devops","en-us/blog/from-dev-to-devops.yml","en-us/blog/from-dev-to-devops",{"_path":3725,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3726,"content":3731,"config":3737,"_id":3739,"_type":17,"title":3740,"_source":18,"_file":3741,"_stem":3742,"_extension":21},"/en-us/blog/gitlab-raises-20-million-to-complete-devops",{"title":3727,"description":3728,"ogTitle":3727,"ogDescription":3728,"noIndex":6,"ogImage":3485,"ogUrl":3729,"ogSiteName":671,"ogType":672,"canonicalUrls":3729,"schema":3730},"GV leads $20M series C funding for GitLab to complete DevOps","We went live today with The Changelog’s Adam Stacoviak and Jerod Santo to announce $20M in new funding, a new board member, and our vision for Complete DevOps.","https://about.gitlab.com/blog/gitlab-raises-20-million-to-complete-devops","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Announcing $20 million in Series C round funding led by GV to complete DevOps\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2017-10-09\",\n      }",{"title":3732,"description":3728,"authors":3733,"heroImage":3485,"date":3734,"body":3735,"category":14,"tags":3736},"Announcing $20 million in Series C round funding led by GV to complete DevOps",[699],"2017-10-09","Update: for the most recent status of complete [DevOps](/topics/devops/) please see our [Product Vision](/direction/) page.\n\nToday we are thrilled to announce our $20 million Series C funding led by GV. This follows [our Series B round last September](/blog/gitlab-master-plan/). With the help of our investors (and community!) we’re gearing up to bring you Complete DevOps, a reimagined scope of DevOps that unifies development and operations work into a single user experience.\n\n\u003C!-- more -->\n\nNot a GitLab user? [Install GitLab](/install/) or [sign in](https://gitlab.com/users/sign_in) to get started!\n{: .alert .alert-gitlab-orange}\n\nIn addition to our Series C funding round led by Dave Munichiello, GV General Partner, we’re excited to announce new board member,\nMatt Mullenweg, founder of WordPress.\n\n> \"The Fortune 500 is racing to build world-class software development organizations that mirror the speed,\nproductivity, and quality of the largest tech companies. As these organizations strive to produce high-quality\ncode at scale, they will need best-in-class tools and platforms. GitLab’s platform accelerates\nthe development process with an emphasis on collaboration and automation.\nGitLab’s hybrid, multi-cloud solution is loved by developers, and is seeing tremendous traction in the field.\" – Dave Munichiello, GV General Partner\n\n> \"GitLab’s powerful momentum and scaling have a lot of parallels to Automattic and WordPress in their early days.\nWordPress had to battle a lot of competitors, and ultimately came out on top as a successful company on an open source business model.\nI hope to help GitLab achieve the same triumph. Fundamentally, I want to help create the kind of internet that I want to live in\nand I want my children to live in, one that reaches a global audience and one that is able to make a difference.\"\n– Matt Mullenweg, founder of WordPress\n\nSince our start in 2014, we’ve had one mission: change all creative work from read-only to read-write so that everyone can contribute.\nLast year we unveiled GitLab’s Master Plan on September 13th, committing to shipping every stage of idea to production (which we completed in 8.15!).\nThis was a major step forward in simplifying the software development process.\nNow, we're taking it a step further to unite development and operations in one user experience.\nWatch the recording of our earlier live stream announcing our #CompleteDevOps vision below,\nand keep scrolling for a recap and the slides from the presentation.\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/5dhjw-TT964\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n\n## Complete DevOps\n\nBefore DevOps, the world of software iteration was slow, insecure, and error prone.\nDevOps came to the intersection of development and operations to create faster iteration cycles with greater quality and security.\n\nBut it didn't go far enough...\n\nIn the current landscape, developers and operations use different tools,\nthey don't have the ability to fully collaborate, and the need to integrate\nmany disparate tools continues to be a point of friction that slows progress\nand leads to insecure, poor quality code.\n\nComplete DevOps reimagines the scope of tooling to include both developers\nand operations teams in one unified solution. This dramatically reduces friction,\nincreases collaboration, and drives a competitive advantage.\n\nIn [10.0](/releases/2017/09/22/gitlab-10-0-released/), we shipped the first iteration of Auto DevOps,\nwhich just scratches the surface of the Complete DevOps features we have in the works.\nYou can read our Head of Product [Mark Pundsack](/company/team/#MarkPundsack)’s\ndetailed vision in [his blog post](/blog/devops-strategy/), but to summarize:\n\nWe want to build GitLab into the complete DevOps tool chain.\nWe already cover every stage of the software development lifecycle. Why stop at production?\nWhy not go beyond that, into operations? We want to close the loop between Dev and Ops,\nautomating processes and reducing complexity so that you can focus on a great customer experience.\n\n\u003Ciframe src=\"https://docs.google.com/presentation/d/e/2PACX-1vRVKUjMMa7M7lPV04_TMgfmd2Fj_kEQYW9-RvKAtKf799_Dwbfvos8diqinI-Uhm1uTwPYCdAPPzun1/embed?start=false&loop=false&delayms=3000\" frameborder=\"0\" width=\"1280\" height=\"749\" allowfullscreen=\"true\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\">\u003C/iframe>\n\n### Why Complete DevOps?\n\n1. A single UI for development and operations means less time is wasted switching tools.\n2. All phases of DevOps are deeply integrated, so development and operations can work together collaboratively with less friction.\n3. The best practices of more than 100K organizations are built in by default.\n4. You benefit from a single install, with upgrades that don't break, no integration work, and one permission model.\n\nShare your thoughts, comments, and questions about #CompleteDevOps with us [on Twitter](https://twitter.com/gitlab)!\n\n### The cloud-native development solution\n\nThe software world is moving from virtual machines to cloud-native development.\nWe want to help ease this transition for companies, by offering a complete development and operations solution for cloud-native development.\n\n## Get involved\n\nWe 💜 our community! At GitLab, everyone can contribute and we owe GitLab’s existence to your enthusiasm,\ndrive, and hard work. Without our contributors’ belief in open source software, we would not be where we are today.\nWe need your help to make our collective vision a reality.\n\nWe are committed to standing by our [promise to be good stewards of open source](/blog/being-a-good-open-source-steward/),\nand keeping communication and collaboration amongst the community a high priority.\nOur open core business model ships both open and closed software.\nIn an effort to maintain an unprecedented level of transparency, we follow three key principles:\n\n1. [Development in the open](/blog/improving-open-development-for-everyone/). You can submit issues in a public issue tracker. This is not a read-only interface.\n1. [Business in the open](/blog/almost-everything-we-do-is-now-open/). Our company handbook and policies are in the open.\n1. [Clear direction](/direction/). Our Direction page clarifies the current project priorities and what is possible in the upcoming releases.\n\nRead more about our company values in our [open source](/blog/our-handbook-is-open-source-heres-why/) [handbook](https://handbook.gitlab.com/handbook/values/), licensed by [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/).",[680,890,1437],{"slug":3738,"featured":6,"template":683},"gitlab-raises-20-million-to-complete-devops","content:en-us:blog:gitlab-raises-20-million-to-complete-devops.yml","Gitlab Raises 20 Million To Complete Devops","en-us/blog/gitlab-raises-20-million-to-complete-devops.yml","en-us/blog/gitlab-raises-20-million-to-complete-devops",{"_path":3744,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3745,"content":3751,"config":3756,"_id":3758,"_type":17,"title":3759,"_source":18,"_file":3760,"_stem":3761,"_extension":21},"/en-us/blog/devops-strategy",{"title":3746,"description":3747,"ogTitle":3746,"ogDescription":3747,"noIndex":6,"ogImage":3748,"ogUrl":3749,"ogSiteName":671,"ogType":672,"canonicalUrls":3749,"schema":3750},"Beyond CI/CD: GitLab's DevOps vision","How we're building GitLab into the complete DevOps toolchain.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670214/Blog/Hero%20Images/devops-nova-scotia-cover.jpg","https://about.gitlab.com/blog/devops-strategy","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Beyond CI/CD: GitLab's DevOps vision\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mark Pundsack\"}],\n        \"datePublished\": \"2017-10-04\",\n      }",{"title":3746,"description":3747,"authors":3752,"heroImage":3748,"date":3753,"body":3754,"category":14,"tags":3755},[1373],"2017-10-04","\n\nWith GitLab 10.0, we shipped [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/) for the Community and Enterprise\nEditions. Read on for an in-depth look at our strategy behind it, and beyond.\n\n\u003C!-- more -->\n\nI recently met with my colleagues\n[Joe](/company/team/#JAScheuermann) and\n[Courtland](/company/team/#mktinghipster) to give them the\nlowdown on GitLab's DevOps vision: where we've come from and where we're headed.\nYou can watch the video of our discussion or check out the lightly edited\ntranscript below. You can also jump into the rabbit hole, starting with the meta\nissue for [GitLab DevOps](https://gitlab.com/gitlab-org/gitlab-ce/issues/32639).\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/zMAB42g4MPI\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n\n\n## CI/CD: Where we've come from\n\n![CI/CD/Beyond CD](https://about.gitlab.com/images/blogimages/devops-strategy-ci-scope.svg)\n\nWhen I joined GitLab about a year ago, I created a [vision document for\nCI/CD](/direction/#ci--cd), and outlined a lot of the\nkey things that I thought were missing in [CI/CD in general](/topics/ci-cd/), and going beyond CD.\nI literally called one section \"beyond CD\" because I didn’t have a name for it\nthen.\n\nAnd in that document, I create an example pipeline to characterize all this\nstuff, to show how the pieces fit together into a development lifecycle.\n\n![Example pipeline](https://about.gitlab.com/images/blogimages/devops-strategy-example-pipeline.png){: .shadow}\n\nI love this diagram not only because it's complex and scary, but because when we\nstarted, we had maybe four boxes filled in, and now we have 10 or 12 filled in. To\nstart with, we had code management and, obviously, builds and tests. And we kind\nof did deployment, but not really.\n\nSince then, we’ve added review apps – a specific example of deployments – which\nis really awesome. We also added a more formalized mechanism for doing\ndeployments; actually recording deployments and deployment histories, keeping\ntrack of environments, and everything else. Then we added Canary Deployments in\n9.2 and code quality in 9.3. We added system monitoring with Prometheus in 9.0.\n\nWe don’t yet have what I called \"business monitoring,\" which could mean\nmonitoring revenue, or clicks, or whatever you care about; but that’s coming. We\ndon't yet have load testing, but the Prometheus team is thinking about that.\nWe don't yet have a plan for feature flags, but I think it's a really important\npart.\n\nAnd then we have this other dimension of pipelines, which is the relationship\nbetween different codebases (or projects), and in 9.3 we introduced the first\nversion of multi-project pipelines.\n\nSo we've gone from a core view of three or four boxes to where 90 percent is\ncomplete. That's pretty awesome.\n\nIt became obvious to me that we were viewing the scope with this hard line:\ndeveloper focused rather than an ops focused. For example, we’ll deploy into production,\nand we might even watch the metrics related to your code in production, but\nwe’re not going to monitor your entire production app, because that’s\noperations, and that’s clearly out of scope, right?\n\n## Where we're headed: Beyond CD\n\nWhat hit me a few months ago is, \"Why is that out of scope? That’s ridiculous.\nNo, we’re going to keep going. We're going to go past production into\noperations.\" Most of this still applies, but instead of just monitoring the\nsystem as it relates to a merge request, what about monitoring the system for\nnetwork errors, outages, or dependency problems? What if we don't stop at\nproduction, and monitor things that are typically ops related that may not\ninvolve a developer at all?\n\nThen I realized that this thing I called Beyond CD, maybe it's really [DevOps](/topics/devops/).\nMaybe the whole thing is DevOps.\n\n### The DevOps tool chain\n\nTo offer some context: DevOps is hard to define, because everybody defines it\nslightly differently. Sometimes DevOps is defined as the intersection of\ndevelopment, operations, and quality assurance.\n\n![DevOps Venn diagram](https://about.gitlab.com/images/blogimages/devops-strategy-venn-diagram.png){: .shadow}\n\n*\u003Csmall>Image by Rajiv.Pant, derived from Devops.png:, [CC BY 3.0](https://commons.wikimedia.org/w/index.php?curid=20202905)\u003C/small>*\n\nFor the most part, my personal interest in DevOps has been in that intersection.\nWe do great code management; we’ve done that for quite a while. How do we get\nthat code into production? How do we get it into QA?\n\nReview apps are a great example that fits squarely in that tiny, little triangle\nin the middle of the Venn diagram. You take your code, you deploy it, which is\nan operations thing, but you have it deployed in a temporary, ephemeral, app,\njust for QA people (or designers, product managers, or anyone who is not a\nprimary coder), so they can test your application for quality assurance, feature\nassurance, or whatever.\n\nBut now, I'm looking beyond the intersection. Here's the [DevOps tool chain\ndefinition](https://en.wikipedia.org/wiki/DevOps_toolchain) from Wikipedia:\n\n![DevOps Toolchain](https://about.gitlab.com/images/blogimages/devops-strategy-devops-toolchain.png){: .shadow}\n\n*\u003Csmall>Image by Kharnagy (Own work) [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0), via Wikimedia Commons\u003C/small>*\n\nWell, that’s everything! That’s not the intersection; that’s the union of\neverything from code, to releasing, to monitoring. And that's where things get\nconfusing. Sometimes when people talk about DevOps, they’re not talking about\nall of your code stuff. It’s the intersection parts that are the interesting\nparts of DevOps. It’s the parts where we let developers get their code into\nproduction easily. That slice, that intersection, of the Venn diagram, that’s\nthe interesting part about DevOps.\n\nHaving said that, as a product company, we are going to deliver things that are\npretty squarely on the development side, and, eventually, we’re going to deliver\nthings that are pretty squarely in the operations side. At some point, we may\nhave an operations dashboard that lets you understand your dependencies in your\nnetwork infrastructure, and your routers, and your whatever. That’s pretty far\nfetched at this point, but it could happen. Why not? Just have GitLab be\nyour one operations dashboard, and then it’s not just about the intersection of\nthe DevOps, it’s the whole DevOps tool chain.\n\nSo, that is the whirlwind, high-level summary of where we've been, and a little\nbit about where we’re going. Now let's get into specific issues.\n\n### The Ops Dashboard – [#1788](https://gitlab.com/gitlab-org/gitlab-ee/issues/1788)\n\nWe have a monitoring dashboard that's very developer centric. What about\ntaking that same content and slicing it from the operator's perspective? For a\nmoment, ignore all the stuff below, let’s just pretend there’s only the four\nboxes at the top:\n\n![Ops view of monitoring and deploy board](https://about.gitlab.com/images/blogimages/devops-strategy-monitoring-deploy-board.png){: .shadow}\n\nSo an operator might want to know, \"What’s the state of production?\" If I'm a\ndeveloper I can go into a project, into environments, see the production\nenvironment for that project, and I can see what the status is. But what if I\nwant to see all production environments? As an operations person, I care a\nlittle less about individual projects than I care about \"production.\" So this is\ngiving me the overview of \"production.\" All of these little boxes would\nrepresent production deploys of projects that you have in your GitLab\ninfrastructure.\n\nThe view is explicitly convoluted because we had just introduced sub-groups and\nI wanted to make sure this mechanism expanded. So ignore all the stuff below and\njust look at the top-level dashboards. Or maybe one level down, which is already\nstill pretty complicated, but let’s say your marketing organization had\ndifferent properties than your other developer operations; you’d be able to see\nreally quickly what the status is. If something’s red, you’d be able to click\ndown, and see details.\n\n![Ops view - service health](https://about.gitlab.com/images/blogimages/devops-strategy-service-health.png){: .shadow}\n\n![Ops view - pod health](https://about.gitlab.com/images/blogimages/devops-strategy-pod-health.png){: .shadow}\n\nYou’d be able to see graphs like this, which are similar to what we already\nprovide, but from the other angle. As a developer I’m looking at the deploy, and\nsaying, \"Oh, how did my deploy affect my performance?\" But this is saying,\n\"How’s production? Is anything wrong with my entire production suite?\"\n\nThis is really just scratching the surface of the ops views of things, but I\nthink it's going to become much more important as people embrace DevOps. You\nwant your developers to be talking the same language as your operations people.\nIn a lot of organizations, it’s already the same people – there are no separate\noperations people. Developers push code to production, and they're paged if\nsomething goes wrong. In others, developers and operators are separate, but they\nwant to work together towards DevOps.\n\nEither way, you want to be using the same tools. You want to be able to point\nto, for example, a memory bump that your operations people should also be able\nto see. But if they’re using completely different tools, like New Relic and\nDatadog, that kind of sucks. So let’s give them the same tools.\n\n### Pipeline view of environments – [#28698](https://gitlab.com/gitlab-org/gitlab-ce/issues/28698)\n\nI particularly love this proposal, and I really want to see this happen soon.\n\nThe environments page today is just a list of environments showing the last\ndeployment. The picture tells you who deployed, which is good, and you can see\nthat the commit is from the same SHA as staging, which is kind of nice. I can\nsee the deploy board, and if there's a deploy ongoing, I’m able to see the state\nas it rolls out. We don’t yet show you the current health of these pods; once\nthey're deployed, all we know is that they're deployed. This is how the\nenvironment view is today, and it's centered around deployments.\n\n![Environments list](https://about.gitlab.com/images/blogimages/devops-strategy-environments-list.png){: .shadow}\n*\u003Csmall>Current Environment view\u003C/small>*\n\nYou can click through to see the deployment history and this is actually really\nvaluable because I can see who deployed things, how long ago, and if something\nwent wrong in production I can really quickly roll back and let the developers\nhave some space to go and figure out what went wrong.\n\n![Deployment history](https://about.gitlab.com/images/blogimages/devops-strategy-deployment-history.png){: .shadow}\n*\u003Csmall>Current Deployment History view\u003C/small>*\n\nBut this proposal turns it around to have more of a DevOps view of the thing.\n\n![Pipeline view of environments](https://about.gitlab.com/images/blogimages/devops-strategy-pipeline-view-environments.png){: .shadow}\n*\u003Csmall>Proposed pipeline view of Environments\u003C/small>*\n\nThe idea is to take the same application, and instead of just looking at a list\nof environments, I’d be looking at columns with lots of review apps, and some\nnumber of staging environments, and a production environment. Instead of just\nshowing you the SHA, we would show you, for example, what merge requests have\nbeen merged into staging that are not yet in production. That’s a great\nmarriage of these two views, that you’d be able to see the diff between them.\n\nThis list, although it’s just a mockup, shows maybe the last five things that\nwere in production, or what was included in the last deploy, or whatever works\nbest for your environment. Showing what’s in the last deploy might be enough,\nbut for people who deploy 17 times a day, maybe that’s a little less useful, and\nwe just show history.\n\nBut then what about building in more of the operations kind of stuff, and\nsaying, \"Alright, what’s the state of my pods?\" Here we were flagging where the\nerror rate exceeded a threshold and there’s some alert that popped up. And here\nwe’re showing this automatic rollback kind of stuff, but basically just really\nbuilding on this ops view. Of course this is still a DevOps view, in the sense\nthat I’m looking at an individual project. So, one permutation of that would\nmarry that ops view of all of production. Or if I’m looking at a [microservices](/topics/microservices/)\nkind of thing, where there are five or 100 different projects, and I want to see\nthe status of all those really quickly. See\n[#28707](https://gitlab.com/gitlab-org/gitlab-ce/issues/28707).\n\n### Dependency security – [#28566](https://gitlab.com/gitlab-org/gitlab-ce/issues/28566)\n\nSo, here, the idea is that you've deployed something in production, and some\nmodule or something that you depend on has been updated, not by you, but by the\ncommunity, or someone else.\n\nThe easiest and most naive way to approach this is that with the next merge\nrequest, or next CI/CD run, we would go and check to see if anything’s outdated.\nAnd we might fail your CI/CD because of this.\n\nIt would make much more sense to run this stuff automatically. Even if, for\nexample, nobody pushes for seven days, and in the middle of that, there’s a\nsecurity release; just proactively run stuff and notify me. So, that's sort of a\nsecond iteration of thinking about how you would notify somebody, and tell them,\n\"Oh, you’ve got a security change. You should go in and do something about it.\"\n\nNow, the third iteration is, \"Well, what would you do with that information?\"\nYou’d go and maybe give it to your junior developer to go and make the change,\nand point to the new version. And then, of course, you need to test that it\nworks. So, you’re going to create a merge request, and then test it, to make\nsure that it still functions properly.\n\nWell, why notify somebody, and tell the junior developer to go and do this? Why\ndon’t we just do it for you? Why don’t we just go and submit the merge request\nfor you, and then tell you what the results are. And, in fact, let’s go further,\nand say, \"Hey it passed. We just deployed into production for you.\" Why would\nyou have security vulnerability in place any longer than necessary?\n\nAnd instead of having 100 alerts about 100 projects or microservices that all\nneed to get updated, you just get alerts about three of them that fail, that\nactually have some weird dependency that it didn’t work on. And then, you can\nfocus on real problems.\n\n![Dependency security](https://about.gitlab.com/images/blogimages/devops-strategy-dependency-security.png){: .shadow}\n\nSo, that’s a glimpse at how we’re thinking about this.\n\nThis would definitely be an enterprise-level feature. And again, we've fleshed\nout some ideas and it’s unscheduled, but it does really tie into the ops\nmindset.\n\n### Question: Enterprise Edition features\n\nCourtland: You mentioned that sort of automation would be an enterprise edition\nfeature. Can you talk a little bit more about why a smaller development team,\nlike under 100 developers, wouldn’t get value out of something like that?\n\nMark:\tSo, this is where things get a little tricky, because of course,\nsmaller developer teams would get value out of that too. Everybody would get\nvalue out of that. Some of it has to do with proportionality. One test I like to\nuse is: is there some other way you could achieve the same thing, using\nworkarounds, and we’re just making it easier? And that’s a good case, here. You\ncan already do this, but we’re going to automate it. And automation is something\nthat affects larger companies a lot more, because they’ve got hundreds of\nprojects, with thousands of developers. And they just can’t deal with the scale,\nor it’s worth dealing with the automation. Whereas, if you’ve got a small\ndeveloper, with a single project, you’re pretty much on top of it. And if\nsomething changes, yeah, you just go ahead and fix it; you’re aware of it. The\nbigger challenges are when you’re just not aware of how this thing might affect\none project that somebody’s almost forgotten about.\n\nThe other thing is that, just to be blunt, our concept that Enterprise Edition\nis only for more than X people, is a little flawed. It’s that it\napplies more to those companies, that those people value it more, and they’d be\nwilling to pay for it more, or however you judge your value there. Clearly,\nsmall companies would value all this automation, and everything else, but\nthey’re not going to get as much incremental value out of it, as a larger\ncompany would.\n\n~~The other way to look at it is that this is pretty advanced stuff, and frankly,\nit doesn’t deserve to be, free, open source. It’s probably really complicated\nstuff, and you’re going to have to pay there.~~ *[Editor's note: Advancedness is not a criteria in open sourcing or not open sourcing. There are advanced features that are open source, such as [Review Apps](https://docs.gitlab.com/ee/ci/review_apps/). There are basic features that are proprietary, such as [File Locking](/solutions/file-locking/). The criteria we use to decide which version the features go in are documented on our [stewardship page](/company/stewardship/#what-features-are-paid-only).]* Maybe there’d be levels to it,\nright? There’d be a version that gives you an alert: we’ll run this test once a\nday. Or even just have a blog post about how to do this: you set up a recurring,\nscheduled pipeline job, once a day, to test if any of your dependencies have\nbeen updated. And you can do that today and then it would alert you. But to\nautomate it, to actually, create a merge request for you, and everything else?\nWell, that’s in the Enterprise feature. It’s not that version checking isn’t\nimportant for everybody, but the automation around it really, really matters for\nlarger companies. Does that make sense?\n\nCourtland:\tYeah, I mean, I think that the first way you described it, in that,\n\"Yeah, everyone gets some value out a feature like this, but the overwhelming\nvalue and use for this is in larger development teams,\" that resonated.\n\n### SLO and auto revert – [#1661](https://gitlab.com/gitlab-org/gitlab-ee/issues/1661)\n\nThis is a feature showing how we’re thinking about auto reverting something.\nWe’ve got canary deployments, and we have another feature we’re not currently\nworking on or scheduled, but it’s incremental rollout, so that you would not\njust rollout to a single canary, or a bucket of canaries, but it would slowly\nincrement: 1 percent, then 5 percent, then 25 percent. But let’s say, at some point, during my\nrollout, you detect an error.\n\n![Revert](https://about.gitlab.com/images/blogimages/devops-strategy-revert.png){: .shadow}\n\nThis a mockup of what it would look like. You’re like, \"Oh, error rates\nincreased by something above our threshold; let’s revert that one, go back, and\ncreate a new issue, and alert somebody to take a look at it.\" Lately, I’m\nthinking that I don’t know if I really want to automatically roll back, versus\njust stop it in its canary form, and say, \"Well, it’s canary. Let’s let canary\nbe there, so you can debug the canary, but just don’t let the canary go on\nfurther.\"\n\nError rate exceeding is a pretty tough one. But let’s say memory bumps up, and\nyou might be like, \"Yeah, we added something, and it’s using more memory, and\nwe’re okay with that. Don’t stop my deploy just because it’s using more memory.\"\nThere might need to be human intervention in there, but somewhere along this\nline we’re automating a lot of the deploy stuff.\n\n### Onboarding and adoption – [#32638](https://gitlab.com/gitlab-org/gitlab-ce/issues/32638)\n\nOnboarding and adoption is a really big issue, with lots of different ideas for\nhow to improve onboarding, how to get people actually using idea to production,\nimproving auto deploy. Not a lot of visuals, so I won’t really talk about it,\nbut it’s definitely one of our top priorities; the next most important thing\nwe’re working on.\n\n### Cloud development – [#32637](https://gitlab.com/gitlab-org/gitlab-ce/issues/32637)\n\nCloud development is the idea that setting up your local host machine is\nactually kind of a pain sometimes. Especially with microservices, where each\nservice can be in their own language, you don’t want to maintain Java, and Ruby,\nand Node, and all these other versions of dependencies, and every time something\nswitches, you’ve got to reinstall a new version of stuff. Or even these days,\nyou might develop on an iPad, and you don’t have a local host to compile things.\n\nCloud9 is the biggest, well known thing, from an IDE perspective, and Amazon\nbought them a little while ago. But even aside from the IDE portion of it, it’s\njust being able to develop in the cloud, and being able to make some changes,\nand then push them back; commit them to a repo.\n\nWe have a little bit of a demo like this, right now, with our web terminal. So,\nif you have Kubernetes, you see this terminal button, and it just pops up the\nterminal right in the staging server. And I can actually go ahead and edit a\nfile there, and... I just made a live change into my staging app.\n\nNow, generally speaking, I would not actually recommend you do that, because\nI’m messing with my staging app, that’s not what it's for. It makes an awesome\nlittle demo, but it’s not what you should do. What we want to do is come up with\na way that people could do that, but have it be not on your staging app, but in\nmaybe a dev environment that is specifically for this purpose. But that also,\nafter you make your changes, and test them, and run them live, you can then go\nand commit them back to [version control](/topics/version-control/), and close that loop. So there’s a whole\nbunch of issues related to that. And to be honest, it was what we were hoping\nthat Koding would have provided for us, and we have an integration\nwith them, but it hasn’t worked out, really, the way that we had hoped. And so,\nwe’re looking at alternatives, and we think we can probably do this ourselves.\n\nAnyway, that’s a big thing to flesh out.\n\n### GitLab PaaS – [#32820](https://gitlab.com/gitlab-org/gitlab-ce/issues/32820)\n\nHeroku is awesome, because it gives you this really great platform that’s easy\nto use, and gives you all this functionality on top of Amazon. Five or six years\nago it was super, brain-meltingly awesome to get people to do ops. For a\ndeveloper, I don’t have to be aware of how to do ops; Heroku just does ops\nfor us.\n\nGitLab PaaS is basically the idea that you’ve got a lot of these components, and\nwe’re not going to invent them all from scratch. We’re going to rely on\nKubernetes, for example. But on top of Kubernetes, we could make an awesome\nenvironment for ops. An ops environment, or a platform as a service. And so,\nthere’s an issue to discuss what it would take to do that. At some point in\ntime, this is a big item for us. If we can make it super really easy for you to\nfully manage your ops environment via GitLab, and maybe, for example, never\ntouch the Kubernetes dashboard; never touch any of the tools, just use the\nGitLab tools to do this. That’s pretty powerful.\n\nSort of related is an idea in the onboarding stuff, that on GitLab.com\nwe can actually provide you with a Kubernetes cluster; maybe a shared cluster. We\nhave to worry about security, of course. But imagine if you were a brand new\nuser on GitLab.com, and you push up an app, and you have nothing in there\nspecifically for GitLab, you just push up your code, and GitLab is like, \"Oh,\nthat’s a Ruby app. Okay, I know how to build Ruby apps. Oh, and I also know how\nto test Ruby apps. I’m just going to go and test them automatically for you.\"\nAnd, \"Oh, by the way, I know how to deploy this. I’m just going to go ahead and\ndeploy this to production.\" And we’ll make a\nproduction.project-name.ephemeral-gitlabapps.com, whatever the hell, some domain\nso that it’s not going to affect your actual production. But if you wanted to,\nyou would just point your DNS over to this production app, and you've got the\nproduction app running on GitLab infrastructure. And that’s, really, what Heroku\nprovided, right?\n\nBut that also is an onboarding thing for us to make it really easy. Because if\nwe want everybody to have CI, well, let’s turn it on for you. That’s pretty\nawesome. If we want everybody to have CD, we can’t just turn it on for you,\nbecause you have to have a place to deploy it to. So, if we just provided you a\nKubernetes cluster (\"everybody gets a cluster\"), then you just got a place. And,\nI mean, we’ll severely limit it. We’ll make it limited in some way, so that\nyou’re not going to run the production stuff for long there. Or if you do, you have\nto pay for it. But we’re not going to try and make money off of the production\nresources. We want to make money off of making it really easy. So, really, what\nwe want to do is encourage you to, then, go and spin up your own Kubernetes\ncluster, say, on Google. And we’ll make a nice little link that says, \"Go and\nspin up a cluster on GKE.\" We’ll make that really, really easy, but to make it\nsuper easy, for some number of days, we can just provide you that cluster,\nautomatically.\n\n### Feature flags – [#779](https://gitlab.com/gitlab-org/gitlab-ee/issues/779)\n\nFeature flags are really about decoupling delivery from deployment. It’s the\nidea that you make your code, you deploy it, but you haven’t turned it on, so\nit’s not delivered yet. And the idea there is that it means you can merge in the\nmain line, more often, because it’s not affecting anybody. And, also, it really\nhelps because you can do things like: when I do deliver, I can deliver it for\ncertain people; just GitLab employees or just the Beta group, and then I can\ncontrol that rollout. So then, if there's an error rate spike, well, it’s just\na few a people and I know who they are, and they’re going to complain to me.\nIt’s no big deal. But I can test things out, get it polished, fix the problems,\nbefore rolling it out. And then, you can also do things like, roll it out to 10 percent\nof the people, 50 percent of the people, whatever. It’s all about reducing risk, and\nimproving quality, and fundamentally about getting things into your mainline\nquicker. So, it’s ops-ish, in that sense, but it’s, really, still pretty fully\non dev.\n\n### Artifact management – [#2752](https://gitlab.com/gitlab-org/gitlab-ee/issues/2752)\n\nArtifact management has become a hot topic lately. We already have a container\nregistry for Docker image artifacts, and we also have file-based artifacts that\nyou can pass between jobs, and pass between pipelines, and even pass between\ncross project pipelines. And we have ways to download them, and browse them, but\nif those artifacts happen to be things like Maven or Ruby or node modules, and\nyou want to publish them, and then consume them in other pipelines, we don’t\nhave a formal way to do that.\n\nAnd you could, obviously, publish to the open source, RubyGems, for example. But\nif you want a private Gem, that is only consumed by your team... Maybe that's\nnot as big for Ruby developers, but Java developers do that all the time. A lot\nof Java developers use Artifactory or Sonatype Nexus. In order to complete the\nDevOps tool chain, we need to have some first class support for that, either by\nbundling in one of these other providers, or by adding layers, and APIs, on top\nof our existing artifacts. My personal pet favorite right now is, let’s say we\ncan just tag our existing artifact, and say, \"Oh, this is Maven type of\nartifact,\" and then we expose that via an API and so then you can declare that\nin another project, and it would just consume the APIs, and just know how to do\nthat. But it would also use our built-in authentication so you don’t have to set\nup creds and do all this declaration; you can be like, \"Oh, I’ve got access to\nthis project and this project, so I can get the artifacts, and I can consume it\nall really easily.\"\n\n### Auto DevOps – [#35712](https://gitlab.com/gitlab-org/gitlab-ce/issues/35712)\n\n*Note: We shipped the first iteration of Auto DevOps in [10.0](/releases/2017/09/22/gitlab-10-0-released/#auto-devops)*\n\nSo, let’s talk about Auto DevOps. This spans from the near-term to the very\nlong-term. It’s great that we do a lot of DevOps, and in a very simplistic way,\nit’s like, \"Oh, but shouldn’t we just make this stuff automatic?\" The way I\nphrase it is, we should provide the best practices in an easy and default way.\nYou can set up a GitLab CI YAML, but you have to actively go and do that. But,\nreally, every project should be running some kind of CI. So, why don’t we just\ndetect when you’ve pushed up a project; we’ll just build it, and we’ll go and\ntest it, because we know how to do testing. Today, with Auto Deploy, we already\nuse Auto Build, with build packs. We will automatically detect, I think, one of\nseven different languages, and automatically build your Java app, or Ruby, or\nNode... and we use Heroku’s build packs, actually, to do this build. And so we\nbuild that up, and when using Auto Deploy, we’ll go ahead and deploy that. You\nstill have to, obviously, have a Kubernetes cluster in order to do that, so it’s\nnot fully automated if you don’t have that. But if you’ve got Kubernetes, hey,\nthis is a literally one click. You pick from a menu, say, \"Oh, I’m on\nKubernetes,\" and then hit submit, and you’ve got Auto Deploy and Auto Build.\n\nBut one of the things we don’t have is Auto CI. And that’s a little annoying,\nbut it’s one of the things we want to pick up, and actually, hopefully our CTO,\nDmitriy, is going to pick that up in Q3; it's one of his OKRs. Heroku,\nthemselves, actually extended build packs to do testing, and so that means that\nthere’s at least five build packs that know how to test these languages. And so,\nhey, let’s use that. But even if that doesn’t work, there’s a lot of other\nthings we can do. Other companies have all this stuff automated, as well. So if\nwe can’t use Heroku CI, being able to say, \"Oh, this is this language; we know\nhow to test this language,\" we'll be making that automatic.\n\nAutomatic is multiple levels of things. Is it a wizard that configures this\nstuff for me? Is it one click checkbox, that says, \"Yes, turn on auto CI,\" or is\nit templates that I can easily add into my GitLab CI YAML? I think, in order to\nqualify as auto, what we have to do here is that it shouldn’t be templates. It\nshouldn’t be blog posts that tell me how to do it. That’s just CI. It should be,\nliterally, just \"I pushed and it worked;\" or at most a checkbox or two.\n\nLet’s go further, what other thing could we just automate here? And not automate\nstrictly for the purposes of automation, but about bringing best practices to\npeople. So, you have to actively work hard, to turn these things off. If you\ndon’t want CI, then shut it off, but by default you should have this.\n\nSo, this is a really, really long list of things that will take us forever to\nget to. The first ones have links, because we’re tracking real issues for this.\nAuto Metrics is a great one. If you’re running certain languages, you should\njust be able to, really easily, go and just pull the right information out of\nthere. But whatever, the list is huge.\n\nBut the idea is that we can build up this Auto DevOps, even the marketing term,\nand start talking about it in that way, and to not just say that GitLab is great\nfor your DevOps and is a complete DevOps tool chain. But, in fact, we do all\nthis stuff for you automatically.\n\nThere’s a lot to be done to make this fully automated. And what percentage of\nprojects can we really do? Auto Deploy is a great example that only works for\nweb apps. If it’s not a web app, we can’t just deploy it. What would it mean? We\ndeploy it, and it just wouldn’t function. If you made a command line app, what\nwould deploy even mean? Or if it’s a Maven, or really any kind of module that\nyou bundled up and released, that’s not the same thing as a deploy. So, maybe we\nneed an Auto Release. It’s not on this list, but maybe it should be. But within\nthe web app space, we can do some of this stuff automatically.\n\nSo that’s it. Everything you ever wanted to know about DevOps.\n",[890,995,847],{"slug":3757,"featured":6,"template":683},"devops-strategy","content:en-us:blog:devops-strategy.yml","Devops Strategy","en-us/blog/devops-strategy.yml","en-us/blog/devops-strategy",{"_path":3763,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3764,"content":3770,"config":3775,"_id":3777,"_type":17,"title":3778,"_source":18,"_file":3779,"_stem":3780,"_extension":21},"/en-us/blog/gitlab-leader-continuous-integration-forrester-wave",{"title":3765,"description":3766,"ogTitle":3765,"ogDescription":3766,"noIndex":6,"ogImage":3767,"ogUrl":3768,"ogSiteName":671,"ogType":672,"canonicalUrls":3768,"schema":3769},"GitLab Continuous Integration named a Leader in the Forrester Wave™","GitLab cited as a Leader in The Forrester Wave™&#58; Continuous Integration Tools, Q3 2017 report released today.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683243/Blog/Hero%20Images/gitlab-ci-wave-cover.png","https://about.gitlab.com/blog/gitlab-leader-continuous-integration-forrester-wave","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Continuous Integration named a Leader in the Forrester Wave™\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2017-09-27\",\n      }",{"title":3765,"description":3766,"authors":3771,"heroImage":3767,"date":3772,"body":3773,"category":14,"tags":3774},[699],"2017-09-27","Today Forrester has evaluated GitLab as a Leader in [Continuous Integration (CI)](/solutions/continuous-integration/) in The Forrester Wave™: Continuous Integration Tools, Q3 2017 report. As the report states, “GitLab delivers ease of use, scalability, integration, and innovation.” We see CI/CD as a critical component of our offering, making it quicker and easier to deliver value through automation. The progress we’ve made in developing a CI/CD solution that’s seamlessly integrated is thanks largely to the participation and feedback of our community and customers.\n\n\u003C!-- more -->\n\nWe’re excited about [what the future holds for GitLab CI/CD](/direction/#ci--cd), so it’s great to know that others see its value. Furthermore Forrester states, “GitLab’s vision is to serve enterprise-scale, integrated software development teams that want to spend more time writing code and less time maintaining their tool chain.”\n{: .text-justify}\n\nWe’ve said it before (we say it a lot, actually): CI/CD is the cornerstone of modern software development. Delivering what customers want, faster, requires a modernized software development lifecycle that saves time, effort, and cost. Automation is key to this more efficient release cycle, which is why we’ve spent a lot of time developing our built-in test and release automation, so developers can spend less time stringing together their tool chain, and more on innovation and integrating customer feedback. We’re gratified to have been named a leader in CI by Forrester in their report on Continuous Integration Tools for Q3, 2017, which evaluated 10 vendors across 25 different criteria.\n{: .text-justify}\n\nWe had some key areas of success:\n\n## Top score in the Current Offering category\n\nGitLab received the highest score in Forrester’s Current Offering evaluation, which we believe confirms that our product is hard to beat when it comes to ease of installation, configuring builds, platform support, analytics, an intuitive UI, container support and more. This all adds up to a more seamless development process which facilitates DevOps practices and collaboration.\n\n## Highest score possible in the Strategy category\n\nForrester assessed our product strategy, market approach, training, consulting and support, giving us a 5.0, the highest possible score, for all three criteria. This is huge validation for our CI/CD vision, shaped with the help of our customers, community, and their contributions.\n\n## Just the beginning\n\nA significant part of that vision, Auto DevOps, just shipped with our [10.0 release](/releases/2017/09/22/gitlab-10-0-released/). Auto DevOps is a hands-free DevOps experience that automatically configures your build, test, code quality assurance, review apps, deployment, and monitoring in a single environment. Our out-of-the-box templates allow you to set up an end-to-end DevOps lifecycle at the push of a button.\n\nAuto DevOps is just the first step on a journey to building a complete and highly automated DevOps tool chain. Building on strong momentum, we’re working on a number of new features to better leverage our CI/CD tools in a more automated way for both operations as well as development teams. With the full automation we are planning, you will not only be able to deliver a new, functioning application from a developer’s machine to a production environment in minutes, but also monitor all production environments in one dashboard.\n\n### Faster time to value\n\nReducing the time teams spend on manual tasks means you can focus on what matters: building great products that your users want. GitLab CI/CD facilitates a more iterative approach to software development, by automatically testing new code, helping you to catch potential problems earlier in the release cycle, taking the anxiety out of deployments and reducing the cost of fixing bugs. This puts you in a position to release more often, shortening the feedback loop and helping you to release features and improvements that your customers are asking for.\n\n### Collaboration without dependency\n\nThe fact that GitLab CI/CD is fully integrated makes all the difference. Less context-switching means key information doesn’t slip through the cracks like it can when teams work in different tools, with no single source of truth. Working in an integrated tool fosters collaboration by improving visibility, keeping everyone on the same page and making it easy for different teams to participate and comment. Features like review apps – which automatically spin up a dynamic environment for merge requests, so you can preview changes right away – make it even easier to share improvements with stakeholders and gather feedback.\n\nBeing named a Leader in this Wave evaluation, and receiving the Top Score in Current Offering, as well as the highest score possible for Strategy, is validation for us of the strength of today’s GitLab CI offering as well as our vision for the future.",[680,847],{"slug":3776,"featured":6,"template":683},"gitlab-leader-continuous-integration-forrester-wave","content:en-us:blog:gitlab-leader-continuous-integration-forrester-wave.yml","Gitlab Leader Continuous Integration Forrester Wave","en-us/blog/gitlab-leader-continuous-integration-forrester-wave.yml","en-us/blog/gitlab-leader-continuous-integration-forrester-wave",{"_path":3782,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3783,"content":3789,"config":3794,"_id":3796,"_type":17,"title":3797,"_source":18,"_file":3798,"_stem":3799,"_extension":21},"/en-us/blog/tasktop-gitlab-integration",{"title":3784,"description":3785,"ogTitle":3784,"ogDescription":3785,"noIndex":6,"ogImage":3786,"ogUrl":3787,"ogSiteName":671,"ogType":672,"canonicalUrls":3787,"schema":3788},"One step closer to DevOps success with GitLab + Tasktop","Good news for enterprise devs: flow GitLab Issues into your Agile tool for greater visibility and collaboration.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671305/Blog/Hero%20Images/tasktop-integration-cover.png","https://about.gitlab.com/blog/tasktop-gitlab-integration","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"One step closer to DevOps success with GitLab + Tasktop\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2017-09-15\",\n      }",{"title":3784,"description":3785,"authors":3790,"heroImage":3786,"date":3791,"body":3792,"category":14,"tags":3793},[2489],"2017-09-15","\n\nTasktop, the value stream integration tool for enterprise development teams, has launched their [GitLab Issues Connector](http://www.tasktop.com/integrations/gitlab-issues). Now you can automatically flow GitLab issues bi-directionally into tools such as JIRA, CA Agile Central (formerly Rally), HPE ALM, and VersionOne, facilitating effective DevOps at scale.\n\n\u003C!-- more -->\n\nGitLab Issues have endless applications: from proposing new features, to discussing implementation of new ideas, to obtaining support, an issue can serve a host of different functions.\n\nSo we're happy that Tasktop now makes it even easier to integrate issues into your workflow. It works with both the [Community and Enterprise editions](/stages-devops-lifecycle/) of GitLab to flow issues from GitLab into separate purpose-built tools, such as a development team’s Agile planning tools. An issue is then visible in both GitLab and your planning tool, and is always reflective of the current, up-to-date state. This means everyone is in the picture, whether the bulk of their work is done in GitLab or another tool.\n\nThis is great news for cross-functional teams and [collaboration](https://handbook.gitlab.com/handbook/values/#collaboration) (it's no secret, we're big fans).\n\n## We asked Tasktop, \"Why GitLab?\"\n\n\"There was (and is) strong customer demand for GitLab. We built this integration as it expands our ecosystem, especially in the Issue Tracker space. We see customers needing to connect relatively lightweight issue trackers with agile development tools, typically to allow defects to be sent to developers. GitLab Issues works with any of our connectors, but it makes the most sense when integrating with tools such as JIRA, CA Agile Central, or Microsoft TFS as customers seek to connect their software value stream from end-to-end.\" - Trevor Bruner, Product Manager, Tasktop\n\n## What we say\n\nGitLab VP of Product Job van der Voort:\n\n>\"GitLab allows anyone to reduce their time to value, bringing their ideas to production faster. With the Tasktop integration, yet another hurdle in going from one application to the next is removed. We're excited to see enterprises ship faster and more reliably.\"\n\nThe GitLab Issues Connector is now available in all editions of [Tasktop Integration Hub](https://www.tasktop.com/hub).\n\n*Is this integration the answer to your context-switching troubles? What will you use it for? Let us know in the comments!*\n",[232,995],{"slug":3795,"featured":6,"template":683},"tasktop-gitlab-integration","content:en-us:blog:tasktop-gitlab-integration.yml","Tasktop Gitlab Integration","en-us/blog/tasktop-gitlab-integration.yml","en-us/blog/tasktop-gitlab-integration",{"_path":3801,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3802,"content":3808,"config":3813,"_id":3815,"_type":17,"title":3816,"_source":18,"_file":3817,"_stem":3818,"_extension":21},"/en-us/blog/unveiling-gitlabs-new-navigation",{"title":3803,"description":3804,"ogTitle":3803,"ogDescription":3804,"noIndex":6,"ogImage":3805,"ogUrl":3806,"ogSiteName":671,"ogType":672,"canonicalUrls":3806,"schema":3807},"Unveiling GitLab's new navigation","A whole new way to navigate.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678236/Blog/Hero%20Images/navigation.jpg","https://about.gitlab.com/blog/unveiling-gitlabs-new-navigation","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Unveiling GitLab's new navigation\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sarrah Vesselov\"}],\n        \"datePublished\": \"2017-09-13\",\n      }",{"title":3803,"description":3804,"authors":3809,"heroImage":3805,"date":3810,"body":3811,"category":14,"tags":3812},[2735],"2017-09-13","\n\nIn 9.4 we took a big step toward [improving our navigation](/blog/redesigning-gitlabs-navigation/) here at GitLab. After several rounds of research and testing, we released our redesigned navigation under a feature flag. We chose this method so that we could continue implementing improvements discovered in our original research while gathering real-world feedback from our users.\n\n\u003C!-- more -->\n\n## We heard you!\n\nWe received an incredible number of responses in the [issue](https://gitlab.com/gitlab-org/gitlab-ce/issues/34917) created to gather feedback. The feedback gave us valuable insight into the many different types of workflows our users have. It reaffirmed some of the decisions made and challenged us to rethink others. Using this feedback, we iterated on the navigation for two release cycles, focusing on the changes that would add the most benefit. Here are some of the high-level additions we made:\n\n### Collapsible sidebar and addition of icons – [#34028](https://gitlab.com/gitlab-org/gitlab-ce/issues/34028)\n\nFrom the beginning, we knew that the sidebar would need to be collapsible in order to maximize screen space. With the right sidebar present in issues and merge requests, we didn’t want to box you in. The addition of icons enabled us to collapse the sidebar down to a mere 50px.\n\n{: .text-center}\n![collapsible menu](https://about.gitlab.com/images/blogimages/unveiling-gitlabs-new-navigation/menu-loop.gif){: .shadow}\n\n### Flyout menu – [#34026](https://gitlab.com/gitlab-org/gitlab-ce/issues/34026)\n\nA fly-out menu has been introduced in order to reduce the number of clicks and the time necessary to access a sub-page. Now, if you want to access Issue Boards, there is no need to click on Issues and wait for the initial ‘Issue List’ to load. When hovering over a section with second-level items, the fly-out drop-down menu will appear to offer quick access to those second-level sections.\n\n{: .text-center}\n![flyout menu](https://about.gitlab.com/images/blogimages/unveiling-gitlabs-new-navigation/flyouts.png){: .shadow}\n\nWe've also adjusted the hover color of the menu items after many of you expressed that the intensity of the color was harsh and distracting. The colors changed from purple to whites and grays without sacrificing the overall contrast.\n\n### Dropdown links in top bar – [#35010]( https://gitlab.com/gitlab-org/gitlab-ce/issues/35010)\n\nNo more clicking on Projects and waiting for the Projects page to load! In order to provide quicker access to projects, a dropdown has been added to the Projects link in the top bar. The dropdown opens on click, following the behavior of the + button and personal dropdowns in the top bar.\n\n{: .text-center}\n![dropdown links](https://about.gitlab.com/images/blogimages/unveiling-gitlabs-new-navigation/dropdown-links.png){: .shadow}\n\nThe dropdown contains direct links to the different subsections of the Projects dashboard (Your Projects, Starred Projects and Explore projects). Better still, on the right-hand side of the dropdown is a list of your most frequently accessed projects. A search box allows you to navigate to your projects that are not present in the list.\n\n### Navigation color themes – [#35012](https://gitlab.com/gitlab-org/gitlab-ce/issues/35012)\n\nOn the subject of colors, one of the most requested features was the ability to change the navigation colors. Previous versions of GitLab allowed users to customize the navigation sidebar with a color theme. Many used this to differentiate between different GitLab instances. The new navigation presented the opportunity to bring back this valuable feature! The default palette will remain indigo, based on the GitLab identity. You will now be able to choose between four additional color schemes; Dark, Light, Blue, and Green.\n\n{: .text-center}\n![navigation color themes](https://about.gitlab.com/images/blogimages/unveiling-gitlabs-new-navigation/color-theme.png){: .shadow}\n\n### Improved breadcrumbs – [#35269](https://gitlab.com/gitlab-org/gitlab-ce/issues/35269)\n\nWe received a lot of feedback on the breadcrumbs. While many of you found them to be helpful, many also found them to be repetitive, inconsistent, and taking up too much overall space. We began by removing GitLab from the start of the breadcrumbs and moving all breadcrumb items onto one line. In order to improve the movement between elements in the breadcrumb, we replaced the slashes with chevrons. We also removed the action buttons from the breadcrumb bar altogether.\n\n{: .text-center}\n![action buttons moved](https://about.gitlab.com/images/blogimages/unveiling-gitlabs-new-navigation/action-remove.png){: .shadow}\n\nWhen multiple subgroups are present, we place them inside of an ellipsis button. This reduces the cognitive load while keeping them accessible. For each breadcrumb element, we have fixed the min-width and the max-width to make sure the whole breadcrumb contracts and expands according to the available space.\n\n{: .text-center}\n![breadcrumbs](https://about.gitlab.com/images/blogimages/unveiling-gitlabs-new-navigation/breadcrumbs.png){: .shadow}\n\nThe breadcrumb labels themselves are more consistent and intuitive. A list of the paths and corresponding breadcrumb titles can be found in the [issue description](https://gitlab.com/gitlab-org/gitlab-ce/issues/35269).\n\n### Reduce header height and redesign active/hover/dropdown styles – [#35424]( https://gitlab.com/gitlab-org/gitlab-ce/issues/35424)\n\nWe reduced the overall header height to give you as much vertical screen space as possible. By popular request, all global links are shown by default and collapse into the 'More' dropdown as space gets tighter. The header active/hover/dropdown styles have been redesigned with a bold new style and Todo/Issue/MR badges are centered to the icons themselves.\n\n{: .text-center}\n![active state](https://about.gitlab.com/images/blogimages/unveiling-gitlabs-new-navigation/active-states.png){: .shadow}\n\n{: .text-center}\n![notifications](https://about.gitlab.com/images/blogimages/unveiling-gitlabs-new-navigation/to-do.png){: .shadow}\n\n\n## Further iteration\n\nWe feel confident that GitLab’s overall navigation has been greatly improved over the last two releases. That is why, as of the 10.0 release, we will remove it from the feature flag and make it the only way to navigate. As always here at GitLab, everything is in draft. We will continue to monitor feedback, test, and iterate.\n\n## Upcoming efforts\n\nLooking forward, the UX team has some big things planned. In addition to improving user flows, we are working hard to increase the overall quality and polish of the UX experience. Stay tuned for a series of blog posts dedicated to explaining our processes as we work on the following key initiatives:\n\n- Change chromatic/full colors to a more harmonious palette [#28614](https://gitlab.com/gitlab-org/gitlab-ce/issues/28614)\n- Establish a proper type ramp to improve contrast and readability [#24310](https://gitlab.com/gitlab-org/gitlab-ce/issues/24310)\n- Iconography is a powerful visual cue to the user and should reflect our particular sense of style [#32894](https://gitlab.com/gitlab-org/gitlab-ce/issues/32894)\n- Architect design process for maintaining master files/symbols team-wide [#26](https://gitlab.com/gitlab-org/gitlab-design/issues/26)\n",[1039,890],{"slug":3814,"featured":6,"template":683},"unveiling-gitlabs-new-navigation","content:en-us:blog:unveiling-gitlabs-new-navigation.yml","Unveiling Gitlabs New Navigation","en-us/blog/unveiling-gitlabs-new-navigation.yml","en-us/blog/unveiling-gitlabs-new-navigation",{"_path":3820,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3821,"content":3827,"config":3832,"_id":3834,"_type":17,"title":3835,"_source":18,"_file":3836,"_stem":3837,"_extension":21},"/en-us/blog/comparing-confusing-terms-in-github-bitbucket-and-gitlab",{"title":3822,"description":3823,"ogTitle":3822,"ogDescription":3823,"noIndex":6,"ogImage":3824,"ogUrl":3825,"ogSiteName":671,"ogType":672,"canonicalUrls":3825,"schema":3826},"Comparing confusing terms in GitHub, Bitbucket, and GitLab (2017)","Learn the differences between GitLab, GitHub, and Bitbucket's terminology.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666685/Blog/Hero%20Images/comparing-confusing-terms-in-github-bitbucket-and-gitlab-cover.jpg","https://about.gitlab.com/blog/comparing-confusing-terms-in-github-bitbucket-and-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Comparing confusing terms in GitHub, Bitbucket, and GitLab (2017)\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Marcia Ramos\"}],\n        \"datePublished\": \"2017-09-11\",\n      }",{"title":3822,"description":3823,"authors":3828,"heroImage":3824,"date":3830,"body":3831,"category":14},[3829],"Marcia Ramos","2017-09-11","Developers rely on multiple platforms to manage repositories, depending on\nclient and project needs.\nThey might contribute to a community project on GitHub, while working on one\nclient's on premises GitLab instance and another client's project in Mercurial\non Bitbucket.\nConfusion can arise when you switch between platforms.\nIn this post, we have a handy reference guide to explain\nsome potentially confusing terms, especially if you're new\nto GitLab.\n\n\u003C!--more-->\n\nThis article was originally written by [Heather McNamee](https://twitter.com/nearlythere) and [published by GitLab](/blog/comparing-terms-gitlab-github-bitbucket/) on Jan 26th, 2016.\nUpdated by Marcia Ramos on Sep 11th, 2017.\n{:.note}\n\n## Migrating to GitLab\n\nSince GitLab's [8.4 Release](/releases/2016/01/22/gitlab-8-4-released/), we have improved\n[migration support](https://docs.gitlab.com/ee/user/project/import/)\nfor those coming from diverse platforms to GitLab.\n\nGitLab imports your repositories, wikis, issues, pull requests, and milestones\nfrom [GitHub](https://docs.gitlab.com/ee/user/project/import/github.html),\nas well as from [Bitbucket](https://docs.gitlab.com/ee/user/project/import/bitbucket.html).\n\nWhile most terminology is shared\nbetween the platforms, some differences lead to confusion\nfor users.\nGit-specific terms like commits, push, pull, fetch, merge and so forth are the same.\nCommon features most repository managers have are also the same: such as users, issues, webhooks, milestones, etc.\n\n## Pull requests vs merge requests\n\nSome features have different names. For example a “pull request” in GitHub and Bitbucket is called a “merge request” in GitLab.\n\nWe figured since you're often making a request to `merge` a feature branch into the master branch, we call this a\n\"merge request\" and you'll hear us talk about MRs and not PRs.\n\nRead through this page for a full [comparison between MRs and PRs](/competition/github/).\n\nIf you’re brand new to GitLab, we’ve made this handy cheat sheet to help you orient yourself and clear things up.\n\n![The Import Project UI in GitLab showing you can import from GitHub, Bitbucket, etc](https://about.gitlab.com/images/blogimages/gitlab-terminology.png){:.shadow}\n\n## Teams, repositories, organizations?\n\nFrom teams to repositories to organizations, there’s potential for fresh confusion.\nIn GitHub, *repositories* contain the Git/SVN repository, and the project assets\nsuch as issues, contribution metrics, etc.\nHowever users often refer to repos as *projects* interchangeably.\n\nSo in GitLab, we call that container a **[Project](https://docs.gitlab.com/ee/user/project/)**.\nThat includes the Git [repository](https://docs.gitlab.com/ee/user/project/repository/),\n[issues](https://docs.gitlab.com/ee/user/project/issues/),\n[merge requests](https://docs.gitlab.com/ee/user/project/merge_requests/),\n[milestones](https://docs.gitlab.com/ee/user/project/milestones/),\nand much more.\n\n## Creating a new project in GitLab\n\nWhen you set up a project, you can, among many other options:\n\n- Choose [project features](https://docs.gitlab.com/ee/user/project/#project-39-s-features).\n- Set the project avatar and its visibility level (Private, Internal or Public).\nYou can have as many private projects as you want.\n- Build, test, and deploy your app with [GitLab CI/CD](/solutions/continuous-integration/).\n- Collaborate on code with [merge requests](https://docs.gitlab.com/ee/user/project/merge_requests/) and [Review Apps](https://docs.gitlab.com/ee/ci/review_apps/).\n- [Integrate](https://docs.gitlab.com/ee/user/project/integrations/)\nwith third-party applications\n\nIt's important to make this distinction because you import a **project** in\nGitLab, regardless of whether that is called a **repository** elsewhere. In\nGitLab, the repository is *part* of a project.\n{:.alert .alert-info}\n\n![The Import Project UI in GitLab showing you can import from GitHub, Bitbucket, etc](https://about.gitlab.com/images/blogimages/comparing-confusing-terms-in-github-bitbucket-and-gitlab-project.png){:.shadow}\n\n## Projects, organizations, and groups\n\nThis is where it could get confusing.\nNow Bitbucket groups multiple repositories into *Projects*, multiple projects into teams,\nand teams in Bitbucket are analogous to an *Organization* in GitHub.\n\nIn GitLab, we call this a **[Group](https://docs.gitlab.com/ee/user/group/)**.\n\nThis allows you to collect several projects together and also invite\nmembers (other users) to collaborate. Those members can then configure their own [group-level notifications](https://docs.gitlab.com/ee/user/profile/notifications.html#group-notifications).\n\nProjects can be stored in only one group at once.\nHowever, you can [share a project with other groups](https://docs.gitlab.com/ee/user/project/members/share_project_with_groups.html) in [GitLab Enterprise Edition Starter](/pricing/).\nAnd even those settings can be [locked at the group level](https://docs.gitlab.com/ee/user/group/#share-with-group-lock-ees-eep) so you can avoid\nsomeone sharing a private project to other groups, for example.\n\nThe confusion is understandable, especially if, like many developers,\nyou work with a number of clients each on different platforms.\n\nI hope this has cleared up confusion. If you have any questions, please create a\n[new issue](https://gitlab.com/gitlab-org/gitlab-ce/issues/new) or\ntweet at us [@GitLab](https://twitter.com/gitlab)!\n\n----\n\n[Cover image](https://www.pexels.com/photo/ask-blackboard-chalk-board-chalkboard-356079/) licensed under [CC0](https://www.pexels.com/photo-license/).\n",{"slug":3833,"featured":6,"template":683},"comparing-confusing-terms-in-github-bitbucket-and-gitlab","content:en-us:blog:comparing-confusing-terms-in-github-bitbucket-and-gitlab.yml","Comparing Confusing Terms In Github Bitbucket And Gitlab","en-us/blog/comparing-confusing-terms-in-github-bitbucket-and-gitlab.yml","en-us/blog/comparing-confusing-terms-in-github-bitbucket-and-gitlab",{"_path":3839,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3840,"content":3846,"config":3852,"_id":3854,"_type":17,"title":3855,"_source":18,"_file":3856,"_stem":3857,"_extension":21},"/en-us/blog/what-is-a-vp-of-scaling",{"title":3841,"description":3842,"ogTitle":3841,"ogDescription":3842,"noIndex":6,"ogImage":3843,"ogUrl":3844,"ogSiteName":671,"ogType":672,"canonicalUrls":3844,"schema":3845},"VP of Scaling: What it is and how it works at GitLab","At GitLab we introduced the role of VP of Scaling early on. But what does that role mean and how has it worked at GitLab?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680369/Blog/Hero%20Images/vp-of-scaling.jpg","https://about.gitlab.com/blog/what-is-a-vp-of-scaling","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"VP of Scaling: What it is and how it works at GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Ernst van Nierop\"}],\n        \"datePublished\": \"2017-09-08\",\n      }",{"title":3841,"description":3842,"authors":3847,"heroImage":3843,"date":3849,"body":3850,"category":14,"tags":3851},[3848],"Ernst van Nierop","2017-09-08","\n\nFast-growing companies sometimes need leadership in new initiatives before there's time to hire a team member dedicated to them. This is how we tackled this challenge.\n\n\u003C!-- more -->\n\nIn the last two years GitLab has grown from about 15 people in a handful of countries to now well [over 180 people in more than 30 countries](/company/team/). In a company that is growing as fast as GitLab is, there is always some team that needs to be built, or some team to be temporarily led while a leader for the longer term is found, or some initiative to be started that doesn't (yet) fit within existing teams or departments. We can – and do – add people to the\nGitLab team to tackle these challenges. But hiring takes time and isn't always\nappropriate for a one-off or early-stage initiative. GitLab is also a fully remote and international organization that moves fast, and we can't afford to wait for these challenges to sit idle.\n\n## So who should build that team, be that interim leader, or start that initiative?\n\nAt GitLab, we've addressed this with\nthe role of VP of Scaling. The\nword \"scaling\" in this case relates to the _organization_ instead of, for example, sales or user-base. Think of the VP of Scaling as a full-time interim\nmanager rotating between vastly different functions, building teams and\nscalable processes. The job is to \"get in\" and to figure out how to \"get out\"\nresponsibly. (As an aside: at first we struggled to come up with a good name for this role and considered everything from janitor/plumber (sweeping /connecting the entire company – vetoed), to\n[Mr. Wolf](http://www.indiewire.com/2012/03/being-winston-wolfe-9-reasons-why-pulp-fiction-is-the-management-guide-every-indie-filmmaker-needs-48445/)\n(fixes problems on demand – too negative), until eventually settling on the\nkey word of \"scaling.\")\n\n## What does the role involve?\n\nA VP of Scaling should be broadly deployable in the company and go where the\nchallenges are. For us, the first task at hand was to scale up our team, starting with our ability to recruit and hire quickly and efficiently. And so it was that I began in the role of Interim Head of People Operations;\nfrom sending out employment agreements and setting up an candidate tracking\nsystem, to laying the groundwork for our\n[hiring process](/handbook/hiring/), building the\nbeginnings of the People Operations team, and developing the first iteration of the [global compensation calculator](/handbook/total-rewards/compensation/). Once the People Operations team was left in more experienced hands I moved on to help as (interim) Support Lead, followed more recently by time as interim Director of Infrastructure, and currently interim Director of Security.\n\nWith each of the teams that I've worked with, the challenges they've faced are a direct result of the success of the company. The Support team \"feels\" it through more customer tickets, and the Infrastructure team \"feels\" the increased usage of GitLab.com. Although no two teams are identical, there are some common approaches that I have found to be helpful in an interim leadership role.\n\n> Perhaps the most important point is to listen to the team – and to never stop asking questions.\n\nPerhaps the most important point is to listen to the team – and to never stop asking questions. The individuals in our team are smart, they have domain\nexpertise, and they often have great ideas on what needs to be done in order to be successful as a team. Regarding the \"never stop asking questions\" part, well, I think I've had that bit covered ever since I had the ability to talk.\n\nComing onboard with a new team, I listen to the concerns and ideas from the team and from the management chain that they report into, and sort the challenges into those that need to be addressed _right now_ (e.g. add more people to the team through hiring or borrowing; unblock a decision on topic X) from those that need to be addressed on a longer timescale. Once the immediate needs are taken care of, with the help of the team and sometimes outside experts we start sketching out what Utopia looks like for this team. What does the team, and the service the team provides, look like in a world where GitLab is 10x more popular? How about 100x?\n\n>Once the immediate needs are taken care of, with the help of the team and sometimes outside experts we start sketching out what Utopia looks like for this team.\n\nFor example, the Support Team faces the dual challenge of a growing _customer\nbase_ as well as a growing _product_ in terms of product scope and capabilities – straining the team. The \"right now\" solution involved adding\n[support turbos](/handbook/support/#additional-resources-for-the-support-team) and hiring people in multiple timezones to spread the customer ticket load evenly. To make it _scalable_ beyond the immediate needs is part of the Utopia for any team. In this case, our Support Engineers iterated quickly with the new hires to enable a mostly self-guided onboarding process as well as self-guided pathways for [continuous learning](/handbook/support/advanced-topics/).\n\nJumping from team to team in an interim role also provides for a great\nopportunity to help spread best practices from team to team, and to erase or\nmanage \"interfaces\" between teams. For example, the Support Team feels the\n_customer's_ sense of urgency around needing bug fixes or feature development,\nbut did not have a great way to effectively communicate that sense of urgency\nto the rest of the team without just making a lot of noise. So the team came up with a quantitative metric using\n[issue priority labels](/handbook/support/workflows/working-with-issues.html#adding-labels), with good success. When we noticed that the Infrastructure team – as the largest \"customer\" of GitLab Enterprise Edition – was having similar escalation problems, it was easy to adopt priority labels for [security](/handbook/security/#security-priority-labels) as well as [availability and performance](/handbook/engineering/performance/#performance-labels).\n\n## What are the challenges of the role?\n\nA key challenge (and attraction) of this role is that I need to get up to speed quickly on areas of the company and product in which I do not have much prior experience. I rely on the kindness and the expertise of the team, and benefit a lot from our dedication to documenting everything (which we do as an integral part of being successful in a remote-only setting). Of course I contribute back to this documentation as well: as we worked on reducing the latency of GitLab.com, I found myself wondering, \"What actually happens when a user enters a GitLab.com URL in their browser?\" and then documented the answer(s) on our handbook page about\n[GitLab.com performance](/handbook/engineering/performance).\nAnother challenge is, unsurprisingly, that I get somewhat attached to the teams that I'm actively working with. I enjoy learning from them, I enjoy working with and enabling them, and I enjoy getting to know the people behind the GitLab handle.\nIt can be difficult to _fully_ move on to the next assignment, with a few pending issues tenaciously hanging on to my todo list for way too long.\n\nDespite the odd job title and the fluid nature of the job itself, I like to think that it has worked well for us here at GitLab. Do you have a similar role at your company? We'd love to hear about it!\n\n[Cover image](https://unsplash.com/@ripato?photo=tpg_oEPzajA) by [Ricardo Gomez Angel](https://unsplash.com/@ripato) on Unsplash\n{: .note}\n",[890,955],{"slug":3853,"featured":6,"template":683},"what-is-a-vp-of-scaling","content:en-us:blog:what-is-a-vp-of-scaling.yml","What Is A Vp Of Scaling","en-us/blog/what-is-a-vp-of-scaling.yml","en-us/blog/what-is-a-vp-of-scaling",{"_path":3859,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3860,"content":3865,"config":3870,"_id":3872,"_type":17,"title":3873,"_source":18,"_file":3874,"_stem":3875,"_extension":21},"/en-us/blog/gitlab-com-paid-features",{"title":3861,"description":3862,"ogTitle":3861,"ogDescription":3862,"noIndex":6,"ogImage":967,"ogUrl":3863,"ogSiteName":671,"ogType":672,"canonicalUrls":3863,"schema":3864},"Introducing exclusive features to GitLab.com Bronze, Silver and Gold plans","New features are coming exclusively to GitLab.com paid plans – find out why and how to upgrade.","https://about.gitlab.com/blog/gitlab-com-paid-features","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Introducing exclusive features to GitLab.com Bronze, Silver and Gold plans\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2017-09-01\",\n      }",{"title":3861,"description":3862,"authors":3866,"heroImage":967,"date":3867,"body":3868,"category":14,"tags":3869},[699],"2017-09-01","\n\nAs of today, we're making some changes to our GitLab.com subscription plans, with some exclusive features included in Bronze, Silver and Gold plans.\n\n\u003C!-- more -->\n\nHere's how the changes will affect:\n- [existing Silver and Gold plan users](#how-will-these-changes-affect-existing-silver-or-gold-plan-users)\n- [existing Bronze plan users](#how-will-it-affect-existing-bronze-plan-users)\n- [existing Free plan users](#how-will-it-affect-existing-free-plan-users)\n\nAt GitLab, we're committed to providing an integrated solution that supports the entire software development lifecycle at a price where everyone can contribute. We also want to keep improving and adding new features to GitLab.com. Earlier this year we [introduced paid subscriptions](/blog/introducing-subscriptions-on-gitlab-dot-com/) to help us do just that. Initially all Silver plan features were temporarily available to all Free and Bronze plan users. But as of today, each plan will now only have the correct features associated with its plan level. **Public projects will still have free access to all features and unlimited CI/CD**, as part of our continued commitment to open-source software.\n\n## FAQ\n\n### What's changed in the GitLab.com subscription plans?\n\nWe've introduced exclusive paid features to GitLab.com's Bronze, Silver, and Gold plans. Starting on September 1st, all new GitLab.com accounts will only have access to the features outlined in their plan. See our [GitLab.com pricing page](/pricing/#gitlab-com) for information on what features are available in each plan. We'll continue to add features to the plans with each new release.\n\n### How will these changes affect existing Silver or Gold plan users?\n\nThis change has no effect on teams/individuals who purchased the Silver or Gold GitLab.com plans.\n\n### How will it affect existing Free plan users?\n\nFor existing users on the Free plan, we've created a special Early Adopter Plan for you. This plan has all of the existing features available in our Silver plan, with the exception of additional CI minutes or premium support. Any group or user account created before September 1st will be put onto this plan for a year for free. While we will not add new paid features to this plan, you'll continue to enjoy powerful features, like multi-project pipelines and canary deployments, for the next year. After 12 months, you will get rolled back to the Free plan. You can upgrade at any time.\n\n### How will it affect existing Bronze plan users?\n\nFor existing users on the Bronze plan, you will continue to have access to Bronze features, but not the Silver features that were previously included. However, we will be adding new Bronze features for you in the coming releases, whereas users on the Early Adopter plan will need to upgrade to enjoy any new features we add in the future.\n\n### What about public projects?\n\nWe're still committed to open-source software, so all paid features are also available to all public projects on GitLab.com.\n\n### What if I want to upgrade my plan today?\n\nFor users that are interested in upgrading their plan, please visit the [GitLab.com pricing](/pricing/#gitlab-com) page and click on the **Buy Now** button. The benefit of upgrading your plan today is that you will get access to the upcoming GitLab.com features that will only be available in paid plans.\n\n### What if I have questions or comments about the change?\n\nIf you have questions or feedback about these changes, please let us know by [filling out this feedback form](https://docs.google.com/forms/d/e/1FAIpQLSdr-Top4N4oObYaj_5ShwcVNhysSheSfH_x-r_nENLBeRGtjQ/viewform).\n\n## What's included in the plans\n\n### Free Plan\n\nAt GitLab, we \u003Ci class=\"fas fa-heart\" aria-hidden=\"true\">\u003C/i> free and are committed to offering a free plan with unlimited private repos, unlimited contributors, and access to an end-to-end development solution. This is a great option for personal or small projects.\n\n### Bronze Plan\n\nFor teams that need access to more advanced workflow features like [multiple issue boards](https://docs.gitlab.com/ee/user/project/issue_board.html#multiple-issue-boards), [issue boards with milestones](https://docs.gitlab.com/ee/user/project/issue_board.html#board-with-a-milestone), [multiple approvers](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/rules.html), [burndown charts](https://docs.gitlab.com/ee/user/project/milestones/burndown_and_burnup_charts.html) and more. The Bronze plan also includes next business day [support](/support/).\n\n### Silver Plan\n\nFor teams who need more robust DevOps capabilities. Features include everything in the Free and Bronze plans, plus [multi-project pipeline graphs](https://docs.gitlab.com/ee/ci/multi_project_pipelines.html), [deploy boards](https://docs.gitlab.com/ee/user/project/deploy_boards.html) and [canary deployments](https://docs.gitlab.com/ee/user/project/deploy_boards.html#canary-deployments). Silver plan users get 10,000 CI minutes and 24/7 emergency support.\n\n### Gold Plan\n\nGold users have access to all Free, Bronze and Silver features, plus 50,000 CI pipeline minutes per month on our shared runners. This is great for teams with heavy CI/CD usage.\n\nSee [our pricing page](/pricing/#gitlab-com) for a full list of features included in each plan.\n",[680,890],{"slug":3871,"featured":6,"template":683},"gitlab-com-paid-features","content:en-us:blog:gitlab-com-paid-features.yml","Gitlab Com Paid Features","en-us/blog/gitlab-com-paid-features.yml","en-us/blog/gitlab-com-paid-features",{"_path":3877,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3878,"content":3884,"config":3889,"_id":3891,"_type":17,"title":3892,"_source":18,"_file":3893,"_stem":3894,"_extension":21},"/en-us/blog/email-opt-in-policy-announcement",{"title":3879,"description":3880,"ogTitle":3879,"ogDescription":3880,"noIndex":6,"ogImage":3881,"ogUrl":3882,"ogSiteName":671,"ogType":672,"canonicalUrls":3882,"schema":3883},"New email policy: Let us know if you want to hear from us!","We're changing our email policy, and you'll only hear from us if you explicitly opt in.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683564/Blog/Hero%20Images/email-policy-change.jpg","https://about.gitlab.com/blog/email-opt-in-policy-announcement","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"New email policy: Let us know if you want to hear from us!\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2017-08-31\",\n      }",{"title":3879,"description":3880,"authors":3885,"heroImage":3881,"date":3886,"body":3887,"category":14,"tags":3888},[699],"2017-08-31","\n{::options parse_block_html=\"true\" /}\n\n\u003Cdiv class=\"panel panel-info\">\n\n**Note from September 30, 2018: Email policy has been updated**\n{: .panel-heading}\n\n\u003Cdiv class=\"panel-body\">\n\nAt GitLab, we strive to communicate with people in a way that is beneficial to them. Most of our email marketing communications follow an explicit opt-in policy, although at times, we may communicate via email to people who have not explicitly opted in. We do this to offer something of value (e.g. an invitation to a workshop, dinner, the opportunity to meet an industry leader, etc. – not an email inviting you to read a blog post). We always include the unsubscribe link in our communications and we respect the unsubscribe list.\n\n\u003C/div>\n\u003C/div>\n\n{::options parse_block_html=\"false\" /}\n\nWith [GitLab 9.5](/releases/2017/08/22/gitlab-9-5-released/) we introduced a change to our email policy. If you want to keep hearing from us (we hope you do!) you'll need to opt in by visiting the [subscription center](https://page.gitlab.com/SubscriptionCenter.html).\n\n\u003C!-- more -->\n\nIn the past, signing up for GitLab.com opted you in automatically to a subscription to our newsletter. Many of our users read and enjoy it, but we want to give you a choice, so we're changing our policy to send communication with your explicit opt-in only. With this change, when you sign up or visit your subscription center, you'll be able to see all your options and have full control over what types of messages you receive from us*.\n\n![New email subscription boxes](https://about.gitlab.com/images/blogimages/email-policy-opt-in.png){: .shadow}\n\nNow you can specify that you want to hear about upcoming events or webcasts, or be kept in the know with security alerts. Tick as many or as few boxes as suits you.\n\n*You may still receive system emails associated with your account or GitLab instance\n{: .note}\n\n\"[Muriwai, New Zealand](https://unsplash.com/@mathyaskurmann?photo=fb7yNPbT0l8)\" by [Mathyas Kurmann](https://unsplash.com/@mathyaskurmann) on Unsplash\n{: .note}\n",[680,890],{"slug":3890,"featured":6,"template":683},"email-opt-in-policy-announcement","content:en-us:blog:email-opt-in-policy-announcement.yml","Email Opt In Policy Announcement","en-us/blog/email-opt-in-policy-announcement.yml","en-us/blog/email-opt-in-policy-announcement",{"_path":3896,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3897,"content":3903,"config":3908,"_id":3910,"_type":17,"title":3911,"_source":18,"_file":3912,"_stem":3913,"_extension":21},"/en-us/blog/gitlab-zapier-integration",{"title":3898,"description":3899,"ogTitle":3898,"ogDescription":3899,"noIndex":6,"ogImage":3900,"ogUrl":3901,"ogSiteName":671,"ogType":672,"canonicalUrls":3901,"schema":3902},"There's a Zap for that. Automate your workflows with GitLab + Zapier","With Zapier's GitLab integration you can create new Issues directly from within Gmail, get Slack notifications for new Issues and much more.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671323/Blog/Hero%20Images/zapier-gitlab-integration.jpg","https://about.gitlab.com/blog/gitlab-zapier-integration","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"There's a Zap for that. Automate your workflows with GitLab + Zapier\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2017-08-23\",\n      }",{"title":3898,"description":3899,"authors":3904,"heroImage":3900,"date":3905,"body":3906,"category":14,"tags":3907},[2489],"2017-08-23","\n\nZapier has just launched an integration with GitLab – hurrah! With a host of Zap templates, like triggering tweets for new commits, Slack messages when Merge Requests are opened or closed, or creating new Issues from starred emails in Gmail, this is great news for teams wanting to automate their workflows and collaborate more effectively.\n\n\u003C!-- more -->\n\nIf you're not a Zapier user yet, essentially it's a tool you can use to create integrations between your other tools which don't generally talk to each other, including Gmail, Slack, Twitter, Trello, Asana and now [GitLab](https://zapier.com/zapbook/gitlab/)! It's endlessly customizable, as you can create any integration you want using the \"Make a Zap\" button on the Zapier homepage. [See how to get started](https://zapier.com/zapbook/updates/1165/gitlab-integrations/?rebuild=yes).\n\nOur UX Lead [Sarrah Vesselov](/company/team/#SVesselov) gave the integration a spin and had this to say:\n\n>Overall, the number of pre-set zaps for GitLab was excellent. Trello, Asana, Gmail, Twitter integrations were easy to set up and are helpful for a number of potential workflows. There is great opportunity to use Issues and MRs to trigger automated workflows and increase collaboration and productivity for teams.\n\nCurious about those pre-set Zaps? These are our favorites:\n\n\u003Cscript src=\"https://zapier.com/zapbook/embed/widget.js?services=gitlab&container=true&limit=10\">\u003C/script>\n\nYou can [browse popular Zaps for GitLab here](https://zapier.com/zapbook/gitlab/). Missing something? [Create your own](https://zapier.com/app/editor/25451800/nodes/25451800/action) or tweet [@zapier](https://twitter.com/zapier) with your ideas.\n",[232,783],{"slug":3909,"featured":6,"template":683},"gitlab-zapier-integration","content:en-us:blog:gitlab-zapier-integration.yml","Gitlab Zapier Integration","en-us/blog/gitlab-zapier-integration.yml","en-us/blog/gitlab-zapier-integration",{"_path":3915,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3916,"content":3922,"config":3926,"_id":3928,"_type":17,"title":3929,"_source":18,"_file":3930,"_stem":3931,"_extension":21},"/en-us/blog/issue-boards-anniversary",{"title":3917,"description":3918,"ogTitle":3917,"ogDescription":3918,"noIndex":6,"ogImage":3919,"ogUrl":3920,"ogSiteName":671,"ogType":672,"canonicalUrls":3920,"schema":3921},"The evolution of the GitLab Issue Board","Celebrating one year of flexible, integrated project and release management workflows inside GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680378/Blog/Hero%20Images/issue-boards-anniversary.jpg","https://about.gitlab.com/blog/issue-boards-anniversary","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"The evolution of the GitLab Issue Board\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Erica Lindberg\"}],\n        \"datePublished\": \"2017-08-23\",\n      }",{"title":3917,"description":3918,"authors":3923,"heroImage":3919,"date":3905,"body":3924,"category":14,"tags":3925},[1958],"\n\n[Collaboration is driven by conversation](https://www.forbes.com/sites/laurencebradford/2016/12/30/the-future-of-web-development-with-gitlab-ceo-sid-sijbrandij/#7b8895b04148). It should be a natural and integrated\npractice throughout the development lifecycle, not a manual, contrived process\nthat requires administration and maintenance. By integrating every step of the\nsoftware development lifecycle and providing all the necessary collaboration\ntools, GitLab by default provides all the capabilities modern development teams need to support cross-functional collaboration at scale. GitLab was created so teams could focus more on their work, not on configuring their tools.\n\n\u003C!-- more -->\n\nLast year, we announced the first iteration of the [GitLab Issue Board](/stages-devops-lifecycle/issueboard/), a major\nmilestone in our mission to create an open source and integrated\nproduct for modern software development. Built on top of our integrated issue\ntracking system, it became possible to visualize your work and customize your\nworkflow inside of GitLab.\n\nToday, GitLab comes with everything you need to plan and track projects and\nreleases, including issues (tracker and board), milestones, burndown charts,\nchat integration, and more. Communication is centralized, plans\nand progress are visible, and work is linked, making collaboration frictionless.\n\nTo celebrate our progress over the past year, no small thanks to the community and feedback from our customers, we wanted to take a look at where\nthe Issue Board has gone since we launched its first iteration in GitLab 8.11.\n\n## The evolution of the GitLab Issue Board\n\nAt GitLab, we practice [Conversational Development](http://conversationaldevelopment.com/). Our software development is centered around conversations on what can be improved, how to implement it,\nwhether or not it worked, and if it achieved the expected value. Instead of\nwaiting months to release a “perfect” feature, we work on smaller, functional\nchanges that can get into the hands of our users much more quickly. There’s a few reasons why we develop software this way: in addition to being\nable to deliver value faster, we can also react to the market and iterate faster with more frequent feedback loops, and if something goes wrong, it’s easier to spot and fix the problem.\n\nThis is how we built the GitLab Issue Board. We started by shipping the basic\nfunctionality needed to allow users to visualize and track their issues. Over the last 12 months, we’ve released small changes every month. Today, the GitLab Issue Board has everything you need to plan and track your projects and releases.\n\nHere’s how we built it over multiple monthly releases:\n\n### August—October 2016 | GitLab 8.11-13\nThe [GitLab Issue Board](https://docs.gitlab.com/ee/user/project/issue_board.html)\nis released in 8.11. Built on top of our integrated issue\ntracking system, it uses labels from issues to create lists on a board. You can drag and drop lists to organize your workflow, move issues between lists, and labels are updated automatically as you move them across the board.\n\nUsers now have the ability to [create workflows inside of GitLab](https://docs.gitlab.com/ee/user/project/issue_board.html#creating-workflows).\n\n\u003Cimg src=\"/images/8_11/issue_boards.gif\" alt=\"Issue Boards in GitLab 8.11\" class=\"shadow\">\n\n[Multiple Issue Boards](https://docs.gitlab.com/ee/user/project/issue_board.html#multiple-issue-boards) are released in 8.13. Users can now create multiple\nworkflows, allowing different teams to create their own customized boards with\nthe same issues. Once a board is finished, you can leave it as is to review later, or recycle it.\n\n\u003Cimg src=\"/images/8_13/m_ib.gif\" alt=\"Multiple Issue Boards in GitLab 8.13\" class=\"shadow\">\n\n### January—February 2017 | GitLab 8.16-17\nNew search and filter interface is added to the [Issue Tracker](https://docs.gitlab.com/ee/user/project/issues/index.html) in 8.16, making it easier for users to search and filter their issues by different attributes such as author, assignee, milestone, and label.\n\nThe new search and filter interface is added to the Issue Board in GitLab 8.17,\nimproving usability. A modal window is added to display all issues that don’t belong to a list for easier search and filtering.\nIssues can be added to a list from the modal, and issues can be removed from a\nlist on the board.\n\n\u003Cimg src=\"/images/8_17/board_modal.png\" alt=\"Add issues modal in board in GitLab 8.17\" class=\"shadow\">\n\n### March 2017 | GitLab 9.0\n[Milestones](https://docs.gitlab.com/ee/user/project/milestones/index.html) are added to the Issue Board in GitLab 9.0 enabling users to organize issues into cycles or sprints with a start date and deadline. Issues can be filtered on the board by milestone, or new boards can be created for individual milestones.\n\n\u003Cimg src=\"/images/9_0/boards_milestone.gif\" alt=\"Boards Milestone\" class=\"shadow\">\n\nThe ability to [reorder issues in a Board list](https://docs.gitlab.com/ee/user/project/issue_board.html#re-ordering-an-issue-in-a-list) is also introduced in 9.0. Now, users prioritize issues within a list simply by dragging and dropping the issue card.\n\n\u003Cimg src=\"/images/9_0/boards_reorder.gif\" alt=\"Boards Reorder\" class=\"shadow\">\n\n## Get started with GitLab Issue Boards\n\nStart building your project and release management workflows using the Issue Board.\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/CiolDtBIOA0\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n\nIn this video, Discussion Product Manager Victor Wu demonstrates how to use GitLab Issue Boards for Agile and Scrum-style planning and tracking.\n\n### Documentation Quick Links\n\n- [Issue Board Overview](https://docs.gitlab.com/ee/user/project/issue_board.html#overview)\n- [Issue Boards for Scrum](https://docs.gitlab.com/ee/user/project/issue_board.html#scrum-team)\n- [Issue Board terminology](https://docs.gitlab.com/ee/user/project/issue_board.html#issue-board-terminology)\n- [Creating workflows](https://docs.gitlab.com/ee/user/project/issue_board.html#creating-workflows)\n\n## Help us celebrate our #Issueversary\n\nEveryone has an Issue Board story. Maybe you spent months on a long conversation to get your legal team to embrace the Kanban and promptly blew their minds. Maybe your team is full of diehards driven by strongly held opinions over exactly how many stages yours should have. Maybe you're a remote worker and your issue board is one of the main ways you keep up with teammates spread across the globe.\n\nWhatever your story is, we want to hear from you! Help us celebrate a year of the GitLab Issue Board by [sending us your Issue Board story](https://docs.google.com/forms/d/e/1FAIpQLSf_0DTiQX1X048X6ioAVLRLSBwJzVSG1LH7LupoFdsascPAAw/viewform)\nfor your chance to win free GitLab swag. We'll tweet out our favorites and announce the winners on September 5.\n",[723,783],{"slug":3927,"featured":6,"template":683},"issue-boards-anniversary","content:en-us:blog:issue-boards-anniversary.yml","Issue Boards Anniversary","en-us/blog/issue-boards-anniversary.yml","en-us/blog/issue-boards-anniversary",{"_path":3933,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3934,"content":3939,"config":3944,"_id":3946,"_type":17,"title":3947,"_source":18,"_file":3948,"_stem":3949,"_extension":21},"/en-us/blog/gitlab-issue-bash-september-2017",{"title":3935,"description":3936,"ogTitle":3935,"ogDescription":3936,"noIndex":6,"ogImage":3407,"ogUrl":3937,"ogSiteName":671,"ogType":672,"canonicalUrls":3937,"schema":3938},"Join GitLab's September Issue Bash","Join us September 2017 and help us to squash some of the open issues in the GitLab Community Edition tracker!","https://about.gitlab.com/blog/gitlab-issue-bash-september-2017","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Join GitLab's September Issue Bash\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mark Fletcher\"}],\n        \"datePublished\": \"2017-08-08\",\n      }",{"title":3935,"description":3936,"authors":3940,"heroImage":3407,"date":3941,"body":3942,"category":14,"tags":3943},[3412],"2017-08-08","\n\nThis September we'll be holding another of our quarterly issue bashes to allow the Community to get involved in helping to squash some issues in the GitLab Community Edition issue tracker. We have over 1500\n[GitLab contributors](http://contributors.gitlab.com/contributors/),\nand we are always looking for more people to join in and contribute to the project in any way that they can.\n\n\u003C!-- more -->\n\nOf course, some lucky contributors will be rewarded with awesome swag! 🙌\n\nWe now have [the issue bash landing page](/community/issue-bash/) with all the information about how exactly the Issue Bash works. Please take a look there and provide any feedback to our [feedback project](https://gitlab.com/gitlab-org/issue-bash/feedback) or propose changes directly [here](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/source/community/issue-bash/index.html.haml)!\n\n## When is it Going to Happen?\n\nWe'll kick it off at 00:01 UTC on Saturday, **September 2nd**\nand will keep it up until 23:59 UTC on Sunday, **September 3rd**.\n\n## Who Can Contribute?\n\n{::options parse_block_html=\"true\" /}\n\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n&nbsp;&nbsp;\n**At GitLab, everyone can contribute!**\n&nbsp;&nbsp;\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n{: .alert .alert-webcast}\n\nThis is your chance to get involved! Most of the tasks don't require\ntechnical expertise, therefore, non-technical community\nmembers are definitely welcome and prize worthy!\n\n## How do You Get Involved?\n\nPlease see [the FAQ on the Issue Bash landing page](/community/issue-bash/#bash-q-a) to learn more about how to get involved.\n\n## Prizes\n\nWe have some awesome swag ready for you:\n\n- Five T-shirts\n- Four pairs of pajama pants\n- Three Moleskine notebooks\n- Two [PocketCHIPs](https://getchip.com/pages/pocketchip)\n- One messenger bag (filled with all the stuff listed above!)\n\n![GitLab Issue Bash - Prizes](https://about.gitlab.com/images/blogimages/gitlab-issue-bash-june-2017-prizes.png)\n\nUsers making any contributions to the project,\nbetween the start and end times of the event, will be entered into the random draw\nto win a prize. The contributions will be collated after the end of the event and\nprize winners, drawn at random, will be contacted in the weeks that follow.\n\nTo see how we draw winners at random please take a look at the [prize winner calculator project](https://gitlab.com/gitlab-org/issue-bash/prize-winner-calculator)\n\n## Questions? More info?\n\n[GitLab team](/company/team/) and [GitLab core team](/community/core-team/) members will be on hand to answer questions and close issues. Please mention them if you need any help or need attention on an issue\n\n* [@markglenfletcher](https://gitlab.com/markglenfletcher)\n* [@blackst0ne](https://gitlab.com/blackst0ne)\n",[278,268,804],{"slug":3945,"featured":6,"template":683},"gitlab-issue-bash-september-2017","content:en-us:blog:gitlab-issue-bash-september-2017.yml","Gitlab Issue Bash September 2017","en-us/blog/gitlab-issue-bash-september-2017.yml","en-us/blog/gitlab-issue-bash-september-2017",{"_path":3951,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3952,"content":3958,"config":3963,"_id":3965,"_type":17,"title":3966,"_source":18,"_file":3967,"_stem":3968,"_extension":21},"/en-us/blog/let-s-talk-swag",{"title":3953,"description":3954,"ogTitle":3953,"ogDescription":3954,"noIndex":6,"ogImage":3955,"ogUrl":3956,"ogSiteName":671,"ogType":672,"canonicalUrls":3956,"schema":3957},"Let's talk swag","The GitLab swag store is live with all new swag goodies, and we've got a 25% code to share.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671738/Blog/Hero%20Images/swag-cover.jpg","https://about.gitlab.com/blog/let-s-talk-swag","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Let's talk swag\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emily Kyle\"}],\n        \"datePublished\": \"2017-08-04\",\n      }",{"title":3953,"description":3954,"authors":3959,"heroImage":3955,"date":3960,"body":3961,"category":14,"tags":3962},[1688],"2017-08-04","\n\nEXTRA! EXTRA! This just in, GitLab just launched a new [swag store](https://shop.gitlab.com/) filled with all types of new goodies. And…for the first time ever, a few select items that you could only lay your hands on at GitLab events will now be available in the store. AKA everyone can have their very own pair of GitLab socks and hand-knit tanuki plush toy.\n\n\u003C!-- more -->\n\nNew items never available before include hoodies, pajama pants, speakers, hats, flasks, and notebooks. We couldn't be more excited to share all these new items with the community, so for a limited time we will be offering a 25% discount (**NEWSWAG**) off everything in the store, with free shipping to all countries. Yes, I said FREE. So, now is the best time to get yourself outfitted with all the GitLab gear you can handle. Technically, you could be dressed head to toe in tanuki wear.\n\n![Tanuki toes](https://about.gitlab.com/images/blogimages/swag-store-socks.jpg){: .shadow}\n\nBut wait, there's more! **For every 25 people who [retweet this announcement](https://twitter.com/gitlab/status/893396098114437121), we will pull one winner to receive a new GitLab hoodie.**  \n\nHere are some of our favorite swaggerific photos from the past year to inspire your GitLab shopping adventure:\n\n![Best of swag](https://about.gitlab.com/images/blogimages/best-of-swag.jpg){: .shadow}\n\nLastly, as our motto states, everyone can contribute — so, we're always open to hearing your [new swag suggestions](https://gitlab.com/gitlab-com/swag_suggestions)!\n\n#### Update August 11th\n\nDue to the extreme amount of orders we got after the store launch, we had to briefly pause our store for the past two days. Everything's back up and running now! Enjoy!\n",[890],{"slug":3964,"featured":6,"template":683},"let-s-talk-swag","content:en-us:blog:let-s-talk-swag.yml","Let S Talk Swag","en-us/blog/let-s-talk-swag.yml","en-us/blog/let-s-talk-swag",{"_path":3970,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3971,"content":3977,"config":3982,"_id":3984,"_type":17,"title":3985,"_source":18,"_file":3986,"_stem":3987,"_extension":21},"/en-us/blog/stackpoint-webcast-recording-highlights",{"title":3972,"description":3973,"ogTitle":3972,"ogDescription":3973,"noIndex":6,"ogImage":3974,"ogUrl":3975,"ogSiteName":671,"ogType":672,"canonicalUrls":3975,"schema":3976},"Demo: Turn-key Kubernetes with StackPoint.io","StackPointCloud CEO Matt Baldwin shows how GitLab users can now go even faster from idea to production with an integration that takes the pain out of building Kubernetes clusters.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671181/Blog/Hero%20Images/stackpoint-gitlab-integration.png","https://about.gitlab.com/blog/stackpoint-webcast-recording-highlights","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Demo: Turn-key Kubernetes with StackPoint.io\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2017-08-03\",\n      }",{"title":3972,"description":3973,"authors":3978,"heroImage":3974,"date":3979,"body":3980,"category":14,"tags":3981},[2489],"2017-08-03","\n\nStackPointCloud [partnered with us](/blog/stackpoint-gitlab-integration/) to bring you an end-to-end, turn-key Kubernetes solution, speeding up the process from idea to production. Watch the turn-key piece in action in our recent webcast.\n\n\u003C!-- more -->\n\nKubernetes allows you to manage an application across different resources and clouds, enabling self-healing (so if a container dies, it will be rescheduled on another host) and scaling up on demand, or scaling down as needed to save costs. With a host of benefits, it's no surprise that there's a strong and active community around Kubernetes, but for some teams, the time and effort required to install and configure a Kubernetes cluster could be better spent elsewhere.\n\nWhile GitLab covers every step of the software development lifecycle, we do require you to have a Kubernetes cluster up and running before you begin to use it, which is where some users get stuck. Watch the video below to see how our friends at [StackPoint.io](https://stackpointcloud.com/) have worked with us on a solution that does the hard work for you, to \"close the last mile\" in under 10 minutes. The demo starts at 12:02.\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/wu2AIcwjeQ8\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n\nWant to give it a try for yourself? [Launch a Kubernetes cluster with GitLab in one click](https://goo.gl/qnSp3N).\n",[1059,232],{"slug":3983,"featured":6,"template":683},"stackpoint-webcast-recording-highlights","content:en-us:blog:stackpoint-webcast-recording-highlights.yml","Stackpoint Webcast Recording Highlights","en-us/blog/stackpoint-webcast-recording-highlights.yml","en-us/blog/stackpoint-webcast-recording-highlights",{"_path":3989,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":3990,"content":3996,"config":4001,"_id":4003,"_type":17,"title":4004,"_source":18,"_file":4005,"_stem":4006,"_extension":21},"/en-us/blog/gitlab-trello-power-up-launch",{"title":3991,"description":3992,"ogTitle":3991,"ogDescription":3992,"noIndex":6,"ogImage":3993,"ogUrl":3994,"ogSiteName":671,"ogType":672,"canonicalUrls":3994,"schema":3995},"You asked, you got it: GitLab Power-Up comes to Trello","With 9.4 we shipped a GitLab Power-Up for Trello – attach a merge request to a Trello card and enjoy an even more seamless workflow.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671369/Blog/Hero%20Images/trello-power-up-blog-cover.png","https://about.gitlab.com/blog/gitlab-trello-power-up-launch","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"You asked, you got it: GitLab Power-Up comes to Trello\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2017-07-22\",\n      }",{"title":3991,"description":3992,"authors":3997,"heroImage":3993,"date":3998,"body":3999,"category":14,"tags":4000},[2489],"2017-07-22","\nTrello's most requested third-party Power-Up is now live! As of [GitLab 9.4](/releases/2017/07/22/gitlab-9-4-released/), Trello users can now connect to GitLab from within a Trello board and attach a merge request to a Trello card.\n\n\u003C!-- more -->\n\nThis integration has got a lot of people excited. Here's our VP of Product [Job van der Voort](/company/team/#Jobvo) demonstrating his enthusiasm for the Power-Up:\n\n![VP of Product Job van der Voort](https://about.gitlab.com/images/blogimages/trello-power-up-job.jpg)\n\nYou can follow more discussion around the integration [on the issue](https://gitlab.com/gitlab-org/gitlab-ce/issues/32042).\n\n## Here's the Power-Up in action\n\n![GitLab Trello Power-Up gif](https://about.gitlab.com/images/blogimages/trello-power-up-gif.gif)\n\n1. When viewing one of your boards in Trello, simply go to Power-Ups and select the GitLab Power-Up. After setup, you can search GitLab merge requests from within a Trello card and attach one to the card.\n\n2. Click through to the attached merge request directly from the card.\n\nSimple!\n\n## How it helps\n\nWe're always looking for ways to streamline developer workflows and reduce the need for context-switching. The less time spent stringing together tooling, the better. GitLab's Trello Power-Up integrates two popular platforms to tighten up the development process and make the experience of using GitLab and Trello even better.\n\n![GitLab Trello Power-Up screengrab](https://about.gitlab.com/images/blogimages/trello-power-up-screengrab.png){: .shadow\n\n## What's next\n\nAs always, as a new feature this is in its first iteration. Our community has already asked for further integration, such as creating branches and commits from within Trello cards as well. Give the new Power-Up a try and let us know how we can improve on it by opening [a feature request](https://gitlab.com/gitlab-org/trello-power-up/issues). As part of our [Community Edition](https://gitlab.com/gitlab-org/gitlab-ce), the code for the Power-Up is hosted on [gitlab.com/gitlab-org/trello-power-up](https://gitlab.com/gitlab-org/trello-power-up), and anyone can contribute to future iterations 🚀\n\n## Get started\n\nOur documentation contains everything you need to know to get the Power-Up running. [Read the documentation for GitLab Power-Up for Trello here](https://docs.gitlab.com/ee/integration/trello_power_up.html).\n",[232],{"slug":4002,"featured":6,"template":683},"gitlab-trello-power-up-launch","content:en-us:blog:gitlab-trello-power-up-launch.yml","Gitlab Trello Power Up Launch","en-us/blog/gitlab-trello-power-up-launch.yml","en-us/blog/gitlab-trello-power-up-launch",{"_path":4008,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4009,"content":4014,"config":4022,"_id":4024,"_type":17,"title":4025,"_source":18,"_file":4026,"_stem":4027,"_extension":21},"/en-us/blog/stackpoint-gitlab-integration",{"title":4010,"description":4011,"ogTitle":4010,"ogDescription":4011,"noIndex":6,"ogImage":3974,"ogUrl":4012,"ogSiteName":671,"ogType":672,"canonicalUrls":4012,"schema":4013},"GitLab K8s clusters: Backup and trusted charts in 10 min","StackPointCloud partners with GitLab to create a simple, turn-key experience for developers who want to move faster into production with their apps.","https://about.gitlab.com/blog/stackpoint-gitlab-integration","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Turn-Key GitLab Enterprise Kubernetes clusters, backup, trusted charts — all in less than 10 minutes\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Matt Baldwin\"}],\n        \"datePublished\": \"2017-07-10\",\n      }",{"title":4015,"description":4011,"authors":4016,"heroImage":3974,"date":4018,"body":4019,"category":14,"tags":4020},"Turn-Key GitLab Enterprise Kubernetes clusters, backup, trusted charts — all in less than 10 minutes",[4017],"Matt Baldwin","2017-07-10","\n\n[Stackpoint.io](https://stackpointcloud.com/) is excited to announce we’ve worked with GitLab to enable an end-to-end turn-key solution that will help developers move even faster from idea to production.\n\n\u003C!-- more -->\n\nStackpoint.io advances the mandate of allowing developers to continue to focus on building product, leaving configuring the tooling to GitLab and Stackpoint.io. With this release, together, users can manage and collaborate on their clusters and ensure Gitlab EE is operating correctly — all in a turn-key, developer-friendly way.\n\nOur Kubernetes cloud management platform now allows you to:\n\n* Build a GitLab EE Kubernetes cluster on the cloud of your choice - Google Compute, AWS, or Azure-in three easy steps.\n* Deploy GitLab EE to an existing Kubernetes cluster.\n* Upgrade your GitLab EE Kubernetes cluster in one click.\n* Set up a Kubernetes backup schedule-store in Google or Amazon, recover anywhere.\n* Get all your operational components, pre-configured, at build or run time-Sysdig for monitoring, Twistlock for security, Elasticsearch with Fluentd and Kibana for logging, and more.\n* Allow your developers quick and easy access to operational tools, trimmed down. For example, they can dive into their cluster’s Prometheus metrics – one click.\n\n![StackPoint integration with GitLab](https://about.gitlab.com/images/blogimages/stackpoint-integration.png)\n\nOur GitLab integration not only allows you to run a self-healing deployment of GitLab EE on Kubernetes, but we’ve also integrated Docker Registry automatically, if you’re running on AWS we set up ELB for you and secure it all with Let’s Encrypt.\n\n## Get started\n\n1. Get a new GitLab EE Kubernetes cluster up, running, and configured for production within 10 minutes.\n\n2. Deploy your first app to Kubernetes using GitLab.\n\n3. Schedule your protection of your cluster.\n\nGive it a shot [now](https://stackpoint.io/#/clusters/new?provider=aws&solution=gitlab_ee).\n",[1059,4021,232],"webcast",{"slug":4023,"featured":6,"template":683},"stackpoint-gitlab-integration","content:en-us:blog:stackpoint-gitlab-integration.yml","Stackpoint Gitlab Integration","en-us/blog/stackpoint-gitlab-integration.yml","en-us/blog/stackpoint-gitlab-integration",{"_path":4029,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4030,"content":4036,"config":4042,"_id":4044,"_type":17,"title":4045,"_source":18,"_file":4046,"_stem":4047,"_extension":21},"/en-us/blog/there-and-back-again-in-one-release",{"title":4031,"description":4032,"ogTitle":4031,"ogDescription":4032,"noIndex":6,"ogImage":4033,"ogUrl":4034,"ogSiteName":671,"ogType":672,"canonicalUrls":4034,"schema":4035},"There and back again in one release","One GitLab team-member spent 5 weeks visiting and working with 6 different colleagues in 5 cities, in 4 countries across Europe and Asia","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666775/Blog/Hero%20Images/cover.jpg","https://about.gitlab.com/blog/there-and-back-again-in-one-release","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"There and back again in one release\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Dimitrie Hoekstra\"}],\n        \"datePublished\": \"2017-06-30\",\n      }",{"title":4031,"description":4032,"authors":4037,"heroImage":4033,"date":4039,"body":4040,"category":14,"tags":4041},[4038],"Dimitrie Hoekstra","2017-06-30","\n\nInspired by [Robert][robert] and [Douwe][douwe] and their trip called [Around the world in 6 releases][6-releases], another GitLab team-member [Dimitrie][dimitrie] accepted the challenge of pursuing the \"[Travel to visit GitLab team-members][travel-policy]\" company policy by making use of the \"[visiting grant][visiting-grant]\". Visiting 6 different colleagues in 5 cities, in 4 countries across Europe and Asia he has a story to tell. Read on for the why, how, who and where.\n\n\u003C!-- more -->\n\n## The incentive\n\nThis year has been an amazing journey for me, with one of the highlights being the [GitLab summit][summit] in [Cancun, Mexico][cancun]. This event, at which I could bring along my \"significant other\" to the other side of the world was an amazing opportunity. Meeting people you already know online for the first time is a strange, but wonderful experience.\n\n![foto van mexico met iedereen](https://about.gitlab.com/images/8_16/pic.jpg)\n\nThis brings me to meeting [Arihant][arihant], which is one of our support engineers. We met in the back of a van, which was driving us back from [ziplining and swimming in the jungle](/images/blogimages/gitlab-mexico-summit-2017/dimitrie-hoekstra-cenote.gif). [Arihant][arihant] told me about the wonders of [India][india] and made sure I knew I was welcome if I ever thought of visiting him. Working at a fully remote company such as GitLab, where this is an actual possibility, set my mind to work...\n\nThinking about going and actually making it real for yourself, is something else. Who will I meet, where can I go? As a bonus, two of my best friends were and are still backpacking the world. Meeting them so far away from home would be awesome.\n\nBeing one of the UX designers at GitLab, I remembered that one person of the UX team couldn't make it to the [summit][summit] back in January. [Hazel][hazel], who resides in [Taipei, Taiwan][taipei], was the only one which I didn't meet in real life yet. So I reached out to see if I could visit her. She loved the idea!\n\nMeanwhile [Collen][collen], another support engineer living in [Kampot, Cambodia][kampot], made my eyes roll out of their sockets with pictures of [Angkor Wat][angkorwat].\n\nLastly, both [Kushal][kushal] from [Pune, India][pune] and [Jen-shin][jen-shin] from [Taipei, Taiwan][taipei] were happy to meet me as well, when I would be nearby.\n\n## Planning\n\nKnowing who I was going to visit, I had to make sure that dates and people where going to match. Not being the first one in the company to do such a trip, I could see how my colleagues had planned ahead. I expanded and built on their spreadsheet concept, until it became my master plan!\n\nPerson availability, general trip timeline and total cost estimation were the first things I created. I needed them to get my plan approved. Eventually it got upgraded with people and personal travel information to make it more useful for myself. As a bonus, there are some nifty little automation features in there as well.\n\nYou can check out a template copy of it [here][template-copy]!\n\n[Google spreadsheets](https://www.google.com/sheets/about/) allows you to assign people to certain tasks and cells. This made it very easy for people to put in their own information, while being able to see information from others. In other words, efficient team collaboration!\n\nThe result was an approved plan, where everybody was on the same page, by following [the six core values of GitLab][values]: \"Collaboration, Results, Efficiency, Diversity, Iteration, and Transparency (CREDIT)\". Thanks GitLab!\n\n## The scale of remoteness\n\n![worldmap photo](https://about.gitlab.com/images/blogimages/there-and-back-again-in-one-release/full-globe-map-people.jpg){: .vista}\n\nWith my first one-way trip tickets booked, preparing and working eating up most of my time, it was suddenly time to go!\n\nOff to [London][london] it was, for an overnight transit. GitLab, it seems, is everywhere. So I met up with James to make the most of it. Some pints and laughs to celebrate the beginning of this journey, cheers!\n\n\u003C!-- carousel -->\n\n\u003Cdiv id=\"carousel-example-generic-1\" class=\"carousel slide\" data-ride=\"carousel\" data-interval=\"10000\">\n  \u003C!-- Indicators -->\n  \u003Col class=\"carousel-indicators\">\n    \u003Cli data-target=\"#carousel-example-generic-1\" data-slide-to=\"0\" class=\"active\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic-1\" data-slide-to=\"1\">\u003C/li>\n  \u003C/ol>\n\n  \u003C!-- Wrapper for slides -->\n  \u003Cdiv class=\"carousel-inner\" role=\"listbox\">\n    \u003Cdiv class=\"item active\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/london.jpg\" alt=\"London\">\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/james-cheers.jpg\" alt=\"Cheers with James\">\n    \u003C/div>\n  \u003C/div>\n\n  \u003C!-- Controls -->\n  \u003Ca class=\"left carousel-control\" href=\"#carousel-example-generic-1\" role=\"button\" data-slide=\"prev\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-left\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M.44 10.13l8.345 8.345 2.007-2.007-6.814-6.814 6.814-6.815L8.785.832.44 9.177a.652.652 0 0 0-.202.477c0 .183.067.343.202.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Previous\u003C/span>\n  \u003C/a>\n  \u003Ca class=\"right carousel-control\" href=\"#carousel-example-generic-1\" role=\"button\" data-slide=\"next\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-right\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M10.59 10.13l-8.344 8.345L.24 16.468l6.814-6.814L.24 2.839 2.246.832l8.345 8.345a.652.652 0 0 1 .201.477.652.652 0 0 1-.201.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Next\u003C/span>\n  \u003C/a>\n\u003C/div>\n\n### Mumbai\n\nNext up [Mumbai, India][mumbai]. With a flight of around 9 hours, just the sheer scale of the distance we communicate over each day across the web suddenly becomes very real. After receiving a lot of help from [Arihant][arihant], I had a safe place to sleep in the busiest city I have ever seen. [Kindness][kindness] really is one of our core values.\n\n[Mumbai][mumbai] was a fascinating city, one of absolutes. A city where there is a lot of everything, good and bad. It has and still is growing at such a pace, that reality can't really keep up. There is however so much potential!\n\n\u003C!-- carousel -->\n\n\u003Cdiv id=\"carousel-example-generic-2\" class=\"carousel slide\" data-ride=\"carousel\" data-interval=\"10000\">\n  \u003C!-- Indicators -->\n  \u003Col class=\"carousel-indicators\">\n    \u003Cli data-target=\"#carousel-example-generic-2\" data-slide-to=\"0\" class=\"active\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic-2\" data-slide-to=\"1\">\u003C/li>\n  \u003C/ol>\n\n  \u003C!-- Wrapper for slides -->\n  \u003Cdiv class=\"carousel-inner\" role=\"listbox\">\n    \u003Cdiv class=\"item active\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/mumbai_1.jpg\" alt=\"Mumbai highway\">\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/mumbai_food.jpg\" alt=\"Indian food\">\n    \u003C/div>\n  \u003C/div>\n\n  \u003C!-- Controls -->\n  \u003Ca class=\"left carousel-control\" href=\"#carousel-example-generic-2\" role=\"button\" data-slide=\"prev\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-left\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M.44 10.13l8.345 8.345 2.007-2.007-6.814-6.814 6.814-6.815L8.785.832.44 9.177a.652.652 0 0 0-.202.477c0 .183.067.343.202.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Previous\u003C/span>\n  \u003C/a>\n  \u003Ca class=\"right carousel-control\" href=\"#carousel-example-generic-2\" role=\"button\" data-slide=\"next\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-right\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M10.59 10.13l-8.344 8.345L.24 16.468l6.814-6.814L.24 2.839 2.246.832l8.345 8.345a.652.652 0 0 1 .201.477.652.652 0 0 1-.201.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Next\u003C/span>\n  \u003C/a>\n\u003C/div>\n\nThe amount of people is staggering, which results in the worst traffic I have ever seen. However as [Arihant][arihant] showed me, has the most delicious variety in food I have ever tasted. People are always ready to help you and after some time, you know how to get around!\n\nWhen you are working remotely while traveling, you are very reliant on a decent internet connection. In [India][india] apparently, you can depend fully on mobile internet, rather than on wifi. Working together with [Arihant][arihant] has been a blast and gave some insights as to how others plan out their days.\n\nI am very thankful to have had the opportunity to be introduced to his family, even cook with them, and to experience [India][india] as he does. Thanks [Arihant][arihant]!\n\n__Fun facts:__\n- My hotel, made use of a new concept called pods. It was like sleeping in a spaceship. [See for yourself][urbanpod]!\n- Driving on a scooter in [Mumbai][mumbai] is not for the faint of heart.\n- Tessa, my girlfriend back home who was very supportive of my intentions to make this trip, asked a favour of me while I was in [Mumbai][mumbai]. To try and watch Netflix together, as with traveling comes some form of a remote bonding. Soon we found out that the content library in [India][india] is not the same as back home. Why Netflix, why? [Google Duo][googleduo] to the rescue though, as I managed to watch an episode of \"The Americans\" through her phone on our tv back home. Speaking of perseverance. Thanks Google!\n\nIn the last days in [Mumbai][mumbai], my friends from home decided to join me. After enjoying the market and various street food it was time to travel to [Pune][pune], to meet with [Kushal][kushal].\n\n![mumbai photo](https://about.gitlab.com/images/blogimages/there-and-back-again-in-one-release/mumbai_2.jpg)\n\n### Pune\n\nIn [Mumbai][mumbai] I mostly worked from my Hotel. It had AC which is something you learn to appreciate when it's there. In [Pune][pune], [Kushal][kushal] arranged for a nice workplace at a flex workspace called [Bootstart][bootstart]. While my friends updated their blogs, me and [Kushal][kushal] collaborated on and discussed GitLab. A typical workday in [India][india].\n\n\u003C!-- carousel -->\n\n\u003Cdiv id=\"carousel-example-generic-3\" class=\"carousel slide\" data-ride=\"carousel\" data-interval=\"10000\">\n  \u003C!-- Indicators -->\n  \u003Col class=\"carousel-indicators\">\n    \u003Cli data-target=\"#carousel-example-generic-3\" data-slide-to=\"0\" class=\"active\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic-3\" data-slide-to=\"1\">\u003C/li>\n  \u003C/ol>\n\n  \u003C!-- Wrapper for slides -->\n  \u003Cdiv class=\"carousel-inner\" role=\"listbox\">\n    \u003Cdiv class=\"item active\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/pune_1.jpg\" alt=\"Having dinner with Kushal and friends\">\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/goa_bus.jpg\" alt=\"Indian sleeper bus\">\n    \u003C/div>\n  \u003C/div>\n\n  \u003C!-- Controls -->\n  \u003Ca class=\"left carousel-control\" href=\"#carousel-example-generic-3\" role=\"button\" data-slide=\"prev\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-left\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M.44 10.13l8.345 8.345 2.007-2.007-6.814-6.814 6.814-6.815L8.785.832.44 9.177a.652.652 0 0 0-.202.477c0 .183.067.343.202.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Previous\u003C/span>\n  \u003C/a>\n  \u003Ca class=\"right carousel-control\" href=\"#carousel-example-generic-3\" role=\"button\" data-slide=\"next\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-right\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M10.59 10.13l-8.344 8.345L.24 16.468l6.814-6.814L.24 2.839 2.246.832l8.345 8.345a.652.652 0 0 1 .201.477.652.652 0 0 1-.201.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Next\u003C/span>\n  \u003C/a>\n\u003C/div>\n\nAfter a day with more awesome Indian food, me and my friends had to catch our bus to [Goa][goa]. This seemed easy, but was in the end quite the adventure. Quickly having to move to various locations where the bus might stop, jumping in and out auto rickshaws (Indian tuk tuks), plus [Kushal][kushal] speaking with the bus driver in yet another language, resulted in. Thanks [Kushal][kushal]!\n\n### Goa\n\nJust 12 hours and a flat tire later, we arrived in a [Goa][goa]. This was my in between mini-holiday. Mainly having a good time with my friends and converting from a digital nomad to a backpacker.\n\nThis proved to be quite the change, in a fun way. Hostels instead of hotels, and the cheaper the better. Our first hostel was just 100 INR, which is around 1.5 USD!\n\n\n\u003C!-- carousel -->\n\n\u003Cdiv id=\"carousel-example-generic-4\" class=\"carousel slide\" data-ride=\"carousel\" data-interval=\"10000\">\n  \u003C!-- Indicators -->\n  \u003Col class=\"carousel-indicators\">\n    \u003Cli data-target=\"#carousel-example-generic-4\" data-slide-to=\"0\" class=\"active\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic-4\" data-slide-to=\"1\">\u003C/li>\n  \u003C/ol>\n\n  \u003C!-- Wrapper for slides -->\n  \u003Cdiv class=\"carousel-inner\" role=\"listbox\">\n    \u003Cdiv class=\"item active\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/goa_beach.jpg\" alt=\"On the beach with friends\">\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/goa_market.jpg\" alt=\"Indian nightmarkets\">\n    \u003C/div>\n  \u003C/div>\n\n  \u003C!-- Controls -->\n  \u003Ca class=\"left carousel-control\" href=\"#carousel-example-generic-4\" role=\"button\" data-slide=\"prev\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-left\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M.44 10.13l8.345 8.345 2.007-2.007-6.814-6.814 6.814-6.815L8.785.832.44 9.177a.652.652 0 0 0-.202.477c0 .183.067.343.202.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Previous\u003C/span>\n  \u003C/a>\n  \u003Ca class=\"right carousel-control\" href=\"#carousel-example-generic-4\" role=\"button\" data-slide=\"next\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-right\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M10.59 10.13l-8.344 8.345L.24 16.468l6.814-6.814L.24 2.839 2.246.832l8.345 8.345a.652.652 0 0 1 .201.477.652.652 0 0 1-.201.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Next\u003C/span>\n  \u003C/a>\n\u003C/div>\n\nSwimming, clubbing and enjoying the sun. Meeting a lot of new people and driving around on scooters. Eating mango's falling right off the trees. Visiting night markets and getting all relaxed. Leaving the chaos of the big cities behind.\n\n![enjoying the sun](https://about.gitlab.com/images/blogimages/there-and-back-again-in-one-release/goa_sun.jpg){: .vista}\n\n### Siem Reap\n\nTime flies and I do too! [Siem Reap, Cambodia][siemreap] was up next, with a small transit in [Hyderabad][hyderabad] and [Singapore][singapore]. [Collen][collen] soon picked me up at the airport with a Cambodian Tuk tuk. Having met each other in Mexico, it was easy to fall into the same flow as back there. In other words, great times ahead.\n\n\u003C!-- carousel -->\n\n\u003Cdiv id=\"carousel-example-generic-5\" class=\"carousel slide\" data-ride=\"carousel\" data-interval=\"10000\">\n  \u003C!-- Indicators -->\n  \u003Col class=\"carousel-indicators\">\n    \u003Cli data-target=\"#carousel-example-generic-5\" data-slide-to=\"0\" class=\"active\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic-5\" data-slide-to=\"1\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic-5\" data-slide-to=\"2\">\u003C/li>\n  \u003C/ol>\n\n  \u003C!-- Wrapper for slides -->\n  \u003Cdiv class=\"carousel-inner\" role=\"listbox\">\n    \u003Cdiv class=\"item active\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/siemreap_airportcollen.jpg\" alt=\"siem reap tuk tuk photo\">\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/siemreap_crocodiles.jpg\" alt=\"Crocodile farm in residential neighbourhood\">\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/siemreap_angkorwat_tree.jpg\" alt=\"tree in Angkor Wat\">\n    \u003C/div>\n\n  \u003C/div>\n\n  \u003C!-- Controls -->\n  \u003Ca class=\"left carousel-control\" href=\"#carousel-example-generic-5\" role=\"button\" data-slide=\"prev\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-left\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M.44 10.13l8.345 8.345 2.007-2.007-6.814-6.814 6.814-6.815L8.785.832.44 9.177a.652.652 0 0 0-.202.477c0 .183.067.343.202.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Previous\u003C/span>\n  \u003C/a>\n  \u003Ca class=\"right carousel-control\" href=\"#carousel-example-generic-5\" role=\"button\" data-slide=\"next\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-right\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M10.59 10.13l-8.344 8.345L.24 16.468l6.814-6.814L.24 2.839 2.246.832l8.345 8.345a.652.652 0 0 1 .201.477.652.652 0 0 1-.201.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Next\u003C/span>\n  \u003C/a>\n\u003C/div>\n\nCynthia, Collen's significant other, had arranged a wonderful AirBnb. Pure luxury after my time in [Goa][goa]. Oh, and did I tell about our crocodile neighbours?\n\nSoon I came to know this touristy little city booming with activity, by working together at the [Angkor Hub][angkorhub], eating at various Australian food joints like [this one][sistersreycafe], and going to the highlight of the area; [Angkor Wat][angkorwat].\n\nI would be the first to admit that this place is incredible. It is another ancient civilisation's legacy of which there are massive remains in the middle of the jungle. The sheer scale is enormous and captivating. Being used myself to the Roman and Celtic ruins scattered throughout Europe, this was an eye opener. Especially the old buildings covered with trees are a sight to behold.\n\nAll of this pleasantry must come to an end of course. Thanks for the awesome times [Collen][collen] and Cynthia!\n\n![siem reap tuk tuk photo](https://about.gitlab.com/images/blogimages/there-and-back-again-in-one-release/siemreap_angkorwat.jpg)\n\n### Bangkok\n\nLast up my list was [Taipei, Taiwan][taipei], with a small transit through [Bangkok, Thailand][bangkok]. At the airport I met [Patai][patai], who was familiar with GitLab. With our flight being delayed, this was a nice way to kill the time and do a bit of evangelising.\n\n![evangelising](https://about.gitlab.com/images/blogimages/there-and-back-again-in-one-release/thailand_patai.jpg)\n\n### Taipei\n\nI arrived late at night and got fairly quickly to my Hostel, where I would stay the rest of my days in [Taipei][taipei]. Both the city and the [Hostel][meander] were very modern, clear and approachable. I soon came to know about the excellent subway system and again lovely food.\n\nThe next day I met up with [Hazel][hazel], which was a happy moment. Apparently, I was the first GitLab team-member she has ever met! Soon we were going about the city, sightseeing temples and local markets. After working together we even did some ice skating, which I love to do!\n\n\u003C!-- carousel -->\n\n\u003Cdiv id=\"carousel-example-generic-6\" class=\"carousel slide\" data-ride=\"carousel\" data-interval=\"10000\">\n  \u003C!-- Indicators -->\n  \u003Col class=\"carousel-indicators\">\n    \u003Cli data-target=\"#carousel-example-generic-6\" data-slide-to=\"0\" class=\"active\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic-6\" data-slide-to=\"1\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic-6\" data-slide-to=\"2\">\u003C/li>\n  \u003C/ol>\n\n  \u003C!-- Wrapper for slides -->\n  \u003Cdiv class=\"carousel-inner\" role=\"listbox\">\n    \u003Cdiv class=\"item active\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/taipei_working.jpg\" alt=\"taipei working together\">\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/taipei_happy.jpg\" alt=\"Me and Hazel meet\">\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/there-and-back-again-in-one-release/taipei_hazel_and_jenshin.jpg\" alt=\"Hazel and Jen-shin meet\">\n    \u003C/div>\n  \u003C/div>\n\n  \u003C!-- Controls -->\n  \u003Ca class=\"left carousel-control\" href=\"#carousel-example-generic-6\" role=\"button\" data-slide=\"prev\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-left\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M.44 10.13l8.345 8.345 2.007-2.007-6.814-6.814 6.814-6.815L8.785.832.44 9.177a.652.652 0 0 0-.202.477c0 .183.067.343.202.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Previous\u003C/span>\n  \u003C/a>\n  \u003Ca class=\"right carousel-control\" href=\"#carousel-example-generic-6\" role=\"button\" data-slide=\"next\">\n    \u003Csvg class=\"glyphicon glyphicon-chevron-right\" width=\"11\" height=\"19\" viewBox=\"0 0 11 19\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath d=\"M10.59 10.13l-8.344 8.345L.24 16.468l6.814-6.814L.24 2.839 2.246.832l8.345 8.345a.652.652 0 0 1 .201.477.652.652 0 0 1-.201.477z\" fill-rule=\"evenodd\"/>\u003C/svg>\n    \u003Cspan class=\"sr-only\">Next\u003C/span>\n  \u003C/a>\n\u003C/div>\n\n[Jen-shin][jen-shin] lives in the same city, another opportunity! As I was not feeling too well on that day, we saw some of the more controversial structures in the city. The original plan was to go to one of the many waterfalls around there. A good reason to return one day.\n\nOn the last day we all managed to meet up, making it so, that [Hazel][hazel] and [Jen-shin][jen-shin] finally met each other as well. In other words, interconnecting GitLab. Thanks [Hazel][hazel] and [Jen-shin][jen-shin], for this awesome time together.\n\n## Going back again\n\nMy way back, was a bit rough, with a transit time of 16 hours in [Shanghai, China][shanghai]. It is strange how different the internet feels without services like Google, Facebook and so on, because of [the great firewall of China][greatfirewall]. I can only say that, this was by far the worst online experience I have had throughout my trip. Time to step up [China][china], openness is the answer!\n\nArriving back in the [Netherlands][netherlands], I quickly came to appreciate things that before went by unnoticed. This trip has opened up new insights into how things are and could be. Differences in culture and the way people live and work is what breathes character and what enriches the world. I hope we all interconnect even more, to see what great things are yet to be.\n\n![worldmap photo](https://about.gitlab.com/images/blogimages/there-and-back-again-in-one-release/full-globe-map-trip.jpg){: .vista}\n\nLooking at the complete journey I have made, it becomes clear that no distance is too big in order to connect, work together and have fun. It has been a life enriching experience for which I am happy and thankful to have had the opportunity. Thanks GitLab and all the people that I could visit and meet, it was an absolute pleasure to [get to know each other][gettoknow].\n\n## Sharing experience\n\nA trip is not complete without finding what works and what doesn't. I want to see others succeed in working abroad as well, therefore I created a separate section in the [GitLab handbook][handbook-workingabroad] with tips and tools that I found most helpful on such journeys.\n\nDo you love the GitLab way of working? [Join our team](/jobs/)!\n\n",[890,891],{"slug":4043,"featured":6,"template":683},"there-and-back-again-in-one-release","content:en-us:blog:there-and-back-again-in-one-release.yml","There And Back Again In One Release","en-us/blog/there-and-back-again-in-one-release.yml","en-us/blog/there-and-back-again-in-one-release",{"_path":4049,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4050,"content":4056,"config":4062,"_id":4064,"_type":17,"title":4065,"_source":18,"_file":4066,"_stem":4067,"_extension":21},"/en-us/blog/gitlab-at-vue-conf",{"title":4051,"description":4052,"ogTitle":4051,"ogDescription":4052,"noIndex":6,"ogImage":4053,"ogUrl":4054,"ogSiteName":671,"ogType":672,"canonicalUrls":4054,"schema":4055},"GitLab was at VueConf 2017!","GitLab was at VueConf 2017 sharing how we use Vue.js.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682980/Blog/Hero%20Images/cover_image.jpg","https://about.gitlab.com/blog/gitlab-at-vue-conf","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab was at VueConf 2017!\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Filipa Lacerda\"}],\n        \"datePublished\": \"2017-06-29\",\n      }",{"title":4051,"description":4052,"authors":4057,"heroImage":4053,"date":4059,"body":4060,"category":14,"tags":4061},[4058],"Filipa Lacerda","2017-06-29","\nLast week I attended [VueConf 2017](https://conf.vuejs.org/) explaining how we, at GitLab, changed from [CoffeeScript](http://coffeescript.org/) to [EcmaScript 6](http://www.ecma-international.org/ecma-262/6.0/) and how we included [Vue.js](https://vuejs.org/) in our stack.\n\n\u003C!-- more -->\n\nVueConf took place in the beautiful city of [Wrocław](https://en.wikipedia.org/wiki/Wroc%C5%82aw) in Poland. Props to [Monterail](https://www.monterail.com/) for putting together such a well-organized conference.\n\nI had the pleasure of meeting all the speakers and organizers and the Vue community is inspiring. Everyone is kind and willing to share their knowledge. Having Evan You personally introduce everyone says a lot about the spirit of this community.\n\nThis conference would not have been possible without the help of the sponsors and organizers, thank you [Monterail](https://www.monterail.com/), [Codeship](https://codeship.com/), [Monaca](https://monaca.io/), [Native Script](https://www.nativescript.org/), [Evan You](https://twitter.com/youyuxi) and [Damian Dulisz](https://twitter.com/damiandulisz) for organizing such a great conference!\n\nIn the [slides for my talk](https://filipa.gitlab.io/vue_conf_2017/vue_gitlab_2017.pdf), I guide you through our journey from CoffeeScript to ES6 and from jQuery to Vue.js.\n\n## How we use Vue at GitLab\n\nAs stated in previous blog posts, we will not rewrite all our code in Vue.js. Instead, we will create several small Vue applications, which is similar to many small Single Page Applications.\n\nIn order to help us with state management, we chose a simple architecture and data flow to build our Vue Applications. We have a main Vue component, a service that allows us to get data and a store that saves the data we receive from the service:\n\n![architecture-1](https://about.gitlab.com/images/blogimages/gitlab-at-vue-conf/graph_arc_1.png \"Vue Application Architecture\")*\u003Csmall>Vue Application Architecture and Data Flow.\u003C/small>*\n\nWe start by adding an element to the DOM in the haml file, and point to a JavaScript file. We take advantage of `data-attributes` to transfer data we only have access in Rails through our Vue application.\n\n```html\n  #pipelines-list-vue{ data: {\n    endpoint: namespace_project_pipelines_path(@project),\n    \"help-page-path\" => help_page_path(@project),\n    \"all-path\" =>  project_pipelines_path(@project),\n    \"pending-path\" => project_pipelines_path(@projec),\n    \"ci-lint-path\" => ci_lint_path } }\n\n  = webpack_bundle_tag('common_vue')\n  = webpack_bundle_tag('pipelines')\n```\n\nThe next step is to create a bundle file where we are going to mount our application. We can say this is the index file of our application.\n\n```javascript\n  import Vue from 'vue';\n  import pipelinesComponent from './pipelines.vue';\n\n  document.addEventListener('DOMContentLoaded', () => {\n    return new Vue({\n      el: '#pipelines-list-vue',\n\n      components: {\n        pipelinesComponent,\n      },\n\n      render(createElement) {\n        return createElement('pipelines-component');\n      },\n    });\n  });\n```\n\nWe then need to create our store and our service, they are both simple classes. To communicate with our API we use `vue-resource` to help us.\n```javascript\n  // store.js\n  export default class PipelinesStore {\n    constructor() {\n      this.state.pipelines = [];\n    }\n    storePipelines(pipelines = []) {\n      this.state.pipelines = pipelines;\n    }\n  }\n```\n\n```javascript\n  // service.js\n  import Vue from 'vue';\n  import VueResource from 'vue-resource';\n\n  Vue.use(VueResource);\n\n  export default class PipelinesService {\n    constructor(endpoint) {\n      this.pipelines = Vue.resource(endpoint);\n    }\n    getPipelines(data = {}) {\n      return this.pipelines.get(data);\n    }\n    postAction(endpoint) {\n      return Vue.http.post(`${endpoint}.json`);\n    }\n  }\n```\n\nThe next step is to create our main component where we bind everything together. As soon as the component is created we make a call to the service, and if everything goes well, we tell the store to use the received data. If we get an error we simply show a warning to the user.\n\nUsually we have several smaller components that are used in the main one, that allows us not only to reuse them but also to have readable files.\n\n```vue\n\u003Cscript>\n  import Service from 'service';\n  import Store from 'store';\n\n  export default {\n    data() {\n      const dataset = document.querySelector('#pipelines-list-vue').dataset;\n      const store = new Store();\n      const service = new Service(endpoint);\n\n      return {\n        store,\n        service,\n      };\n    },\n    created() {\n      this.service.getPipelines()\n        .then((response) => response.json())\n        .then((pipelines) => this.store.storePipelines(pipelines))\n        .catch((error) => this.handleError(error));\n    },\n  };\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Ctable>..\u003C/table>\n\u003C/template>\n```\nIn some places we have more complex cases where we can’t rewrite it all in Vue, and we’ll have to use html and jQuery as well.\n\nFor example, in the Pipelines' details page, only the header and the graph are built in Vue.js since are the only ones with real time data.\nIf we built this page with the architecture explained above, we would need to fetch data from the same endpoint twice, and we need to poll the same endpoint twice, which is not a good idea. To avoid duplicate network calls we created a mediator to act as our main component.\n\n![architecture-2](https://about.gitlab.com/images/blogimages/gitlab-at-vue-conf/graph_arc_2.png \"Vue Application Architecture with a Mediator\")*\u003Csmall>A Mediator allows us to reuse the same state between Vue Applications.\u003C/small>*\n\nThe mediator not only allows us to avoid duplicate network calls, it also allows us to share state between the two Vue Applications and reduce repeated code. It also has the major advantage that can be easily transformed into a Vue main component if needed.\n\nYou can read more about our architecture [here](https://docs.gitlab.com/ee/development/fe_guide/vue.html#vue-architecture). We have documentation explaining [when to use vue at GitLab](https://docs.gitlab.com/ee/development/fe_guide/vue.html#when-to-use-vue-js) and how to do it. We also have a small [style guide for our vue code](https://docs.gitlab.com/ee/development/fe_guide/style/javascript.html#vuejs).\n\n## Future plans for Vue at GitLab\n1. The next step is to make sure all our Vue code looks the same and is organized well.\n1. Other thing we need to do is to have all components in .vue files. You can see the issue [here](https://gitlab.com/gitlab-org/gitlab-ce/issues/34371).\n1. We also need to create reusable components. With all new Vue.js code being added at the same time we ended up with a lot of repeated code in Vue, which we have identified and are currently transforming into reusable components. You can see the issue [here](https://gitlab.com/gitlab-org/gitlab-ce/issues/30286).\n1. We need a linter. Vue is currently the only part of our frontend code that does not have a linter yet, although we have a style guide for Vue.js in our documentation. You can see the issue [here](https://gitlab.com/gitlab-org/gitlab-ce/issues/34312).\n1. We are currently experimenting adding Vuex to our stack to see if it can help us in more complex areas of our code. The merge request is [here](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/12069).\n\nHope to see you at the next VueConf! _Na zdrowie!_\n\n[Cover image](https://pixabay.com/en/wroc%C5%82aw-lower-silesia-architecture-1663406/) by [Przemysław Krzak](https://pixabay.com/en/users/przemokrzak-2778444/) is licensed under [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/)\n",[1636,278],{"slug":4063,"featured":6,"template":683},"gitlab-at-vue-conf","content:en-us:blog:gitlab-at-vue-conf.yml","Gitlab At Vue Conf","en-us/blog/gitlab-at-vue-conf.yml","en-us/blog/gitlab-at-vue-conf",{"_path":4069,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4070,"content":4075,"config":4079,"_id":4081,"_type":17,"title":4082,"_source":18,"_file":4083,"_stem":4084,"_extension":21},"/en-us/blog/gitlab-issue-bash-june-2017",{"title":4071,"description":4072,"ogTitle":4071,"ogDescription":4072,"noIndex":6,"ogImage":3407,"ogUrl":4073,"ogSiteName":671,"ogType":672,"canonicalUrls":4073,"schema":4074},"Join GitLab's 3rd Issue Bash this June","Juion us June 2017 and help us to squash some of the open issues in the GitLab Community Edition tracker!","https://about.gitlab.com/blog/gitlab-issue-bash-june-2017","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Join GitLab's 3rd Issue Bash this June\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mark Fletcher\"}],\n        \"datePublished\": \"2017-05-11\",\n      }",{"title":4071,"description":4072,"authors":4076,"heroImage":3407,"date":4077,"body":4078,"category":14},[3412],"2017-05-11","\n\nThere are currently over 7000 open issues on GitLab CE,\nand we need your help to sort them out! We have over 1500\n[GitLab contributors](http://contributors.gitlab.com/contributors/),\nand we want everyone to be able to find issues to work on.\n\nOf course, some lucky contributors will be rewarded with awesome swag! 🙌\n\n\u003C!-- more -->\n\nOur last Issue Bash helped us to close over 160 issues.\n{:.alert .alert-info .text-center}\n\n## When is it going to happen?\n\nWe'll kick it off at 00:01 UTC on Saturday, **June 3rd**\nand will keep it up until 23:59 UTC on Sunday, **June 4th**.\n\n## Who can contribute?\n\n{::options parse_block_html=\"true\" /}\n\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n&nbsp;&nbsp;\n**At GitLab, everyone can contribute!**\n&nbsp;&nbsp;\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n{: .alert .alert-webcast}\n\nThis is your chance to get involved! Most of the tasks don't require\ntechnical expertise, therefore, non-technical community\nmembers are definitely welcome and prize worthy!\n\n## How do you get involved?\n\nThe last issue bash our contributors made over 1600 contributions in order to close 160 issues, label over 200 of our unlabelled issues and add accurate labels to countless others.\n\nThere are four main things we need from our task force:\n\n- Track issues that can be easily closed\n- Categorize issues\n- Fix known bugs and pain points\n- Ship existing feature proposals\n\nCheck out the [Q2 Issue Bash Proposal](https://gitlab.com/gitlab-org/gitlab-ce/issues/29256) to find out how to get started.\n\nWe had some great feedback from the Community after the last event, so we aim to make some changes over the next few events to make participating and collaboration easier and more fun!\n\n## Prizes\n\nWe have some awesome swag ready for you:\n\n- Five T-shirts\n- Four pairs of pajama pants\n- Three Moleskine notebooks\n- Two [PocketCHIPs](https://getchip.com/pages/pocketchip)\n- One messenger bag (filled with all the stuff listed above!)\n\n![GitLab Issue Bash - Prizes](https://about.gitlab.com/images/blogimages/gitlab-issue-bash-june-2017-prizes.png)\n\nIf we can beat our old target from the last Issue Bash (> 200 issue closures), we'll give away a **mystery prize** as well! 🎉 We still don't know what it is!\n\nUsers making any contributions to the project that fall into the above categories,\nbetween the start and end times of the event, will be entered into the random draw\nto win a prize. The contributions will be collated after the end of the event and\nprize winners, drawn at random, will be contacted in the weeks that follow.\n\n## Questions? More info?\n\nSeveral [GitLab team](/company/team/) and [GitLab core team](/community/core-team/) members will be on hand to answer questions and close issues. Please mention them if you need any help or need attention on an issue\n\n* [@markglenfletcher](https://gitlab.com/markglenfletcher)\n* [@haynes](https://gitlab.com/haynes)\n* [@blackst0ne](https://gitlab.com/blackst0ne)\n",{"slug":4080,"featured":6,"template":683},"gitlab-issue-bash-june-2017","content:en-us:blog:gitlab-issue-bash-june-2017.yml","Gitlab Issue Bash June 2017","en-us/blog/gitlab-issue-bash-june-2017.yml","en-us/blog/gitlab-issue-bash-june-2017",{"_path":4086,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4087,"content":4093,"config":4098,"_id":4100,"_type":17,"title":4101,"_source":18,"_file":4102,"_stem":4103,"_extension":21},"/en-us/blog/oscon-and-gitlab-training-in-may",{"title":4088,"description":4089,"ogTitle":4088,"ogDescription":4089,"noIndex":6,"ogImage":4090,"ogUrl":4091,"ogSiteName":671,"ogType":672,"canonicalUrls":4091,"schema":4092},"Come see us at OSCON and GitLab training in May","Meet the GitLab team at an event near you this month.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684037/Blog/Hero%20Images/write-gitlab.jpg","https://about.gitlab.com/blog/oscon-and-gitlab-training-in-may","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Come see us at OSCON and GitLab training in May\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Amanda Folson\"}],\n        \"datePublished\": \"2017-05-04\",\n      }",{"title":4088,"description":4089,"authors":4094,"heroImage":4090,"date":4096,"body":4097,"category":14},[4095],"Amanda Folson","2017-05-04","\n\nI'm a Developer Advocate at GitLab, and I'm taking our show on the road to share how your team can use CI/CD. We have several events coming up in May, which gives you several new opportunities to come meet the GitLab team and learn more about what we do!\n\n\u003C!-- more -->\n\n## GitLab at OSCON\n\nWe'll kick the month off in Austin, TX at [OSCON](https://conferences.oreilly.com/oscon/oscon-tx), where you can learn about the software development lifecycle with us. Stop by booth #517 to get a SDLC passport and exclusive GitLab swag.\n\n## CI/CD training\n\nPlease note that these events have taken place and we are no longer taking registrations.\n{: .alert .alert-gitlab-purple}\n\nIn addition to OSCON, we're also offering [Continuous Integration and Deployment](/solutions/continuous-integration/) training in select cities. If you've ever wanted to incorporate CI/CD into your workflow but weren't quite sure how, be sure to attend one of these sessions.\n\n- Austin, TX on May 9th\n- Atlanta, GA on May 22nd\n\nDon't see your city? No problem. We're always looking for new cities, so feel free to [open an issue](https://gitlab.com/gitlab-com/marketing/issues) for us to come to you.\n\nWe look forward to meeting you!\n",{"slug":4099,"featured":6,"template":683},"oscon-and-gitlab-training-in-may","content:en-us:blog:oscon-and-gitlab-training-in-may.yml","Oscon And Gitlab Training In May","en-us/blog/oscon-and-gitlab-training-in-may.yml","en-us/blog/oscon-and-gitlab-training-in-may",{"_path":4105,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4106,"content":4111,"config":4116,"_id":4118,"_type":17,"title":4119,"_source":18,"_file":4120,"_stem":4121,"_extension":21},"/en-us/blog/introducing-subscriptions-on-gitlab-dot-com",{"title":4107,"description":4108,"ogTitle":4107,"ogDescription":4108,"noIndex":6,"ogImage":967,"ogUrl":4109,"ogSiteName":671,"ogType":672,"canonicalUrls":4109,"schema":4110},"Introducing paid subscriptions on GitLab.com","Subscriptions and limits to private CI minutes on shared runners are coming to GitLab.com","https://about.gitlab.com/blog/introducing-subscriptions-on-gitlab-dot-com","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Introducing paid subscriptions on GitLab.com\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mike Bartlett\"}],\n        \"datePublished\": \"2017-04-11\",\n      }",{"title":4107,"description":4108,"authors":4112,"heroImage":967,"date":4114,"body":4115,"category":14},[4113],"Mike Bartlett","2017-04-11","\n\nFor the past few years, we've run GitLab.com as our free SaaS offering, featuring unlimited public and private repositories, unlimited contributors, and access to key features, like issue tracking, code review, CI, and wikis. None of those things are changing! We're committed to providing an integrated solution that supports the entire software development lifecycle at a price where everyone can contribute.\n\n\u003C!-- more -->\n\nSo what's changing? Over time, the usage of GitLab.com has grown significantly to the point where we now have over two million projects hosted on GitLab.com and have seen a 16x increase in CI usage over the last year. While we're excited by the exponential growth of GitLab.com, we also want to ensure that we can maintain our commitment to offering a free plan with unlimited private repos, unlimited contributors, and access to the key features that allow you to bring your entire software development lifecycle into a single platform. To keep this commitment and to offer users who have more specialized needs access to additional [enterprise features](/enterprise/), we're [introducing new paid subscriptions](/pricing/#gitlab-com) to GitLab.com.\n\nThese paid plans will do three things:\n * introduce a limit to the amount of private CI minutes on shared runners from May 1st\n * offer additional paid plans for GitLab.com users who are looking for a more robust feature set without the overhead of managing their own Enterprise Edition instance\n * offer a new level of support for teams who use GitLab.com for mission critical code\n\n## Introducing our paid plans\n\n[![paid-plans](https://about.gitlab.com/images/blogimages/ci-limits/paid-plans.png){: .shadow}](/images/blogimages/ci-limits/paid-plans.png)\n\nYou can see more information on the [Product section](/pricing/#gitlab-com) of our website.\n\nRight now, the plans offer additional minutes and levels of support. Future GitLab\nEE Starter and EE [Premium](/pricing/premium/) features will be added exclusively to Bronze, Silver and\nGold plans over time.\n\n\n## Capping CI minutes on private shared runners\n\nThanks to [the generosity](/blog/gitlab-partners-with-digitalocean-to-make-continuous-integration-faster-safer-and-more-affordable/) of Digital Ocean we were able to offer unlimited CI minutes for the last year.  Over this time, we've run billions of free CI minutes across thousands of projects on GitLab.com.\n\nWe are going to continue to give away free CI, but from May 1st, the number of minutes on our shared runners will be capped at 2000 minutes a month per group\nand our paid plans will allow for additional minutes. This limit will only apply to\nprivate projects. This will affect less than 3% of all groups using CI on GitLab.com today. 2000 minutes means you can run a pipeline of 10 minutes\nfive times a day, every working day.\n\nWith free [GitLab CI](/solutions/continuous-integration/) on GitLab.com you'll get unlimited number of pipelines, with\nunlimited parallelism on unlimited groups with unlimited number of\ncollaborators. We only count minutes per group and you can run anything\nyou want, including full Docker support.\n\nWe’ve chosen to restrict minutes as this will still allow you to have parallel pipelines and therefore fast CI runs.\n\nNote that this will only restrict your minutes for our shared runners. If you\nhave a specific runner set up for your projects, there is no limit to your pipeline minutes\non GitLab.com.\n\nYou still have and will always have the option to bring your own Runner.\nRunners are very easy to set up, require little to no maintenance and run on almost any platform.\n\n[Read how to set up your own Runner in the documentation](https://docs.gitlab.com/runner/)\n\n## New paid features\n\nEvery month, without fail, we ship improvements to GitLab. As always, everyone will be able to access GitLab Community Edition features for free. New GitLab Enterprise Edition Starter (EES) features will be made available to all of the paid plans, whilst new EEP features will only be made available to the Silver and Gold plans.\n\n## New levels of support\n\nIn addition to the private CI build minutes and Enterprise Edition feature access, you now have broader options for support. The Bronze and Silver plans will offer next business day support, similar to our previous Bronze Support.\n\nFor those requiring more speedy help, our Gold plan offers a 4-hour response time on any ticket submitted to our support team.\n\n## Timeline\n\nThe plans are available to purchase now and the CI limits will be activated on May 1st, at which\npoint you will be able to visualise your usage by clicking on the settings cog on your group home page\nand selecting `Pipelines Quota`.\n\n## FAQ\n\n**How are public projects on GitLab.com affected by the CI usage cap?**\n\nPublic projects that are hosted on GitLab.com ans are part of the GitLab Open Source Program [receive access to Gold tier features](/solutions/open-source/) and CI usage benefits.\n\n**Does the number of minutes apply per project?**\n\nThe number of minutes applies to a group or an individual. This means the sum of\nall minutes in all projects for a group or for all an individual's projects.\n\nThe quota is reset every month.\n\n**Does the number of users impact the limit?**\n\nThe limit is per group, regardless of how many users are in the group.\n\n**What about storage limits?**\n\nToday, each project is limited to 10G of repository storage, but this has not been\nactively enforced for some time. We will continue to allow 10G of storage, but will\nsoon start enforcing this limit, including across  [job artifacts](https://docs.gitlab.com/ee/user/gitlab_com/#gitlab-ci) and other storage\nmechanisms that are currently unmetered.\n\nSince GitLab 8.9 we've [introduced](https://docs.gitlab.com/ee/ci/yaml/#artifacts-expire_in)\nthe ability to set a expiry time on artifacts, then in 9.0 we\n[added the ability to set a default expiry time](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9219)\nand this value is currently set to two weeks on\nGitLab.com. You can also manually delete or keep any artifact.\n\n**Can I use my own runners instead?**\n\nAbsolutely, you can run specific runners for any of your projects. Take a look at\n[the documentation](https://docs.gitlab.com/runner/) for more information on\nhow to do this. We only count minutes on the shared runners we provide on GitLab.com.\n\n\nUPDATED 2019-03-08 - The original version of this FAQ mentioned that public projects would receive unlimited CI minutes and Ultimate benefits. That policy has changed\nto public projects that are members of the GitLab Open Source Program now receive [Gold Tier features and CI usage caps](/solutions/open-source/).\n\nUPDATED 2020-03-18 - We changed what [CI minutes free users get](/blog/ci-minutes-for-free-users/).\n",{"slug":4117,"featured":6,"template":683},"introducing-subscriptions-on-gitlab-dot-com","content:en-us:blog:introducing-subscriptions-on-gitlab-dot-com.yml","Introducing Subscriptions On Gitlab Dot Com","en-us/blog/introducing-subscriptions-on-gitlab-dot-com.yml","en-us/blog/introducing-subscriptions-on-gitlab-dot-com",{"_path":4123,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4124,"content":4130,"config":4135,"_id":4137,"_type":17,"title":4138,"_source":18,"_file":4139,"_stem":4140,"_extension":21},"/en-us/blog/gitlab-in-action-part-2",{"title":4125,"description":4126,"ogTitle":4125,"ogDescription":4126,"noIndex":6,"ogImage":4127,"ogUrl":4128,"ogSiteName":671,"ogType":672,"canonicalUrls":4128,"schema":4129},"GitLab in action: Part 2","The conclusion to our six-month trip around the world!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682443/Blog/Hero%20Images/cover.jpg","https://about.gitlab.com/blog/gitlab-in-action-part-2","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab in action: Part 2\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Robert Speicher\"}],\n        \"datePublished\": \"2017-03-31\",\n      }",{"title":4125,"description":4126,"authors":4131,"heroImage":4127,"date":4133,"body":4134,"category":14},[4132],"Robert Speicher","2017-03-31","\n\n_Between June and December of 2016, two GitLab developers traveled around the\nworld visiting team members and working remotely. Be sure to read [Around the\nWorld in 6 Releases](/blog/around-the-world-in-6-releases/) for more\nbackground on the trip._\n\n\u003C!-- more -->\n\nFor the first part of our trip we were lucky enough to have [Emily] join us for\nthree of the six cities in the US, and because she knew we were too ~~lazy~~\nbusy working, she [wrote a blog post for us](/blog/gitlab-in-action/)\ndetailing those stops.\n\nUnfortunately we couldn't convince her to join us for any other legs of the trip\n(and we _desperately_ needed her planning and organizational skills, if not her\npenchant for listening to Dolly Parton's entire discography), so we lost our\nfavorite unofficial biographer, but I'll do my best to fill in.\n\n## Mexico City, Mexico (2016-08-07)\n\nAfter joining us in Vegas, [John] went back to Nashville to grab his passport so\nhe could rejoin us in Mexico City.\n\nOriginally we planned to spend two weeks there, and then two weeks in Rio de\nJaneiro, but when our Brazilian locals said they could only come for the second\nweek, combined with all of the (overblown) stories about the dangers of Rio\nduring the Olympics at the time, and the fact that we were enjoying Mexico City\nso much, we decided to stay for a third week.\n\nStaying in one place for an extended period of time was a nice change of pace\nafter we'd gotten used to being in an airport every Sunday to fly to a new city,\nand we took the extra time to see more of the city and to meet more locals\noutside of GitLab. We really started to feel like we were _living_ here rather\nthan visiting.\n\n{: .text-center}\n[![Working on the rooftop garden of John's hotel in Hipódromo][mex-rooftop]{: .shadow}][mex-rooftop]\u003Cbr>\n_Working on the rooftop garden of John's hotel in Hipódromo_\n\nAs people would hear about our trip, common questions we got were \"Which city\nhas been your favorite so far?\" and \"Which city has had the best food?\", and\npeople were usually surprised when, without hesitation, we'd say \"Mexico City!\"\nIt's probably not surprising to hear that the city has fantastic Mexican food\n(and it does -- we ate tacos al pastor at [El Faraón][tacos] seven times in 10\ndays), but we had the best steak of our lives at [MIT], the best mac & cheese\nof the trip at [Balmori Roofbar][mac], and were introduced to the amazing\ndeliciousness of the Mexican [carajillo].\n\nWe spent one Saturday climbing the Pyramids of the Sun and Moon at\n[Teotihuacan](https://en.wikipedia.org/wiki/Teotihuacan), and another lazily\nfloating down the canals of\n[Xochimilco](https://en.wikipedia.org/wiki/Xochimilco).\n\n{: .text-center}\n[![The Pyramid of the Moon, from the top of the Pyramid of the Sun][mex-pyramid]{: .shadow}][mex-pyramid]\u003Cbr>\n_The Pyramid of the Moon, from the top of the Pyramid of the Sun_\n\n[tacos]: https://goo.gl/maps/d7Us14TE4i52\n[MIT]: https://goo.gl/maps/toZrvDEttrS2\n[mac]: https://goo.gl/maps/PetKNY5VkZk\n[carajillo]: https://en.wikipedia.org/wiki/Carajillo\n\n## Rio de Janeiro, Brazil (2016-08-29)\n\nWhile we don't have any team members living in Rio, we were joined there by\n[Douglas] from Lavras, and [Felipe] from Goiânia, who shared an apartment with\nus for the week, situated directly between the Ipanema and Copacabana beaches.\nSince we were all in the same (air-conditioned) spot with stable internet, we\npreferred setting up our office at the dining table every day.\n\n{: .text-center}\n[![Our temporary office in Rio][gig-office]{: .shadow}][gig-office]\n\n[Marcia] joined us later in the week to work and enjoy the Rio nightlife. I\ndiscovered the deliciousness that is [Amarula] and _may_ have invented a drink\n(Amarula and espresso, shaken, garnish with fresh ground cinnamon; try it, it's\namazing).\n\nWe paid a visit to (a very foggy) [Cristo Redentor], and spent our last day in\nRio relaxing on Copacabana beach, and enjoying a nice dinner at a Brazilian\nsteakhouse by the water.\n\n{: .text-center}\n[![Cristo Redentor through the fog][gig-redeemer]{: .shadow width=\"425px\"}][gig-redeemer]\n[![Our Rio crew][gig-group]{: .shadow width=\"425px\"}][gig-group]\u003Cbr>\n_Right: [Felipe], [Marcia], [Douwe], [Robert], and [Douglas]_\n\n[Cristo Redentor]: https://en.wikipedia.org/wiki/Christ_the_Redeemer_(statue)\n[Amarula]: https://en.wikipedia.org/wiki/Amarula\n\n## Sofia, Bulgaria (2016-09-19)\n\nAfter two weeks in our respective homes to see our families and adjust our\npacking strategies, we flew out to Sofia to begin the second half of our\nsix-month trip around the world.\n\nWe don't have any team members in Sofia, but it was the chosen location for the\n[EuRuKo 2016](http://euruko2016.org/) conference. [Zeger-Jan] joined us for the\nentire week leading up to the conference, where we were later joined by [Adam],\n[Axil], and [Dmitriy]. It was the first conference I'd ever been to, and being\napproached by random people recognizing our GitLab shirts and wanting to talk\nabout the company was a new phenomenon for me that never got old.\n\n{: .text-center}\n[![Our EuRuKo crew][sof-group]{: .shadow}][sof-group]\u003Cbr>\n_[Dmitriy], [Zeger-Jan], [Douwe], [Robert], [Adam], and [Axil] at EuRuKo's\nafter-party_\n\nWe're looking forward to EuRuKo 2017 in Budapest!\n\n## Warsaw, Poland (2016-09-25)\n\nWe got an apartment in the beautiful [Old Town](https://goo.gl/maps/HJctmiXFprt)\nneighborhood, and for the first two days we worked from a cafe next door with a\nnice view of the [Mały Powstaniec](https://en.wikipedia.org/wiki/Ma%C5%82y_Powstaniec)\nmemorial.\n\n{: .text-center}\n[![Mały Powstaniec memorial][waw-statue]{: .shadow width=\"600px\"}][waw-statue]\n\nWarsaw local [Kamil] joined us for dinner and drinks on multiple nights, while\n[Tomasz] and [Grzegorz] took trains from Olsztyn to meet up with us on separate\ndays. Grzegorz even stayed with us for one night and got to experience the\nworst sleeping accommodation we had for the entire trip. Sorry about that,\nbuddy!\n\nWe spent one afternoon working from Google's [Campus Warsaw](https://www.campus.co/warsaw/en)\nand, perhaps unsurprisingly, it had the [best connection of the\ntrip][waw-wifi].\n\n## Nice, France (2016-10-02)\n\nWhile the original trip itinerary had us staying in Warsaw for two weeks and\nthen going to Madrid, not booking everything in advance allowed us to make\nchanges on the fly, and we cut a week off of Warsaw in order to make a detour to\nFrance to rendezvous with [Rémy]. We loved walking around Nice, and having a\nlocal willing to play chauffeur for a bit allowed us to see Antibes and Cannes\nas well. It turns out the French Riviera is stunningly beautiful -- who knew?!\n\n{: .text-center}\n[![Sunset in Antibes][nce-sunset]{: .shadow width=\"600px\"}][nce-sunset]\n\nOn our last day we were dismayed to find out that some of the restaurants along\nthe Côte d'Azur have WiFi and that we could have been working from the beach all\nweek. Oh well, lessons for next time!\n\n{: .text-center}\n[![We didn't work here, but we could have!][nce-beach]{: .shadow width=\"600px\"}][nce-beach]\n\nIt was in Nice that we decided it would be fun to have souvenirs from this trip,\nso we started buying a refrigerator magnet at each stop. We're still in the\nprocess of getting magnets from the cities we visited before Nice, but thanks to\nour syndicate of team members all over the world, we're en route to having the\nwhole set.\n\n## Madrid, Spain (2016-10-09)\n\nWe planned our stop in Madrid to coincide with [Conferencia\nRails](http://conferenciaror.es/), where we got to see [Adam] again, this time\nas a guest speaker.\n\nWe met up with local [Chris P.] and had the honor of being the first team\nmembers he'd met in person. [Pablo] drove down from Zamora one afternoon to show\nus Segovia, and its stunning aqueduct:\n\n{: .text-center}\n[![Aqueduct of Segovia][mad-aqueduct]{: .shadow width=\"600px\"}][mad-aqueduct]\n\nMadrid is an amazing city that felt alive even at four in the morning, and the\nfood was a definite highlight -- it took the honors for [best burritos], [best\ntacos]\u003Cabbr title=\"Douwe disputes this and thinks the tacos in Mexico City were\nbetter. But he's wrong.\">*\u003C/abbr>, and [best sandwiches].\n\n[best burritos]: https://goo.gl/maps/TvYWBwVK51s\n[best tacos]: https://goo.gl/maps/16YdXiReipD2\n[best sandwiches]: https://goo.gl/maps/KqtTiujHbAr\n\n## Braga, Portugal (2016-10-23)\n\nAt previous locations, we would usually move around to a different place to work\neach day, but on our first day in Braga we found a restaurant with plenty of\nopen tables, good food, reliable WiFi, and a beautiful view, so we set up a\ntemporary office there for the week.\n\n{: .text-center}\n[![Our office view for the week][bgz-view]{: .shadow}][bgz-view]\n[![Our temporary office][bgz-office]{: .shadow}][bgz-office]\n\nWe were joined by [Filipa], [Kamil], [James L.], [Pablo], [Pedro], and [Tiago]\nfor [Rubyconf Portugal](http://rubyconf.pt/), which had a great lineup of\nspeakers, and a lively karaoke party at the end of the first day.\n\nWe had a great time at the conference feeling like _very_ nerdy rock stars as we\nwere constantly being approached by people recognizing our GitLab swag and\nwanting to talk about the company, open source, and working remotely. Being able\nto tell people about our trip as we were on it and while we had so many\nwonderful colleagues around us was a great testament to the effectiveness and\nappeal of a remote-only company like ours.\n\n{: .text-center}\n[![Our Rubyconf Portugal crew][bgz-group]{: .shadow}][bgz-group]\n_[James L.], [Robert], [Douwe], [Pablo], and [Kamil] at Rubyconf Portugal_\n\nFinally, after hearing about this dish all week, we went to [Taberna\nBelga](https://goo.gl/maps/R1tmPnNiZnp) to try\n[francesinha](https://en.wikipedia.org/wiki/Francesinha), which is a sandwich\nwith multiple kinds of meat, smothered in melted cheese, and served with a\nmountain of french fries, and it's delicious. With a description like that, I\ncan't believe the US hasn't adopted it yet.\n\n## Lisbon, Portugal (2016-10-30)\n\nFrom Braga we took a short train ride south to Lisbon to see [Job] for the\nsingle day he was home between the Amsterdam and New York stops of the [GitLab\nWorld Tour](/blog/world-tour-amplify-your-code/).\n\nDoing the daily [team call] from Job's apartment produced one of my favorite\nmoments of the entire trip, when he silently popped in behind me as I was doing\nmy weekly update. Seriously, I cannot overstate how happy this GIF makes me:\n\n{: .text-center}\n[![Surprise Job][lis-surprise-job]{: .shadow width=\"500px\"}][lis-surprise-job]\n\n[Pedro] was nice enough to play tour guide for us the rest of the week, including\ntaking us to [Pastéis de Belém](https://goo.gl/maps/p4GXMVGt7S82) to satisfy our\nnewfound [pastel de nata](https://en.wikipedia.org/wiki/Pastel_de_nata)\nobsession.\n\n{: .text-center}\n[![Pedro showing us the sights][lis-group]{: .shadow width=\"600px\"}][lis-group]\u003Cbr>\n_[Robert], [Pedro], and [Douwe]_\n\n[team call]: /handbook/communication/#team-call\n\n## Edinburgh, Scotland (2016-11-06)\n\nFrom the lovely climate of Lisbon, where I was comfortable walking around in\nshorts and a T-shirt, we arrived in Edinburgh to temperatures around 7 ℃\n(44 ℉). This was the only stop in our entire trip that was going to be cold, and\nwe weren't prepared for it: the warmest piece of clothing I had with me was the\nGitLab hoodie. Layering would prove to be key!\n\nWe bundled up each morning for the walk to [Sean M.]'s coworking space,\nstopping for coffee along the way, mostly just to have something to keep our\nhands warm. We were joined in Edinburgh by [James E.J.] and [Sean P.] from\nLondon, and [Nick] from York. We had maybe just a bit too much fun having\nthe six of us on our daily team calls, trying to get as many people into the\nbackground of each of our camera shots as we could.\n\n{: .text-center}\n[![Our Edinburgh crew][edi-group]{: .shadow width=\"425px\"}][edi-group]\n[![Our Edinburgh round table][edi-round-table]{: .shadow width=\"425px\"}][edi-round-table]\u003Cbr>\n_Left (clockwise from left): [Douwe], [Sean M.], [James E.J.], [Sean P.],\n[Nick], and [Robert]_\n\nThe bitter cold finally got the best of me towards the end of the week, and I\nended up with a sinus infection for the second time of the whole trip, spending\nthat Friday resting at home and working as I felt up to it (thanks, remote\nwork!). As I was recuperating, Douwe, helpful as ever, sent me a picture of a\ngigantic hamburger-for-four that he, Nick, James, and Sean M were going to eat.\n\n{: .text-center}\n[![Giant Hamburger photo][edi-burger]{: .shadow width=\"500px\"}][edi-burger]\n\nI've been assured they finished it, but have no photographic evidence. Saturday\nmorning, still miserably sick, I let myself get talked into climbing [Arthur's\nSeat](https://en.wikipedia.org/wiki/Arthur%27s_Seat), the city's main mountain.\nDespite Wikipedia describing it as \"relatively easy to climb,\" doing so with a\nsinus infection in the wind and near-freezing temperatures wasn't one of my most\nenjoyable moments of the trip. But the view from the top was worth it:\n\n{: .text-center}\n[![View from the top of Arthur's Seat][edi-arthurs-seat]{: .shadow}][edi-arthurs-seat]\n\n## Tel Aviv, Israel (2016-11-13)\n\nBack to shorts weather! We arrived in Tel Aviv just in time for [Rails\nIsrael](https://railsisrael2016.events.co.il/home). [Yorick] arrived the\nnight before, gave a talk, then jetted off back to the Netherlands the next\nmorning. As with the other conferences we'd been to, it's always heartening to\nsee the enthusiasm people outside the company have for GitLab. Yorick was\nsurrounded after his talk by people asking questions and looking for shirts and\nstickers.\n\nFor the rest of the week we met up with our local [Eliran], mostly working\nfrom [The Streets](https://goo.gl/maps/JUtcXQGmZZK2), which has reliable WiFi,\ngreat food, and is open 24 hours a day -- basically everything we want in a\nworkspace.\n\n## Taipei, Taiwan (2016-11-20)\n\nOur flight to Taipei left us a little jetlagged, so we landed, made it to our\napartment, went to grab lunch around the corner, then slept for about 15\nhours. Our gambit worked, and we woke up early the next morning, fully\nadjusted to the time change and ready to work.\n\nWe met up with our local [Jen-Shin] and spent the week working from the offices\nof [Cardinal Blue](http://cardinalblue.com/). The employees there were fantastic\nhosts, and graciously included us in a delicious Thanksgiving lunch, and in\ntheir \"demo day\" at the end of the week, giving us a chance to talk about GitLab\nand our trip.\n\nWe got to meet some local developers at a dinner, and one of them was nice\nenough to spend his Saturday as our tour guide, taking us to an amazing hiking\ntrail along three waterfalls, and to the [Houtong Cat\nVillage](https://en.wikipedia.org/wiki/Houtong_Cat_Village).\n\n{: .text-center}\n[![Waterfall group photo][tpe-waterfall]{: .shadow}][tpe-waterfall]\u003Cbr>\n_[Robert], [Douwe], [Jen-Shin], and his girlfriend Wen_\n\n## Bali, Indonesia (2016-11-27)\n\nBali was the second location that wasn't part of our original itinerary.\nOriginally we were going to visit [Chris W.] in Melbourne, Australia, but he had\nstarted his own trip while we were on ours, so we crossed paths here.\n\nMaybe not surprisingly, the internet infrastructure isn't great, so working from\nrandom coffeeshops wasn't really an option. Luckily Chris had been there for a\nfew weeks by the time we arrived and had joined a coworking space called\n[Outpost](https://goo.gl/maps/CBRFsKGvitk) that offered day passes (side note:\nnot enough coworking spaces offer day passes. Get it together, people!)\n\nWorking in Bali, from Outpost, was an amazing experience. The place is filled\nwith other remote workers from all over the world. The building is two floors,\nwith the air conditioned lower level enforcing a strict library-like level of\nquiet, while the upper level is open-air and a bit noisier. There were nearby\ncafés where we'd order food (including fresh coconut water served right out\nof the coconut) and it would be delivered to our desks while we worked.\n\nWe did make some time to visit a black sand beach where we destroyed our feet on\nthe coral bed while trying to body surf, then retreated to the pool to relax. We\nalso visited the famous \"monkey village\" which, true to its name, is _filled_\nwith monkeys.\n\n{: .text-center}\n[![Chris meets the locals][dpe-chris]{: .shadow width=\"425px\"}][dpe-chris]\n[![Yep, lots of monkeys][dpe-monkeys]{: .shadow width=\"425px\"}][dpe-monkeys]\n\n## Sydney, Australia (2016-12-05)\n\nAs we started the final week of our trip, it really began to dawn on us that\nthis amazing adventure was almost over. But we still had another week until we'd\nbe on vacation in New Zealand, so it was right back to work.\n\nRight away we found a coffee shop near our apartment called [The\nQ](https://goo.gl/maps/gp2nKD2eYaq) with good food, coffee, and WiFi. I think\nour drive to find a new place to work every day had fully worn out by this\npoint, and we ended up working there all week.\n\nWhen our local [Julie] finally met us there at the end of the week and asked\nwhat we'd seen of Sydney so far, and what we'd been up to every day, I think she\nwas at least a little disappointed in us when we made a feeble \"you're lookin'\nat it\" pantomime.\n\nThat was a common experience throughout the trip. We'd rattle off the list of\ncities we'd been to and were going to, and people would ask what we'd done and\nseen, and we'd have to explain that most of each week was just working, exactly\nas we would at home. We still had to _pay_ for the trip, after all.\n\nWhen you've worked at GitLab for a while, it's easy to take for granted what an\namazing perk this whole \"remote work\" thing is, and how much of a foreign\nconcept it still is to most people. I can't fault anyone for hearing that we\nwere traveling around the world for six months, working when and where we wanted\nto with no oversight, and thinking it was a vacation, but it wasn't. We worked\n10-14 hours Monday through Thursday so that we wouldn't feel guilty taking\nFriday off to do \"touristy\" things. On Saturday we'd try to see more of the\ncity, or catch up on sleep, or just relax after a long week, and on Sunday we'd\nbe at yet another airport to move on to the next city.\n\nThe tourism and traveling were never the main goals of the trip. The true value\nfor us was meeting these people we usually only talk to over video or text,\nseeing where they call home, meeting their friends and families, and spending\ntime with them outside of work, and in that sense, the trip was a resounding\nsuccess.\n\n{: .text-center}\n[![See? We did a little sightseeing!][syd-bridge]{: .shadow}][syd-bridge]\u003Cbr>\n\n## What's next?\n\nWhile our trip is over, other team members have grabbed the baton and are taking\nfull advantage of being able to work from anywhere in the world. [Chris W.] has\nalready been in Indonesia, Taiwan, Hawaii, Guatemala, Mexico City, Dallas, and\nthe Cook Islands, while [Mitchell] has been traveling all over the US, living\nand working in different cities for a month at a time.\n\nIf working while traveling all over the world appeals to you, or if you have no\ninterest in leaving your home, but just like the idea of being able to work when\nand where you want, [check out our open positions](/jobs/)!\n\nThis post is one in a series about this particular trip. Check out\n[part 1](/blog/gitlab-in-action/) and the\n[summary](/blog/around-the-world-in-6-releases/)!\n\n[bgz-group]:        /images/blogimages/gitlab-in-action-part-2/bgz-group.jpg\n[bgz-office]:       /images/blogimages/gitlab-in-action-part-2/bgz-office.jpg\n[bgz-view]:         /images/blogimages/gitlab-in-action-part-2/bgz-view.jpg\n[dpe-chris]:        /images/blogimages/gitlab-in-action-part-2/dpe-chris.jpg\n[dpe-monkeys]:      /images/blogimages/gitlab-in-action-part-2/dpe-monkeys.jpg\n[edi-arthurs-seat]: /images/blogimages/gitlab-in-action-part-2/edi-arthurs-seat.jpg\n[edi-burger]:       /images/blogimages/gitlab-in-action-part-2/edi-burger.jpg\n[edi-group]:        /images/blogimages/gitlab-in-action-part-2/edi-group.jpg\n[edi-round-table]:  /images/blogimages/gitlab-in-action-part-2/edi-round-table.jpg\n[gig-group]:        /images/blogimages/gitlab-in-action-part-2/gig-group.jpg\n[gig-office]:       /images/blogimages/gitlab-in-action-part-2/gig-office.jpg\n[gig-redeemer]:     /images/blogimages/gitlab-in-action-part-2/gig-redeemer.jpg\n[lis-group]:        /images/blogimages/gitlab-in-action-part-2/lis-group.jpg\n[lis-surprise-job]: /images/blogimages/gitlab-in-action-part-2/lis-surprise-job.gif\n[mad-aqueduct]:     /images/blogimages/gitlab-in-action-part-2/mad-aqueduct.jpg\n[mex-pyramid]:      /images/blogimages/gitlab-in-action-part-2/mex-pyramid.jpg\n[mex-rooftop]:      /images/blogimages/gitlab-in-action-part-2/mex-rooftop.jpg\n[nce-beach]:        /images/blogimages/gitlab-in-action-part-2/nce-beach.jpg\n[nce-sunset]:       /images/blogimages/gitlab-in-action-part-2/nce-sunset.jpg\n[sof-group]:        /images/blogimages/gitlab-in-action-part-2/sof-group.jpg\n[syd-bridge]:       /images/blogimages/gitlab-in-action-part-2/syd-bridge.jpg\n[tpe-waterfall]:    /images/blogimages/gitlab-in-action-part-2/tpe-waterfall.jpg\n[waw-statue]:       /images/blogimages/gitlab-in-action-part-2/waw-statue.jpg\n[waw-wifi]:         /images/blogimages/gitlab-in-action-part-2/waw-wifi.png\n\n[Adam]:       /company/team/#niedzielskiadam\n[Axil]:       /company/team/#_axil\n[Chris P.]:   /company/team/#ChrisPeressini\n[Chris W.]:   /company/team/#IsChrisW\n[Dmitriy]:    /company/team/#dzaporozhets\n[Douglas]:    /company/team/#dbalexandre\n[Douwe]:      /company/team/#DouweM\n[Eliran]:     /company/team/#eliran_mesika\n[Emily]:      /company/team/#emilylucie\n[Felipe]:     /company/team/#FelipeArtur\n[Filipa]:     /company/team/#FilipaLacerda\n[Grzegorz]:   /company/team/#GrzegorzBizon\n[Kamil]:      /company/team/#ayufanpl\n[James E.J.]: /company/team/#jamedjo\n[James L.]:   /company/team/#jlopezofficial\n[Jen-Shin]:   /company/team/#godfat-gitlab\n[Job]:        /company/team/#Jobvo\n[John]:       /company/team/#northrup\n[Julie]:      /company/team/#_julie_manalo\n[Marcia]:     /company/team/#XMDRamos\n[Mitchell]:   /company/team/#mitchellbwright\n[Nick]:       /company/team/#lupine_85\n[Pablo]:      /company/team/#psczg\n[Pedro]:      /company/team/#pedromscom\n[Rémy]:       /company/team/#rymai\n[Robert]:     /company/team/#rspeicher\n[Sean M.]:    /company/team/#mcgivernsa\n[Sean P.]:    /company/team/#SeanPackham\n[Tiago]:      /company/team/#tiagobotelho9\n[Tomasz]:     /company/team/#TomaszMaczukin\n[Yorick]:     /company/team/#yorickpeterse\n[Zeger-Jan]:  /company/team/#zjvandeweg\n",{"slug":4136,"featured":6,"template":683},"gitlab-in-action-part-2","content:en-us:blog:gitlab-in-action-part-2.yml","Gitlab In Action Part 2","en-us/blog/gitlab-in-action-part-2.yml","en-us/blog/gitlab-in-action-part-2",{"_path":4142,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4143,"content":4149,"config":4153,"_id":4155,"_type":17,"title":4156,"_source":18,"_file":4157,"_stem":4158,"_extension":21},"/en-us/blog/how-is-team-member-1-doing",{"title":4144,"description":4145,"ogTitle":4144,"ogDescription":4145,"noIndex":6,"ogImage":4146,"ogUrl":4147,"ogSiteName":671,"ogType":672,"canonicalUrls":4147,"schema":4148},"How is team-member-1 doing?","People asked how team-member-1 is doing after the DB incident of Jan 31st - Feb 1st. We're here to tell you that.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666665/Blog/Hero%20Images/man-standing.jpg","https://about.gitlab.com/blog/how-is-team-member-1-doing","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How is team-member-1 doing?\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Marcia Ramos\"}],\n        \"datePublished\": \"2017-03-17\",\n      }",{"title":4144,"description":4145,"authors":4150,"heroImage":4146,"date":4151,"body":4152,"category":14},[3829],"2017-03-17","\nThe engineer that gave the unfortunate command to [delete our primary database](/blog/gitlab-dot-com-database-incident/) was not only on our minds but also of other people. He's known by the community as \"team-member-1\", as we referred to him by this expression in our public communications during the incident.\n\nAfter we posted [the postmortem of the incident with GitLab.com](/blog/postmortem-of-database-outage-of-january-31/), we received notes from our community asking how was _team-member-1_ doing. We're here to tell you that.\n\nWe are still putting all our efforts into improving GitLab.com's infrastructure as a whole, to ensure this type of incident never happens again.\n\n\u003C!-- more -->\n\n## #HugOps\n\nWe were all really touched by the love our community sent us via [#HugOps](https://twitter.com/i/moments/826818668948549632):\n\n\u003Cdiv class=\"row\">\n  \u003Cdiv class=\"col-md-6 col-sm-12 center\">\n    \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">\u003Ca href=\"https://twitter.com/hashtag/HugOps?src=hash\">#HugOps\u003C/a> to the \u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a> team! Love your transparency. The only person who never breaks anything is the one who never does anything.\u003C/p>&mdash; Mindy Whitsitt (@MindyWhitsitt) \u003Ca href=\"https://twitter.com/MindyWhitsitt/status/827197361864720384\">February 2, 2017\u003C/a>\u003C/blockquote>\n  \u003C/div>\n  \u003Cdiv class=\"col-md-6 col-sm-12 center\">\n    \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">All the \u003Ca href=\"https://twitter.com/hashtag/hugops?src=hash\">#hugops\u003C/a> in the world to the GitLab team for fixing their services. And *massive* respect for their communication about the issue.\u003C/p>&mdash; ma//:as (@mattiasgeniar) \u003Ca href=\"https://twitter.com/mattiasgeniar/status/826997025963122688\">February 2, 2017\u003C/a>\u003C/blockquote>\n  \u003C/div>\n\u003C/div>\n\n**At the end of the day, we are all _team-member-1_**:\n\n\u003Cdiv class=\"row\">\n  \u003Cdiv class=\"col-md-6 col-sm-12 center\">\n    \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Who is not the &quot;team-member-1&quot;? \u003Ca href=\"https://twitter.com/hashtag/HugOps?src=hash\">#HugOps\u003C/a>\u003C/p>&mdash; Erkan Erol (@erkan_erol_) \u003Ca href=\"https://twitter.com/erkan_erol_/status/827040981677649921\">February 2, 2017\u003C/a>\u003C/blockquote>\n    \u003Cblockquote class=\"twitter-tweet\" data-conversation=\"none\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">\u003Ca href=\"https://twitter.com/hashtag/HugOps?src=hash\">#HugOps\u003C/a> to \u003Ca href=\"https://twitter.com/gitlabstatus\">@gitlabstatus\u003C/a> \u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a> - we&#39;ve all been there. You&#39;ve got this! 💙🤖\u003C/p>&mdash; CircleCI (@circleci) \u003Ca href=\"https://twitter.com/circleci/status/826829739545415680\">February 1, 2017\u003C/a>\u003C/blockquote>\n    \u003Cblockquote class=\"twitter-tweet\" data-conversation=\"none\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">\u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a> welcome to the club:) You will be stronger than ever. Just keep on improving and never give up. 🤗 \u003Ca href=\"https://twitter.com/hashtag/hugops?src=hash\">#hugops\u003C/a>\u003C/p>&mdash; Lemi Orhan Ergin (@lemiorhan) \u003Ca href=\"https://twitter.com/lemiorhan/status/826858037994483712\">February 1, 2017\u003C/a>\u003C/blockquote>\n  \u003C/div>\n  \u003Cdiv class=\"col-md-6 col-sm-12 center\">\n    \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"und\" dir=\"ltr\">\u003Ca href=\"https://twitter.com/hashtag/JeSuisTeamMember1?src=hash\">#JeSuisTeamMember1\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/GitLab?src=hash\">#GitLab\u003C/a> \u003Ca href=\"https://t.co/bxvag3XdXV\">pic.twitter.com/bxvag3XdXV\u003C/a>\u003C/p>&mdash; kiru (@karmukis) \u003Ca href=\"https://twitter.com/karmukis/status/826875580465414145\">February 1, 2017\u003C/a>\u003C/blockquote>\n  \u003C/div>\n\u003C/div>\n\n### Support from our community\n\nThe support our engineers received from our community was fantastic, people were appreciative of our [transparency](https://handbook.gitlab.com/handbook/values/) in working on the solution. Even teams from other companies, who had been in that situation themselves, showed their support.\n\n\u003Cdiv class=\"row\">\n  \u003Cdiv class=\"col-md-6 col-sm-12 center\">\n    \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Offering a heartfelt \u003Ca href=\"https://twitter.com/hashtag/hugops?src=hash\">#hugops\u003C/a> to my friends at \u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a>. Good people taking care of a tough situation. We are all here with you!\u003C/p>&mdash; Jono Bacon (@jonobacon) \u003Ca href=\"https://twitter.com/jonobacon/status/826828642151862272\">February 1, 2017\u003C/a>\u003C/blockquote>\n  \u003C/div>\n  \u003Cdiv class=\"col-md-6 col-sm-12 center\">\n    \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">The \u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a> handling of today&#39;s incident was exemplary. They were very transparent and up-front. We are all with team_member_1 \u003Ca href=\"https://twitter.com/hashtag/hugops?src=hash\">#hugops\u003C/a>\u003C/p>&mdash; Markos Fragkakis (@fragkakis) \u003Ca href=\"https://twitter.com/fragkakis/status/826914947028418561\">February 1, 2017\u003C/a>\u003C/blockquote>\n  \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"row\">\n  \u003Cdiv class=\"col-md-6 col-sm-12 center\">\n    \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Kudos got \u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a> on their level of transparency.  I have a lot of respect for you...\u003C/p>&mdash; Ben Kuhl (@bkuhlorelse) \u003Ca href=\"https://twitter.com/bkuhlorelse/status/826797385410080768\">February 1, 2017\u003C/a>\u003C/blockquote>\n    \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Whoah! Really big kudos for \u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a> and the updates at \u003Ca href=\"https://twitter.com/gitlabstatus\">@gitlabstatus\u003C/a> ! Being honest about mistakes, transparency and the whole story!\u003C/p>&mdash; Rob Haverkamp (@rjrhaverkamp) \u003Ca href=\"https://twitter.com/rjrhaverkamp/status/826761189057236992\">February 1, 2017\u003C/a>\u003C/blockquote>\n  \u003C/div>\n  \u003Cdiv class=\"col-md-6 col-sm-12 center\">\n    \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">This is next level corporate transparency. Kudos to \u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a>! \u003Ca href=\"https://t.co/ZvHicD7TK3\">https://t.co/ZvHicD7TK3\u003C/a>\u003C/p>&mdash; Thomas Chappelow (@tomchappelow) \u003Ca href=\"https://twitter.com/tomchappelow/status/826715341044772865\">February 1, 2017\u003C/a>\u003C/blockquote>\n    \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Serious props and respect to the \u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a> team during the recent incident. transparency++; you&#39;ve all set a new standard \u003Ca href=\"https://twitter.com/hashtag/hugops?src=hash\">#hugops\u003C/a>\u003C/p>&mdash; Laura Frank (@rhein_wein) \u003Ca href=\"https://twitter.com/rhein_wein/status/826875055703543808\">February 1, 2017\u003C/a>\u003C/blockquote>\n  \u003C/div>\n\u003C/div>\n\n❤️ &nbsp;**Thank you all! We're very touched by your support!**&nbsp; ❤️\n{: .alert .alert-gitlab-purple .text-center}\n\n{::options parse_block_html=\"true\" /}\n\nThe Codefresh team brought cookies to our Experience Center in San Francisco with a card saying:\n\n> _Hey GitLab, We thought you could use a chance to destress a little. Don't sweat it we're rooting for you. We've all been there before and we have a lot of faith in you to work it out. You got THIS! From Dan, and the Codefresh Team_\n\nA group from Google came to our Experience Center and got our engineers $300 to spend on something to make them feel better after all of this was over:\n\n> _Yay for you! We've all been there! :) From friends of yours at Google_\n\n\u003Cdiv class=\"row\">\n\u003Cdiv class=\"col-md-6 col-sm-12 center-block\">\n\n![Google gift card](https://about.gitlab.com/images/blogimages/how-is-team-member-1-doing/google-gift.png){: .center-block}\u003Csmall>\u003Cem>*Gift from Google*\u003C/em>\u003C/small>\n\n\u003C/div>\n\u003Cdiv class=\"col-md-6 col-sm-12 center-block\">\n\n![Codefresh cookies](https://about.gitlab.com/images/blogimages/how-is-team-member-1-doing/colefresh-cookies.jpg){: .center-block}\u003Csmall>\u003Cem>*Gift from Codefresh*\u003C/em>\u003C/small>\n\n\u003C/div>\n\u003C/div>\n\n{::options parse_block_html=\"false\" /}\n\n❤️ &nbsp;**Thank you Codefresh and Google!**&nbsp; ❤️\n{: .alert .alert-gitlab-purple .text-center}\n\nThe engineers involved have agreed that this extremely generous gift from Google will be spent on [sponsoring Rails Girls events](https://railsgirlssummerofcode.org/campaign/). But the cookies were obviously eaten by the one who grabbed the pack! 😛\n\nNeedless to say, some special **thank you** swag is on its way to these amazing people that took the time to come to our boardroom and try to help us feel a bit better.\n\n## GitLab Values\n\nAt GitLab we think that the people making the most mistakes frequently correlate with the people doing the most work. I certainly make a lot of mistakes every day. It is important not to double down on them but to acknowledge them and learn from it.\n\nWe make mistakes. What's different from person to person, organization to organization, is how to deal with them. What we [value](https://handbook.gitlab.com/handbook/values/) most at GitLab is:\n\n> - _**Transparency**: \"Don't be afraid to admit you made a mistake or were wrong. When something went wrong it is a great opportunity to say 'What’s the kaizen moment here?' and find a better way without hurt feelings.\"_\n- _**Collaboration**: \"Say sorry if you made a mistake apologize. Saying sorry is not a sign of weakness but one of strength. The people that do the most will likely make the most mistakes.\"_\n- _**Behaviour**:_\n  - _Be truthful and honest._\n  - _Be dependable, reliable, fair, and respectful._\n  - _Be committed, creative, inspiring, and passionate._\n\nHow could we value transparency if our team members were afraid of assuming their mistakes?\n\n> _It is not our intent to have one of our team members implicated by the transparency. (...) We are very aware of the stress that such a mistake might cause and the rest of the team has been very supportive. (...) We recognize the risk to the company of being transparent, but your values are defined by what you do when it is hard._ [Sid Sijbrandij, CEO](https://news.ycombinator.com/item?id=13622645).\n\n## Team-member-1\n\nWhile we were putting the fire out, we received this comment:\n\n> _The GitLab engineer (team-member-1) is one of the smartest people he's ever known - in fact, he's actually brilliant. So you can rest assured that the data loss wasn't caused by a an inexperienced kid._ ([HN](https://news.ycombinator.com/item?id=13621016))\n\nAnd this thoughtful tweet:\n\n\u003Cdiv class=\"center\">\n  \u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Pray for team-member-1 \u003Ca href=\"https://t.co/foQcWm0WJH\">pic.twitter.com/foQcWm0WJH\u003C/a>\u003C/p>&mdash; Rubén Fernández (@_rubenfa) \u003Ca href=\"https://twitter.com/_rubenfa/status/826785807495213058\">February 1, 2017\u003C/a>\u003C/blockquote>\n\u003C/div>\n\nWe heard you Rubén! :)\n\nYes, _team-member-1_ is doing very well!\n\nCoincidentally, just before the DB incident, _team-member-1_ had qualified for a promotion to senior developer. The outage did not change that decision.\n\n> _Promotions are to be based on meeting the criteria of the role the individual is to be promoted in to (i.e. promote based on performance)_ - [GitLab PeopleOps Handbook](/handbook/people-group/promotions-transfers/)\n\nWhen we promote people at GitLab, or give a them a [bonus](/handbook/incentives/#discretionary-bonuses), we share the reasons for that with the whole company. With the permission of _team-member-1_, this blog post is both the internal and external announcement of that promotion.\n\n### Reasons for promoting _team-member-1_\n\n[Pablo Carranza](/company/team/#psczg) (Production Lead), provided GitLab with the following reasons to promote _team-member-1_:\n\n{::options parse_block_html=\"true\" /}\n\n\u003Cdiv class=\"panel panel-gitlab-purple\">\n\nReasons\n{: .panel-heading}\n\n\u003Cdiv class=\"panel-body\">\n\n_Following what is expected out of a Senior Developer in the [job description](https://handbook.gitlab.com/job-families/engineering/backend-engineer/):_\n\nSenior Developers are experienced developers who meet the following criteria:\n\n1.  **Technical Skills**\n    *   Are able to write modular, well-tested, and maintainable code _- I think this is out of the question here and we have enough samples_\n    *   Know a domain really well and radiate that knowledge _- He already got a bonus for how he shares his knowledge, he is always raising the bar here._\n    *   Contribute to one or more complementary projects _- His contributions are numerous to all the GitLab ecosystem, including building the whole [performance monitoring metrics](https://dashboards.gitlab.com) system that we use to understand why GitLab is slow. Including projects like [allocations](https://gitlab.com/gitlab-org/allocations) that is used to track low level Ruby metrics_\n2.  **Leadership**\n    *   Begins to show architectural perspective _- He is involved in [Gitaly](https://gitlab.com/gitlab-org/gitaly) since before it had this name, and architectural paradigm change that will affect GitLab profoundly. He is also heavily involved in [whatever goes near the database](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6292)._\n    *   Proposing new ideas, performing feasibility analyses and scoping the work _- This is what he is doing all the time, all of GitLab development community values his input and his opinion is highly valued._\n3.  **Code quality**\n    *   Leaves code in substantially better shape than before _- Agreed, he does this. Refer to the links provided at the bottom_\n    *   Fixes bugs/regressions quickly _- He has even performed there operations in production itself providing hotfixes._\n    *   Monitors overall code quality/build failures - _[MR](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7310)_\n    *   Creates test plans - _[MR](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8191#note_20300210)_\n4.  **Communication**\n    *   Provides thorough and timely code feedback for peers - _Refer to code quality section._\n    *   Able to communicate clearly on technical topics - _He created our [performance](https://docs.gitlab.com/ee/development/performance.html) and [sidekiq](https://docs.gitlab.com/ee/development/sidekiq/index.html) style guidelines - Both these samples are pushing for improving the quality of GitLab as a whole, way beyond the scope of a single MR._\n    *   Keeps issues up-to-date with progress _- He is a bar raiser here, check any of his issues, they are up to date all the time._\n    *   Helps guide other merge requests to completion - _He does this leading to a [successful](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7121) merge and has the capacity to [reject MRs](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8044) depending on how they will impact GitLab (another sample on pushing back can be found [here](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7067))._\n    *   Helps with recruiting _- He is currently helping me to find a database specialist by reviewing job applications performing the initial filter._\n5.  **Performance & Scalability**\n    *   Excellent at writing production-ready code with little assistance _- He has been leading the performance effort for the last year, I think this is out of the question - He owned moving to postgres 9.6 on his own, a massive undertaking that was performed without a single glitch._\n    *   Able to write complex code that can scale with a significant number of users _- Same thing as before, he is the one paving the path for the rest of GitLab in this area. Definitely a bar riser._\n\n_A final sample can be found [here](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8191/diffs#note_20288482) where one of our backend leads asks him for support on how to perform a large migration without causing downtime._ \n\n_These samples are just the tipping point the work that he has been performing for quite a while already. This work got us to the situation where we can deploy the application with minimum downtime, even adding [automation to detect when a migration will force us to cause downtime](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4911), removing human judgment from the equation._\n\n_His work is constantly impacting all the company in both depth and breath, I can find lots of samples on any of the items that are included in the job description, I can even find samples that match to the staff developer. Therefore I think that he has been behaving as a Senior Developer, and I ask that this behavior gets recognized and formalized by GitLab._\n\n\u003C/div>\n\u003C/div>\n\n{::options parse_block_html=\"false\" /}\n\n### We support each other\n\nFor those developers involved in the outage, we made a special T-shirt:\n\n![T-shirt back](https://about.gitlab.com/images/blogimages/how-is-team-member-1-doing/team-member-1-tshirt.jpg){: .center-block}\n\nThis T-shirt has two purposes. It reminds us what happened and motivates us not to let this happen again. It was also meant to thank the team that handled the incident, for that reason only they have gotten one.\n\n## Wrapping Up\n\nAt GitLab, we value most positive achievements and performance improvements of our team members, instead of focusing our attention on negative random situations.\n\nOf course, we take situations like this very seriously, but we'd rather learn from them, and put all our efforts to avoid that they happen again, than punish honest and talented people for mistakes that can happen to anyone.\n\n> _What doesn't kill you makes you stronger._ ([HN](https://news.ycombinator.com/item?id=13621356))\n",{"slug":4154,"featured":6,"template":683},"how-is-team-member-1-doing","content:en-us:blog:how-is-team-member-1-doing.yml","How Is Team Member 1 Doing","en-us/blog/how-is-team-member-1-doing.yml","en-us/blog/how-is-team-member-1-doing",{"_path":4160,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4161,"content":4167,"config":4171,"_id":4173,"_type":17,"title":4174,"_source":18,"_file":4175,"_stem":4176,"_extension":21},"/en-us/blog/gitter-acquisition",{"title":4162,"description":4163,"ogTitle":4162,"ogDescription":4163,"noIndex":6,"ogImage":4164,"ogUrl":4165,"ogSiteName":671,"ogType":672,"canonicalUrls":4165,"schema":4166},"Gitter is joining the GitLab team","We're excited to announce that Gitter has been acquired by GitLab!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684005/Blog/Hero%20Images/gitter-gitlab-blog-cover.png","https://about.gitlab.com/blog/gitter-acquisition","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Gitter is joining the GitLab team\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2017-03-15\",\n      }",{"title":4162,"description":4163,"authors":4168,"heroImage":4164,"date":4169,"body":4170,"category":14},[676],"2017-03-15","\n\nToday we have some exciting news to announce: [Gitter](https://gitter.im) has been acquired by [GitLab](https://gitlab.com/)!\n\n\u003C!-- more -->\n\nSince its launch in 2014, Gitter has fast become the place to connect the open source and software development community. Over 800,000 developers have signed up to Gitter, where they can join any of the thousands of chat communities and connect with one another to discuss software and technology.\n\nCommunity is core to GitLab’s principles. Our [mission is to ensure that everyone can contribute](/company/mission/#mission), and over a thousand developers have contributed to GitLab CE. This acquisition is part of the [our strategic plan](/company/strategy/#sequence) to become the most popular SaaS solution for public repositories. While we are still years away from reaching this goal, we recognize great project chat is an essential element of most open source projects. Gitter is the leading solution and we expect it to grow even larger in the coming years. When the opportunity came to combine forces, we decided to do it.\n\nGitter will continue to operate as a standalone network, continuing to making its project chat capabilities available to all. Over the coming months, the GitLab integration will be improved to include 'Login with GitLab' and the ability to easily create chat rooms and communities from GitLab groups and projects.\n\nMore importantly, we will open source the whole of Gitter, allowing members of the community to contribute and improve the product for everyone!\n\nGitter has always provided unlimited free chat for public communities, as part of the acquisition, all private conversations will now be free and unlimited too.\n\nThe coming years we want to work with the wider community to make Gitter a great help to run open source communities. After open sourcing, we'll focus our attention in adding login with GitLab, GitLab backed Gitter communities, and finishing the Topics feature that is [already released in beta on Gitter](https://gitter.im/gitterHQ/topics). We'll discuss with the wider community what is next after that, for example it could be a feature that helps with maintaining a core team.\n\nTo see what this means for you please take a look at the Q&A below and the [blog post from Gitter about this acquisition](http://blog.gitter.im/2017/03/15/gitter-gitlab-acquisition/).\n\nWant to know more about Gitter and GitLab in the future? Sign up for our newsletter to get product updates and announcements, helpful tips and guides, and more delivered to your inbox.\n\n\u003Cscript src=\"//page.gitlab.com/js/forms2/js/forms2.min.js\">\u003C/script>\n\u003Cdiv class=\"newsletter-form\" style=\"width:50%;margin:auto;\">\n\u003Cform id=\"mktoForm_1328\">\u003C/form>\n\u003Cscript>\n  MktoForms2.loadForm(\"//page.gitlab.com\", \"194-VVC-221\", 1328, function(form) {\n    form.onSuccess(function(values, followUpUrl) {\n\n      form.getFormElem().hide();\n      document.getElementById('confirmform').style.visibility = 'visible';\n\n      return false;\n    });\n\n  });\n\u003C/script>\n\u003Cdiv id=\"confirmform\" style=\"visibility:hidden;\">\n\u003Cp style=\"width:50%;margin:auto;\">Thanks for subscribing!\u003C/p>\n\u003C/div>\n\u003C/div>\n\n## Q&A\n\n**Can I continue to use Gitter with GitHub accounts and projects?**\n\nAbsolutely. Login with GitHub and Twitter will continue to work, as well as all of the integrations we have today with GitHub issues and other services. We have had a GitLab integration for a long time, and will improve this by adding the ability to login with your GitLab.com account.\n\n**When do you plan to open-source Gitter?**\n\nWe have a little bit of work to do to remove some internal configuration and operating parameters from the Gitter [source code](/solutions/source-code-management/). We expect to have this completed and to move the code over to GitLab.com no later than June 2017.\n\n**Will I be able to run my own Gitter instance?**\n\nGitter will not be shipped as part of GitLab, but once the code is available as open source (MIT License), you will be able to run Gitter on your own infrastructure.\n\n**What about Mattermost, how is this different?**\n\nGitter was built to be used in the open. We’ve always seen Gitter as a network, or a place where people can come to connect to one another. Team collaboration, whilst possible, has never been a core aspect of the Gitter experience.\n\nMattermost is a powerful, integrated messaging product for team collaboration - we will continue to ship and recommend using Mattermost for internal team communication.\n\n**How is this different to Slack?**\n\nMany communities have leveraged the Slack API to force it to work for communities. Slack is certainly a great product, but has limitations for large communities and public usage. All of Gitter’s public conversation history is completely unlimited, open, archived and indexed by popular search engines, contributing the public knowledge base of the internet.\n\n**Will there be a GitLab community on Gitter?**\n\nThere’s been a community-supported room on Gitter for quite a while, feel free to pop in and say hi. This room isn’t an official support channel and we hope to grow this community over the coming months.\n",{"slug":4172,"featured":6,"template":683},"gitter-acquisition","content:en-us:blog:gitter-acquisition.yml","Gitter Acquisition","en-us/blog/gitter-acquisition.yml","en-us/blog/gitter-acquisition",{"_path":4178,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4179,"content":4185,"config":4190,"_id":4192,"_type":17,"title":4193,"_source":18,"_file":4194,"_stem":4195,"_extension":21},"/en-us/blog/axosoft-launches-gitkraken-integration-with-gitlab",{"title":4180,"description":4181,"ogTitle":4180,"ogDescription":4181,"noIndex":6,"ogImage":4182,"ogUrl":4183,"ogSiteName":671,"ogType":672,"canonicalUrls":4183,"schema":4184},"Axosoft launches GitKraken integration with GitLab","Manage GitLab repositories directly from GitKraken — get a 20% discount on GitKraken Pro","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684119/Blog/Hero%20Images/gitlab-gitkraken-cover-image.png","https://about.gitlab.com/blog/axosoft-launches-gitkraken-integration-with-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Axosoft launches GitKraken integration with GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"John Sparrow\"}],\n        \"datePublished\": \"2017-03-14\",\n      }",{"title":4180,"description":4181,"authors":4186,"heroImage":4182,"date":4188,"body":4189,"category":14},[4187],"John Sparrow","2017-03-14","\n\nWith this new integration, GitLab users can now work more efficiently in GitKraken to manage repositories. Save time by leveraging GitKraken’s integration with GitLab to do things like generate and connect SSH keys, find available remote repositories to clone, and more—all without ever leaving GitKraken.\n\n\u003C!-- more -->\n\n## What is GitKraken?\n\n[GitKraken](https://www.gitkraken.com/) is a Git GUI client for Windows, Mac, and Linux. It’s designed to make you a more productive Git user by making Git commands and processes easy, fast, and intuitive. It provides a visually appealing experience that requires fewer interactions and allows for a more fluid workflow; it even has a built-in merge tool so you don’t have to interrupt your workflow by switching applications to resolve merge conflicts. And, if you make a mistake, you can click the undo button.\n\nThe GitKraken dev team at Axosoft has been working on a few integrations to keep user workflow running smoothly, particularly when interacting with remote services. We’ve been working on a specific integration that we’re super excited about and think you will be too — our GitLab integration!\n\n![Kraken plus Tanuki](https://about.gitlab.com/images/blogimages/gitlab-gitkraken.png){: .shadow}\n\n## GitKraken and GitLab\n\nGitLab has steadily been improving its API, allowing third-party developers to harness the power of its infrastructure in their apps. Of particular interest to the GitKraken team was the remote management of Git repositories. So, naturally, we started working to leverage these capabilities, and now we’re excited to announce [GitKraken v2.2](https://blog.axosoft.com/2017/03/09/gitkraken-v2-2/) with GitLab integration!\n\nGrabbing the URL of a repo and using it as a remote in GitKraken has always been possible, but actually integrating was not, until version 2.2. Here are the various ways GitLab now integrates across GitKraken.\n\n## Integration highlights\n\n### 1. Add and remove SSH keys\n\nYou can now generate an SSH key and connect it directly to GitLab from within Gitraken! Simply open **Preferences > Authentication**, click on the GitLab.com Tanuki (logo) tab, click **Connect**, and authenticate with GitLab. You’re done!\n\n![authentication](https://about.gitlab.com/images/blogimages/gitkraken-partnership-one.png){: .shadow}\n\n![connection successful](https://about.gitlab.com/images/blogimages/gitkraken-partnership-two.png){: .shadow}\n\n### 2. Initialize a repo\n\nOpen GitKraken’s Repository Management modal, and select **Init**. From there, you can choose whether to initialize Git in a current directory on your local machine, or GitKraken can create a new bare project for you directly on GitLab.com, and then clone it down locally.\n\n![init](https://about.gitlab.com/images/blogimages/gitkraken-partnership-three.png){: .shadow}\n\n### 3. Clone a repo from a GitLab account\n\nIf you already have a GitLab.com remote repo set up, cloning it is extremely easy - you don't even have to touch the command line. In the Repository Management modal, select **Clone** and you can browse (and fuzzy find) the repo on your GitLab remote that you wish to clone. As you type, GitKraken will drill down to the appropriate repo names that match your search terms.\n\nYou can then browse the local folder to which you want to clone the repo, and you’re done!\n\n![clone](https://about.gitlab.com/images/blogimages/gitkraken-partnership-four.png){: .shadow}\n\n### 4. Remote avatars in the graph and left panel\n\nIf you have multiple remotes and multiple repos, the owners of those remotes/repos can be difficult to identify, and it can be challenging to find who you’re looking for at a glance. In the graph and left panel views, repository and remote owners’ avatars in their GitLab.com accounts will be shown as thumbnails next to what they own. Just bear in mind that not everyone is as cute as a tanuki.\n\n![remote](https://about.gitlab.com/images/blogimages/gitkraken-partnership-five.png){: .shadow}\n\nThose are GitKraken's current integrations with GitLab! But, the story doesn’t end there. **Spoiler alert:** The GitLab and GitKraken teams are committed to making this integration even better!\n\nWho would have thought a kraken and a tanuki could find so much common ground?\n\n## About the Guest Author\n\nJohn is a web developer, wordsmith and digital artist from London, UK. As Axosoft's token Brit, he works on websites and marketing content.\n\n",{"slug":4191,"featured":6,"template":683},"axosoft-launches-gitkraken-integration-with-gitlab","content:en-us:blog:axosoft-launches-gitkraken-integration-with-gitlab.yml","Axosoft Launches Gitkraken Integration With Gitlab","en-us/blog/axosoft-launches-gitkraken-integration-with-gitlab.yml","en-us/blog/axosoft-launches-gitkraken-integration-with-gitlab",{"_path":4197,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4198,"content":4204,"config":4209,"_id":4211,"_type":17,"title":4212,"_source":18,"_file":4213,"_stem":4214,"_extension":21},"/en-us/blog/our-retrospective-and-kickoff-are-public",{"title":4199,"description":4200,"ogTitle":4199,"ogDescription":4200,"noIndex":6,"ogImage":4201,"ogUrl":4202,"ogSiteName":671,"ogType":672,"canonicalUrls":4202,"schema":4203},"Our retrospectives and kickoffs are now public","GitLab's release retrospectives and kickoffs are now open to our community!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684092/Blog/Hero%20Images/drone-camera.png","https://about.gitlab.com/blog/our-retrospective-and-kickoff-are-public","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Our retrospectives and kickoffs are now public\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rémy Coutable\"}],\n        \"datePublished\": \"2017-02-14\",\n      }",{"title":4199,"description":4200,"authors":4205,"heroImage":4201,"date":4207,"body":4208,"category":14},[4206],"Rémy Coutable","2017-02-14","\n\nAs stated in the [GitLab Master Plan][gitlab-master-plan], we strive to maintain\na high level of [transparency](https://handbook.gitlab.com/handbook/values/). That's why today we are making our release retrospective and kickoff notes and\ncalls public.\n\n\u003C!-- more -->\n\n## The retrospective meeting\n\nAfter each release we have a retrospective\ncall in which we discuss what went well, what went wrong, and what we can improve\nfor the next release. The [retrospective notes] are public and you are invited\nto comment on them. If you're interested, you can even join the\n[retrospective call][retro-kickoff-call], on the first working day after the 22nd\nat 6pm CET / 9am PST.\n\n## The kickoff meeting\n\nBefore working on the next release we have a\nkickoff call to explain what we expect to ship in the next release. The\n[kickoff notes] are public and you are invited to comment on them.\nIf you're interested, you can even join the [kickoff call][retro-kickoff-call],\non the first working day after the 7th at 6pm CET / 9am PST.\n\n## The 8.16 retrospective and 8.17 kickoff call\n\nIf you want to see what these calls look like, checkout the 8.16 retrospective\nand 8.17 kickoff call below:\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/8Kztn0edk9c\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\nThe next retrospective and kickoff call recordings will be available on the\n[GitLab YouTube channel](https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg).\n\nWe look forward to reading all your comments on these documents and to\nseeing your face in the calls!\n\n",{"slug":4210,"featured":6,"template":683},"our-retrospective-and-kickoff-are-public","content:en-us:blog:our-retrospective-and-kickoff-are-public.yml","Our Retrospective And Kickoff Are Public","en-us/blog/our-retrospective-and-kickoff-are-public.yml","en-us/blog/our-retrospective-and-kickoff-are-public",{"_path":4216,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4217,"content":4223,"config":4227,"_id":4229,"_type":17,"title":4230,"_source":18,"_file":4231,"_stem":4232,"_extension":21},"/en-us/blog/gitlab-issue-bash-march-2017",{"title":4218,"description":4219,"ogTitle":4218,"ogDescription":4219,"noIndex":6,"ogImage":4220,"ogUrl":4221,"ogSiteName":671,"ogType":672,"canonicalUrls":4221,"schema":4222},"Join GitLab's March 2017 Issue Bash","We're on a mission to blitz GitLab's open issues and we need your help!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671105/Blog/Hero%20Images/gitlab-issue-bash-march-2017-cover.png","https://about.gitlab.com/blog/gitlab-issue-bash-march-2017","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Join GitLab's March 2017 Issue Bash\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Marcia Ramos\"}],\n        \"datePublished\": \"2017-02-10\",\n      }",{"title":4218,"description":4219,"authors":4224,"heroImage":4220,"date":4225,"body":4226,"category":14},[3829],"2017-02-10","\n\nThere are currently over 6000 open issues on GitLab CE,\nand we need your help to sort them out! We have over 1500\n[GitLab contributors](http://contributors.gitlab.com/contributors/),\nand we want everyone to be able to find issues to work on.\n\nOf course, some lucky contributors will be rewarded with awesome swag! 🙌\n\n\u003C!-- more -->\n\nOur last Issue Bash helped us to close over 100 issues and make lots of\nimprovements to the categorization of existing issues.\n{:.alert .alert-info .text-center}\n\n## When is it going to happen?\n\nWe'll kick it off at 00:01 UTC on Saturday, **March 4th**\nand will keep it up until 23:59 UTC on Sunday, **March 5th**.\n\n## Who can contribute?\n\n{::options parse_block_html=\"true\" /}\n\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n&nbsp;&nbsp;\n**At GitLab, everyone can contribute!**\n&nbsp;&nbsp;\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n{: .alert .alert-webcast}\n\nThis is your chance to get involved! Most of the tasks don't require\ntechnical expertise, therefore, non-technical community\nmembers are definitely welcome and prize worthy!\n\n## How do you get involved?\n\nThere are four main things we need from our task force:\n\n- Track issues that can be easily closed\n- Categorize issues\n- Fix known bugs and pain points\n- Ship existing feature proposals\n\nCheck out the [Issue Bash Proposal](https://gitlab.com/gitlab-org/gitlab-ce/issues/27272) to find out how to get started.\n\n## Prizes\n\nWe have some awesome swag ready for you:\n\n- Five T-shirts\n- Four pairs of pajama pants\n- Three Moleskine notebooks\n- Two [PocketCHIPs](https://getchip.com/pages/pocketchip)\n- One messenger bag (filled with all the stuff listed above!)\n\n![GitLab Issue Bash - Prizes](https://about.gitlab.com/images/blogimages/gitlab-issue-bash-march-2017-prizes.png)\n\nIf we solve twice as many issues as we did in\nthe last Issue Bash (> 200), we'll give away a **mystery prize** as well! 🎉\n\nUsers making any contributions to the project that fall into the above categories,\nbetween the start and end times of the event, will be entered into the random draw\nto win a prize. The contributions will be collated after the end of the event and\nprize winners, drawn at random, will be contacted in the weeks that follow.\n\n## Questions? More info?\n\n[GitLab team](/company/team/) members [@markglenfletcher](https://gitlab.com/markglenfletcher), [@ClemMakesApps](https://gitlab.com/ClemMakesApps), and the [core team](/community/core-team/) member [@haynes](https://gitlab.com/haynes) will be on hand to answer questions and close issues.\n",{"slug":4228,"featured":6,"template":683},"gitlab-issue-bash-march-2017","content:en-us:blog:gitlab-issue-bash-march-2017.yml","Gitlab Issue Bash March 2017","en-us/blog/gitlab-issue-bash-march-2017.yml","en-us/blog/gitlab-issue-bash-march-2017",{"_path":4234,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4235,"content":4240,"config":4243,"_id":4245,"_type":17,"title":4246,"_source":18,"_file":4247,"_stem":4248,"_extension":21},"/en-us/blog/postmortem-of-database-outage-of-january-31",{"title":4236,"description":4237,"ogTitle":4236,"ogDescription":4237,"noIndex":6,"ogImage":967,"ogUrl":4238,"ogSiteName":671,"ogType":672,"canonicalUrls":4238,"schema":4239},"Postmortem of database outage of January 31","Postmortem on the database outage of January 31 2017 with the lessons we learned.","https://about.gitlab.com/blog/postmortem-of-database-outage-of-january-31","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Postmortem of database outage of January 31\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2017-02-10\",\n      }",{"title":4236,"description":4237,"authors":4241,"heroImage":967,"date":4225,"body":4242,"category":14},[699],"\n\nOn January 31st 2017, we experienced a major service outage for one of our products, the online service GitLab.com. The outage was caused by an accidental removal of data from our primary database server.\n\nThis incident caused the GitLab.com service to be unavailable for many hours. We also lost some production data that we were eventually unable to recover. Specifically, we lost modifications to database data such as projects, comments, user accounts, issues and snippets, that took place between 17:20 and 00:00 UTC on January 31. Our best estimate is that it affected roughly 5,000 projects, 5,000 comments and 700 new user accounts. Code repositories or wikis hosted on GitLab.com were unavailable during the outage, but were not affected by the data loss. [GitLab Enterprise](/enterprise/) customers, GitHost customers, and self-managed GitLab CE users were not affected by the outage, or the data loss.\n\nLosing production data is unacceptable. To ensure this does not happen again we're working on multiple improvements to our operations & recovery procedures for GitLab.com. In this article we'll look at what went wrong, what we did to recover, and what we'll do to prevent this from happening in the future.\n\nTo the GitLab.com users whose data we lost and to the people affected by the outage: we're sorry. I apologize personally, as GitLab's CEO, and on behalf of everyone at GitLab.\n\n## Database setup\n\nGitLab.com currently uses a single primary and a single secondary in hot-standby\nmode. The standby is only used for failover purposes. In this setup a single\ndatabase has to handle all the load, which is not ideal. The primary's hostname\nis `db1.cluster.gitlab.com`, while the secondary's hostname is\n`db2.cluster.gitlab.com`.\n\nIn the past we've had various other issues with this particular setup due to\n`db1.cluster.gitlab.com` being a single point of failure. For example:\n\n* [A database outage on November 28th, 2016 due to project_authorizations having too much bloat](https://gitlab.com/gitlab-com/infrastructure/issues/791)\n* [CI distributed heavy polling and exclusive row locking for seconds takes GitLab.com down](https://gitlab.com/gitlab-com/infrastructure/issues/514)\n* [Scary DB spikes](https://gitlab.com/gitlab-com/infrastructure/issues/364)\n\n## Timeline\n\nOn January 31st an engineer started setting up multiple PostgreSQL servers in\nour staging environment. The plan was to try out\n[pgpool-II](http://www.pgpool.net/mediawiki/index.php/Main_Page) to see if it\nwould reduce the load on our database by load balancing queries between the\navailable hosts. Here is the issue for that plan:\n[infrastructure#259](https://gitlab.com/gitlab-com/infrastructure/issues/259).\n\n**± 17:20 UTC:** prior to starting this work, our engineer took an LVM snapshot\nof the production database and loaded this into the staging environment. This was\nnecessary to ensure the staging database was up to date, allowing for more\naccurate load testing. This procedure normally happens automatically once every\n24 hours (at 01:00 UTC), but they wanted a more up to date copy of the\ndatabase.\n\n**± 19:00 UTC:** GitLab.com starts experiencing an increase in database load due\nto what we suspect was spam. In the week leading up to this event GitLab.com had\nbeen experiencing similar problems, but not this severe. One of the problems\nthis load caused was that many users were not able to post comments on issues\nand merge requests. Getting the load under control took several hours.\n\nWe would later find out that part of the load was caused by a background job\ntrying to remove a GitLab employee and their associated data. This was the\nresult of their account being flagged for abuse and accidentally scheduled for removal. More information regarding this particular problem can be found in the\nissue [\"Removal of users by spam should not hard\ndelete\"](https://gitlab.com/gitlab-org/gitlab-ce/issues/27581).\n\n**± 23:00 UTC:** Due to the increased load, our PostgreSQL secondary's\nreplication process started to lag behind. The replication failed as WAL\nsegments needed by the secondary were already removed from the primary. As\nGitLab.com was not using WAL archiving, the secondary had to be re-synchronised\nmanually. This involves removing the\nexisting data directory on the secondary, and running\n[pg_basebackup](https://www.postgresql.org/docs/9.6/static/app-pgbasebackup.html)\nto copy over the database from the primary to the secondary.\n\nOne of the engineers went to the secondary and wiped the data directory, then\nran `pg_basebackup`. Unfortunately `pg_basebackup` would hang, producing no\nmeaningful output, despite the `--verbose` option being set. After a few tries\n`pg_basebackup` mentioned that it could not connect due to the master not having\nenough available replication connections (as controlled by the `max_wal_senders`\noption).\n\nTo resolve this our engineers decided to temporarily increase\n`max_wal_senders` from the default value of `3` to `32`. When applying the\nsettings, PostgreSQL refused to restart, claiming too many semaphores were being\ncreated. This can happen when, for example, `max_connections` is set too high. In\nour case this was set to `8000`. Such a value is way too high, yet it had been\napplied almost a year ago and was working fine until that point. To resolve this\nthe setting's value was reduced to `2000`, resulting in PostgreSQL restarting\nwithout issues.\n\nUnfortunately this did not resolve the problem of `pg_basebackup` not starting\nreplication immediately. One of the engineers decided to run it with `strace` to\nsee what it was blocking on. `strace` showed that `pg_basebackup` was hanging in\na `poll` call, but that did not provide any other meaningful information that might\nhave explained why.\n\n**± 23:30 UTC:** one of the engineers thinks that perhaps `pg_basebackup`\ncreated some files in the PostgreSQL data directory of the secondary during the\nprevious attempts to run it. While normally `pg_basebackup` prints an error when\nthis is the case, the engineer in question wasn't too sure what was going on. It\nwould later be revealed by another engineer (who wasn't around at the time) that\nthis is normal behaviour: `pg_basebackup` will wait for the primary to start\nsending over replication data and it will sit and wait silently until that time.\nUnfortunately this was not clearly documented in our [engineering\nrunbooks](https://gitlab.com/gitlab-com/runbooks) nor in the official\n`pg_basebackup` document.\n\nTrying to restore the replication process, an engineer proceeds to wipe the\nPostgreSQL database directory, errantly thinking they were doing so on the\nsecondary. Unfortunately this process was executed on the primary instead. The\nengineer terminated the process a second or two after noticing their mistake,\nbut at this point around 300 GB of data had already been removed.\n\nHoping they could restore the database the engineers involved went to look for\nthe database backups, and asked for help on Slack. Unfortunately the process of\nboth finding and using backups failed completely.\n\n## Broken recovery procedures\n\nThis brings us to the recovery procedures. Normally in an event like this, one\nshould be able to restore a database in relatively little time using a recent\nbackup, though some form of data loss can not always be prevented. For\nGitLab.com we have the following procedures in place:\n\n1. Every 24 hours a backup is generated using `pg_dump`, this backup is uploaded\n   to Amazon S3. Old backups are automatically removed after some time.\n1. Every 24 hours we generate an LVM snapshot of the disk storing the production\n   database data. This snapshot is then loaded into the staging environment,\n   allowing us to more safely test changes without impacting our production\n   environment. Direct access to the staging database is restricted, similar to\n   our production database.\n1. For various servers (e.g. the NFS servers storing Git data) we use Azure disk\n   snapshots. These snapshots are taken once per 24 hours.\n1. Replication between PostgreSQL hosts, primarily used for failover purposes\n   and not for disaster recovery.\n\nAt this point the replication process was broken and data had already been wiped\nfrom both the primary and secondary, meaning we could not restore from either\nhost.\n\n### Database backups using pg_dump\n\nWhen we went to look for the `pg_dump` backups we found out they were not there.\nThe S3 bucket was empty, and there was no recent backup to be found anywhere.\nUpon closer inspection we found out that the backup procedure was using\n`pg_dump` 9.2, while our database is running PostgreSQL 9.6 (for Postgres, 9.x\nreleases are considered major). A difference in major versions results in\n`pg_dump` producing an error, terminating the backup procedure.\n\nThe difference is the result of how our Omnibus package works. We currently\nsupport both PostgreSQL 9.2 and 9.6, allowing users to upgrade (either manually\nor using commands provided by the package). To determine the correct version to\nuse the Omnibus package looks at the PostgreSQL version of the database cluster\n(as determined by `$PGDIR/PG_VERSION`, with `$PGDIR` being the path to the data\ndirectory). When PostgreSQL 9.6 is detected Omnibus ensures all binaries use\nPostgreSQL 9.6, otherwise it defaults to PostgreSQL 9.2.\n\nThe `pg_dump` procedure was executed on a regular application server, not the\ndatabase server. As a result there is no PostgreSQL data directory present on\nthese servers, thus Omnibus defaults to PostgreSQL 9.2. This in turn resulted in\n`pg_dump` terminating with an error.\n\nWhile notifications are enabled for any cronjobs that error, these notifications\nare sent by email. For GitLab.com we use [DMARC](https://dmarc.org/).\nUnfortunately DMARC was not enabled for the cronjob emails, resulting in them\nbeing rejected by the receiver. This means we were never aware of the backups\nfailing, until it was too late.\n\n### Azure disk snapshots\n\nAzure disk snapshots are used to generate a snapshot of an entire disk. These\nsnapshots don't make it easy to restore individual chunks of data (e.g. a lost\nuser account), though it's possible. The primary purpose is to restore entire\ndisks in case of disk failure.\n\nIn Azure a snapshot belongs to a storage account, and a storage account in turn\nis linked to one or more hosts. Each storage account has a limit of roughly 30\nTB. When restoring a snapshot using a host in the same storage account, the\nprocedure usually completes very quickly. However, when using a host in a\ndifferent storage account the procedure can take hours if not days to complete.\nFor example, in one such case it took over a week to restore a snapshot. As a\nresult we try not to rely on this system too much.\n\nWhile enabled for the NFS servers, these snapshots were not enabled for any of\nthe database servers as we assumed that our other backup procedures were\nsufficient enough.\n\n### LVM snapshots\n\nThe LVM snapshots are primarily used to easily copy data from our production\nenvironment to our staging environment. While this process was working as\nintended, the produced snapshots are not really meant to be used for disaster\nrecovery. At the time of the outage we had two snapshots available:\n\n1. A snapshot created for our staging environment every 24 hours, almost 24\n   hours before the outage happened.\n1. A snapshot created manually by one of the engineers roughly 6 hours before\n   the outage.\n\nWhen we generate a snapshot the following steps are taken:\n\n1. Generate a snapshot of production.\n1. Copy the snapshot to staging.\n1. Create a new disk using this snapshot.\n1. Remove all webhooks from the resulting database, to prevent them from being\n   triggered by accident.\n\n## Recovering GitLab.com\n\nTo recover GitLab.com we decided to use the LVM snapshot created 6 hours before\nthe outage, as it was our only option to reduce data loss as much as possible\n(the alternative was to lose almost 24 hours of data). This process would\ninvolve the following steps:\n\n1. Copy the existing staging database to production, which would not contain any\n   webhooks.\n1. In parallel, copy the snapshot used to set up the database as this snapshot\n   might still contain the webhooks (we weren't entirely sure).\n1. Set up a production database using the snapshot from step 1.\n1. Set up a separate database using the snapshot from step 2.\n1. Restore webhooks using the database set up in the previous step.\n1. Increment all database sequences by 100,000 so one can't re-use IDs that\n   might have been used before the outage.\n1. Gradually re-enable GitLab.com.\n\nFor our staging environment we were using Azure classic, without Premium Storage.\nThis is primarily done to save costs as premium storage is quite expensive. As a\nresult the disks are very slow, resulting in them being the main bottleneck in\nthe restoration process. Because LVM snapshots are stored on the hosts they are\ntaken for we had two options to restore data:\n\n1. Copy over the LVM snapshot\n1. Copy over the PostgreSQL data directory\n\nIn both cases the amount of data to copy would be roughly the same. Since\ncopying over and restoring the data directory would be easier we decided to go\nwith this solution.\n\nCopying the data from the staging to the production host took around 18 hours. These disks are network disks and are throttled to a really low number (around 60Mbps), there is no way to move from cheap storage to premium, so this was the performance we would get out of it. There was no network or processor bottleneck, the bottleneck was in the drives.\nOnce copied we were able to restore the database (including webhooks) to the\nstate it was at January 31st, 17:20 UTC.\n\nOn February 1st at 17:00 UTC we managed to restore the GitLab.com database\nwithout webhooks. Restoring webhooks was done by creating a separate staging\ndatabase using the LVM snapshot, but without triggering the removal of webhooks.\nThis allowed us to generate a SQL dump of the table and import this into the\nrestored GitLab.com database.\n\nAround 18:00 UTC we finished the final restoration procedures such as restoring\nthe webhooks and confirming everything was operating as expected.\n\n## Publication of the outage\n\nIn the spirit of transparency we kept track of progress and notes in a\n[publicly visible Google document](https://docs.google.com/document/d/1GCK53YDcBWQveod9kfzW-VCxIABGiryG7_z_6jHdVik/pub).\nWe also streamed the recovery procedure on YouTube, with a peak viewer count of\naround 5000 (resulting in the stream being the #2 live stream on YouTube for\nseveral hours). The stream was used to give our users live updates about the\nrecovery procedure. Finally we used Twitter (\u003Chttps://twitter.com/gitlabstatus>)\nto inform those that might not be watching the stream.\n\nThe document in question was initially private to GitLab employees and contained\nname of the engineer who accidentally removed the data. While the name was added\nby the engineer themselves (and they had no problem with this being public), we\nwill redact names in future cases as other engineers may not be comfortable with\ntheir name being published.\n\n## Data loss impact\n\nDatabase data such as projects, issues, snippets, etc. created between January\n31st 17:20 UTC and 23:30 UTC has been lost. Git repositories and Wikis were not\nremoved as they are stored separately.\n\nIt's hard to estimate how much data has been lost exactly, but we estimate we\nhave lost at least 5000 projects, 5000 comments, and roughly 700 users. This\nonly affected users of GitLab.com, self-managed instances or GitHost instances\nwere not affected.\n\n## Impact on GitLab itself\n\nSince GitLab uses GitLab.com to develop GitLab the outage meant that for some it\nwas harder to get work done. Most developers could continue working using their\nlocal Git repositories, but creating issues and such had to be delayed. To\npublish the blog post [\"GitLab.com Database\nIncident\"](/blog/gitlab-dot-com-database-incident/)\nwe used a private GitLab instance we normally use for private/sensitive\nworkflows (e.g. security releases). This allowed us to build and deploy a new\nversion of the website while GitLab.com was unavailable.\n\nWe also have a public monitoring website located at\n\u003Chttps://dashboards.gitlab.com/>. Unfortunately the current setup for this website\nwas not able to handle the load produced by users using this service during the\noutage. Fortunately our internal monitoring systems (which dashboards.gitlab.com is\nbased on) were not affected.\n\n## Root cause analysis\n\nTo analyse the root cause of these problems we'll use a technique called [\"The 5\nWhys\"](https://en.wikipedia.org/wiki/5_Whys). We'll break up the incident into 2\nmain problems: GitLab.com being down, and it taking a long time to restore\nGitLab.com.\n\n**Problem 1:** GitLab.com was down for about 18 hours.\n\n1. **Why was GitLab.com down?** - The database directory of the primary database\n   was removed by accident, instead of removing the database directory of the\n   secondary.\n1. **Why was the database directory removed?** - Database replication stopped,\n   requiring the secondary to be reset/rebuilt. This in turn requires that the\n   PostgreSQL data directory is empty. Restoring this required manual work as\n   this was not automated, nor was it documented properly.\n1. **Why did replication stop?** - A spike in database load caused the database\n   replication process to stop. This was due to the primary removing WAL\n   segments before the secondary could replicate them.\n1. **Why did the database load increase?** - This was caused by two events\n   happening at the same time: an increase in spam, and a process trying to\n   remove a GitLab employee and their associated data.\n1. **Why was a GitLab employee scheduled for removal?** - The employee was\n   reported for abuse by a troll. The current system used for responding to\n   abuse reports makes it too easy to overlook the details of those reported. As\n   a result the employee was accidentally scheduled for removal.\n\n**Problem 2:** restoring GitLab.com took over 18 hours.\n\n1. **Why did restoring GitLab.com take so long?** - GitLab.com had to be\n   restored using a copy of the staging database. This was hosted on slower\n   Azure VMs in a different region.\n1. **Why was the staging database needed for restoring GitLab.com?** - Azure\n   disk snapshots were not enabled for the database servers, and the periodic\n   database backups using `pg_dump` were not working.\n1. **Why could we not fail over to the secondary database host?** - The\n   secondary database's data was wiped as part of restoring database\n   replication. As such it could not be used for disaster recovery.\n1. **Why could we not use the standard backup procedure?** - The standard backup\n   procedure uses `pg_dump` to perform a logical backup of the database. This\n   procedure failed silently because it was using PostgreSQL 9.2, while\n   GitLab.com runs on PostgreSQL 9.6.\n1. **Why did the backup procedure fail silently?** - Notifications were\n   sent upon failure, but because of the Emails being rejected there was no\n   indication of failure. The sender was an automated process with no other\n   means to report any errors.\n1. **Why were the Emails rejected?** - Emails were rejected by the receiving\n   mail server due to the Emails not being signed using DMARC.\n1. **Why were Azure disk snapshots not enabled?** - We assumed our other backup\n   procedures were sufficient. Furthermore, restoring these snapshots can take\n   days.\n1. **Why was the backup procedure not tested on a regular basis?** - Because\n   there was no ownership, as a result nobody was responsible for testing this\n   procedure.\n\n## Improving recovery procedures\n\nWe are currently working on fixing and improving our various recovery\nprocedures. Work is split across the following issues:\n\n1. [Overview of status of all issues listed in this blog post (#1684)](https://gitlab.com/gitlab-com/infrastructure/issues/1684)\n1. [Update PS1 across all hosts to more clearly differentiate between hosts and environments (#1094)](https://gitlab.com/gitlab-com/infrastructure/issues/1094)\n1. [Prometheus monitoring for backups (#1095)](https://gitlab.com/gitlab-com/infrastructure/issues/1095)\n1. [Set PostgreSQL's max_connections to a sane value (#1096)](https://gitlab.com/gitlab-com/infrastructure/issues/1096)\n1. [Investigate Point in time recovery & continuous archiving for PostgreSQL (#1097)](https://gitlab.com/gitlab-com/infrastructure/issues/1097)\n1. [Hourly LVM snapshots of the production databases (#1098)](https://gitlab.com/gitlab-com/infrastructure/issues/1098)\n1. [Azure disk snapshots of production databases (#1099)](https://gitlab.com/gitlab-com/infrastructure/issues/1099)\n1. [Move staging to the ARM environment (#1100)](https://gitlab.com/gitlab-com/infrastructure/issues/1100)\n1. [Recover production replica(s) (#1101)](https://gitlab.com/gitlab-com/infrastructure/issues/1101)\n1. [Automated testing of recovering PostgreSQL database backups (#1102)](https://gitlab.com/gitlab-com/infrastructure/issues/1102)\n1. [Improve PostgreSQL replication documentation/runbooks (#1103)](https://gitlab.com/gitlab-com/infrastructure/issues/1103)\n1. [Investigate pgbarman for creating PostgreSQL backups (#1105)](https://gitlab.com/gitlab-com/infrastructure/issues/1105)\n1. [Investigate using WAL-E as a means of Database Backup and Realtime Replication (#494)](https://gitlab.com/gitlab-com/infrastructure/issues/494)\n1. [Build Streaming Database Restore](https://gitlab.com/gitlab-com/infrastructure/issues/1152)\n1. [Assign an owner for data durability](https://gitlab.com/gitlab-com/infrastructure/issues/1163)\n\nWe are also working on setting up multiple secondaries and balancing the load\namongst these hosts. More information on this can be found at:\n\n* [Bundle pgpool-II 3.6.1 (!1251)](https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests/1251)\n* [Connection pooling/load balancing for PostgreSQL (#259)](https://gitlab.com/gitlab-com/infrastructure/issues/259)\n\nOur main focus is to improve disaster recovery, and making it more obvious as to\nwhat host you're using; instead of preventing production engineers from running\ncertain commands. For example, one could alias `rm` to something safer but in\ndoing so would only protect themselves against accidentally running `rm -rf\n/important-data`, not against disk corruption or any of the many other ways you\ncan lose data.\n\nAn ideal environment is one in which you _can_ make mistakes but easily and\nquickly recover from them with minimal to no impact. This in turn requires you\nto be able to perform these procedures on a regular basis, and make it easy to\ntest and roll back any changes. For example, we are in the process of setting up\nprocedures that allow developers to test their database migrations. More\ninformation on this can be found in the issue\n[\"Tool for executing and reverting Rails migrations on staging\"](https://gitlab.com/gitlab-com/infrastructure/issues/811).\n\nWe're also looking into ways to build better recovery procedures for the entire\nGitLab.com infrastructure, and not just the database; and to ensure there is\nownership of these procedures. The issue for this is\n[\"Disaster recovery for everything that is not the database\"](https://gitlab.com/gitlab-com/infrastructure/issues/1161).\n\nMonitoring wise we also started working on a public backup monitoring dashboard,\nwhich can be found at \u003Chttps://dashboards.gitlab.com/dashboard/db/postgresql-backups>.\nCurrently this dashboard only contains data of our `pg_dump` backup procedure,\nbut we aim to add more data over time.\n\nOne might notice that at the moment our `pg_dump` backups are 3 days old.  We\nperform these backups on a secondary as `pg_dump` can put quite a bit of\npressure on a database. Since we are in the process of rebuilding our\nsecondaries the `pg_dump` backup procedure is suspended for the time being. Fear\nnot however, as LVM snapshots are now taken every hour instead of once per 24\nhours. Enabling Azure disk snapshots is something we're still looking into.\n\nFinally, we're looking into improving our abuse reporting and response system.\nMore information regarding this can be found in the issue\n[\"Removal of users by spam should not hard delete\"](https://gitlab.com/gitlab-org/gitlab-ce/issues/27581).\n\nIf you think there are additional measures we can take to prevent incidents like this please let us know in the comments.\n\n## Troubleshooting FAQ\n\n### Some of my merge requests are shown as being open, but their commits have already been merged into the default branch. How can I resolve this?\n\nPushing to the default branch will automatically update the merge request so\nthat it's aware of there not being any differences between the source and target\nbranch. At this point you can safely close the merge request.\n\n### My merge request has not yet been merged, and I am not seeing my changes. How can I resolve this?\n\nThere are 3 options to resolve this:\n\n1. Close the MR and create a new one\n1. Push new changes to the merge request's source branch\n1. Rebase/amend, and force push to the merge request's source branch\n\n### My GitLab Pages website was not updated. How can I solve this?\n\nGo to your project, then \"Pipelines\", \"New Pipeline\", use \"master\" as the\nbranch, then create the pipeline. This will create and start a new pipeline\nusing your master branch, which should result in your website being updated.\n\n### My Pipelines were not executed\n\nMost likely they were, but the database is not aware of this. To solve this,\ncreate a new pipeline using the right branch and run it.\n\n### Some commits are not showing up\n\nPushing new commits should automatically solve this. Alternatively you can try\nforce pushing to the target branch.\n\n### I created a project after 17:20 UTC and it shows up, but my issues are gone.  What happened?\n\nProject details are stored in the database. This meant that this data was lost\nfor projects created after 17:20. We ran a procedure to restore these\nprojects based on their Git repositories that were still stored in our NFS\ncluster. This procedure however was only able to restore projects in their most\nbasic form, without associated data such as issues and merge requests.\n",{"slug":4244,"featured":6,"template":683},"postmortem-of-database-outage-of-january-31","content:en-us:blog:postmortem-of-database-outage-of-january-31.yml","Postmortem Of Database Outage Of January 31","en-us/blog/postmortem-of-database-outage-of-january-31.yml","en-us/blog/postmortem-of-database-outage-of-january-31",{"_path":4250,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4251,"content":4257,"config":4262,"_id":4264,"_type":17,"title":4265,"_source":18,"_file":4266,"_stem":4267,"_extension":21},"/en-us/blog/gitlab-mexico-summit-2017",{"title":4252,"description":4253,"ogTitle":4252,"ogDescription":4253,"noIndex":6,"ogImage":4254,"ogUrl":4255,"ogSiteName":671,"ogType":672,"canonicalUrls":4255,"schema":4256},"GitLab Mexico Summit 2017","The largest remote-only organization in the world takes over Cancún for a week full of joy!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671507/Blog/Hero%20Images/akumal.jpg","https://about.gitlab.com/blog/gitlab-mexico-summit-2017","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Mexico Summit 2017\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Kirsten Abma\"}],\n        \"datePublished\": \"2017-02-08\",\n      }",{"title":4252,"description":4253,"authors":4258,"heroImage":4254,"date":4260,"body":4261,"category":14},[4259],"Kirsten Abma","2017-02-08","\n\nSix months of planning culminated in 201 GitLab team-members taking over\none Cancún resort for a long week of meetings, activities, hard work,\nand fun.\n\n\u003C!-- more -->\n\nIf it were appropriate to start a blog post with every emoji\nthat expresses extreme delight, we would. In lieu of that we will\njust say the GitLab Summit in Mexico was beyond excellent. 🎉\n\n## A little background for the folks at home\n\nAs a fully remote company with people in 35 different countries,\nmost of the team never gets to meet each other in person.\nTo remedy that, and so that everyone gets a\nchance for some face-to-face time and to meet their teams, we do a [team\nsummit] every nine months. This allows us to get to know the group better\nand have a unique opportunity to collaborate with our own teams and\nothers we may not work with normally. By the end of the week we\nall have a better understanding of what everyone does, who we can\ngo to with questions on specific topics, and how we all can work\ntogether as a team.\n\n## We took Cancún by storm\n\nOn Tuesday, January 10th, our entire team was welcomed by the people behind the screens\nwith amazing swag, made specially for this trip, including a T-shirt,\nname badge, stickers, bag patches, and a drawstring bag; all Mexican themed.\n\n![GitLab Team - January 2017](https://about.gitlab.com/images/8_16/pic.jpg)\n\n## Sid's shuffle challenge\n\nAfter a full night's rest we kicked the week off with a welcome keynote\nby our main man, [Sid], who immediately got the team spirit going by\nchallenging the team to make the Idea to Production demo work on\nGoogle Kubernetes Engine.\n\n\u003C!-- Keynote -->\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/xGxLi3PtxHM\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\nIf the team managed to show this fully functioning, he would do the\nSid shuffle from \"Ice Age 4\". Needless to say our team didn't disappoint,\nand neither did Sid.\n\n\u003C!-- I2P + shuffle -->\n\nThe video is not the best we've posted, but we don't want you to miss out on the Sid Shuffle. If you want to skip the live demo our team did, please go to [28:29](https://www.youtube.com/watch?v=39chczWRKws#t=28m29s).\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/39chczWRKws\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## So much awesomeness\n\nWe broke into smaller groups for a competitive scavenger hunt and\nenjoyed the fruits of our labor with a happy hour afterwards.\n\nWe could make this blog post five pages long just describing how beautiful\nour trip to Akumal beach was, where we got to snorkel with sea turtles,\nhow impressive the Mayan ruins of Chichén Itzá were after so many years,\nthe adrenaline rush the zipline gave us, or how much money we made at\nour very own GitLab Casino night, but there’s no way of putting into\nwords how much fun this week was.\n\n\u003C!-- carousel -->\n\n\u003Cdiv id=\"carousel-example-generic\" class=\"carousel slide\" data-ride=\"carousel\">\n  \u003C!-- Indicators -->\n  \u003Col class=\"carousel-indicators\">\n    \u003Cli data-target=\"#carousel-example-generic\" data-slide-to=\"0\" class=\"active\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic\" data-slide-to=\"1\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic\" data-slide-to=\"2\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic\" data-slide-to=\"3\">\u003C/li>\n    \u003Cli data-target=\"#carousel-example-generic\" data-slide-to=\"4\">\u003C/li>\n  \u003C/ol>\n\n  \u003C!-- Wrapper for slides -->\n  \u003Cdiv class=\"carousel-inner\" role=\"listbox\">\n    \u003Cdiv class=\"item active\">\n      \u003Cimg src=\"/images/blogimages/gitlab-mexico-summit-2017/hotel.jpg\" alt=\"Resort\">\n      \u003Cdiv class=\"carousel-caption\">\n        Resort\n      \u003C/div>\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/gitlab-mexico-summit-2017/akumal-turtle.jpg\" alt=\"Swimming with turtles at Akumal\">\n      \u003Cdiv class=\"carousel-caption\">\n        Akumal Beach - Swimming with Turtles\n      \u003C/div>\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/gitlab-mexico-summit-2017/chichen-itza.jpg\" alt=\"Maya Ruins - Chichén Itzá\">\n      \u003Cdiv class=\"carousel-caption\">\n        Maya Ruins - Chichén Itzá\n      \u003C/div>\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/gitlab-mexico-summit-2017/gogame.jpg\" alt=\"Go Game\">\n      \u003Cdiv class=\"carousel-caption\">\n        Scavenger Hunt - Go Game - Rémy Coutable and Kyla Gradin\n      \u003C/div>\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/gitlab-mexico-summit-2017/capture-the-flag.jpg\" alt=\"Capture the Flag\">\n      \u003Cdiv class=\"carousel-caption\">\n        Capture the Flag and our Tanuki\n      \u003C/div>\n    \u003C/div>\n    \u003Cdiv class=\"item\">\n      \u003Cimg src=\"/images/blogimages/gitlab-mexico-summit-2017/poker-chips.jpg\" alt=\"Casino Night - Poker Chips\">\n      \u003Cdiv class=\"carousel-caption\">\n        Casino Night Swag - Poker Chips\n      \u003C/div>\n    \u003C/div>\n  \u003C/div>\n\n  \u003C!-- Controls -->\n  \u003Ca class=\"left carousel-control\" href=\"#carousel-example-generic\" role=\"button\" data-slide=\"prev\">\n    \u003Cspan class=\"glyphicon glyphicon-chevron-left\" aria-hidden=\"true\">\u003C/span>\n    \u003Cspan class=\"sr-only\">Previous\u003C/span>\n  \u003C/a>\n  \u003Ca class=\"right carousel-control\" href=\"#carousel-example-generic\" role=\"button\" data-slide=\"next\">\n    \u003Cspan class=\"glyphicon glyphicon-chevron-right\" aria-hidden=\"true\">\u003C/span>\n    \u003Cspan class=\"sr-only\">Next\u003C/span>\n  \u003C/a>\n\u003C/div>\n\n\u003C!-- gifs -->\n\u003Cbr>\n\u003Cdiv class=\"row text-center\">\n  \u003Cdiv class=\"col-md-6 col-xm-12\">\n    \u003Cfigure>\n      \u003Cimg src=\"/images/blogimages/gitlab-mexico-summit-2017/sam-rose-cenote.gif\" alt=\"Sam Rose - cenote\">\n      \u003Cfigcaption>Sam Rose acrobatically ziplining into a cenote\u003C/figcaption>\n    \u003C/figure>\n  \u003C/div>\n  \u003Cdiv class=\"col-md-6 col-xm-12\">\n    \u003Cfigure>\n      \u003Cimg src=\"/images/blogimages/gitlab-mexico-summit-2017/dimitrie-hoekstra-cenote.gif\" alt=\"Dimitrie Hoekstra - cenote\">\n      \u003Cfigcaption>Dimitrie Hoekstra ziplining into a cenote\u003C/figcaption>\n    \u003C/figure>\n  \u003C/div>\n\u003C/div>\n\u003Cbr>\n\n## Getting together\n\nAs always, the highlight of the trip was just getting to meet everyone.\nThe best thing about working at GitLab is the people. We have somehow\nmanaged to collect the most dedicated, thoughtful, and hardworking group\nof individuals around the world. Being in one place is exhausting, because\nthere are so many wonderful people to meet, but it's also so inspiring. You get\nto hear about the diverse projects everyone is working on and their innovative\nsolutions and you feel inspired by their passion and creativity.\nIt made us so excited for 2017, knowing how much enthusiasm we are going\nto bring and the potential we have to continue to build an excellent company\nand product.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/XDfTj8iv9qw\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n\nHow about joining us at the next GitLab Summit? Check out our [job openings]\nand apply right now!\n\n\u003C!-- identifiers -->\n\n[job openings]: /jobs/\n[sid]: /company/team/#sytses\n[team summit]: /events/gitlab-contribute/\n\n\u003C!-- custom styles -->\n\n\u003Cstyle>\n\t.carousel-inner > .item > img{\n\t\twidth: 100%;\n\t}\n\t.blog.article .body ol {\n\t\tmargin-bottom: 10px !important;\n\t}\n\u003C/style>\n",{"slug":4263,"featured":6,"template":683},"gitlab-mexico-summit-2017","content:en-us:blog:gitlab-mexico-summit-2017.yml","Gitlab Mexico Summit 2017","en-us/blog/gitlab-mexico-summit-2017.yml","en-us/blog/gitlab-mexico-summit-2017",{"_path":4269,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4270,"content":4276,"config":4281,"_id":4283,"_type":17,"title":4284,"_source":18,"_file":4285,"_stem":4286,"_extension":21},"/en-us/blog/around-the-world-in-6-releases",{"title":4271,"description":4272,"ogTitle":4271,"ogDescription":4272,"noIndex":6,"ogImage":4273,"ogUrl":4274,"ogSiteName":671,"ogType":672,"canonicalUrls":4274,"schema":4275},"Around the world in 6 releases","Two GitLab team-members spent 6 months visiting and working with 49 different colleagues in 14 countries","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684126/Blog/Hero%20Images/cover.png","https://about.gitlab.com/blog/around-the-world-in-6-releases","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Around the world in 6 releases\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Douwe Maan\"}],\n        \"datePublished\": \"2017-01-31\",\n      }",{"title":4271,"description":4272,"authors":4277,"heroImage":4273,"date":4279,"body":4280,"category":14},[4278],"Douwe Maan","2017-01-31","\n\nTwo GitLab team-members, [Robert](/company/team/#rspeicher) and [Douwe](/company/team/#DouweM), took our [\"the company will cover travel costs to visit colleagues\"](/handbook/spending-company-money/#travel-to-visit-team-members) policy and ran with it, spending six months visiting and working with 49 different colleagues in 20 cities, in 14 countries, on five continents. Read on for the who, what, why, and where.\n\n\u003C!-- more -->\n\n{: .text-center}\n[![Map](https://about.gitlab.com/images/blogimages/around-the-world-in-6-releases/robert-and-douwe-small.jpg){: .shadow width=\"600px\"}](/images/blogimages/around-the-world-in-6-releases/robert-and-douwe.jpg)\u003Cbr>\n_Douwe and Robert on the first day of the trip, just after arriving at their Washington, D.C. apartment_\u003Cbr>\n_Can you catch a glimpse of the limited-edition GitLab branded socks?_\n\n## Background\n\nOne of the great things about [remote work at GitLab](/blog/the-remote-manifesto/) is that it doesn't just mean \"work your regular 9-to-5 job from home,\" but rather \"work however you like, wherever you like, whenever you like.\"\nWe don't believe in fixed [working hours](/handbook/paid-time-off/#working-hours), prefer [asynchronous communication](/handbook/communication) for most things, encourage people to take as much [time off](/handbook/paid-time-off) as they need to run errands or just take a break from work, and the main thing we expect from our people is [results](https://handbook.gitlab.com/handbook/values/).\n\nOn the other hand, we realize that one of the downsides of remote work is that, while you may see your colleagues every day in chat and video calls, you will likely not have the chance to physically hang out with them more than once or twice a year at a summit or conference.\n\nOne of the things we do to help our team members [connect and stay connected](/blog/how-we-stay-connected-as-a-remote-company/) uses that advantage to combat the downside: we encourage everyone to [travel to visit and work with other team members](/handbook/spending-company-money/#travel-to-visit-team-members), wherever they may be, and will cover any travel costs to get there.\n(It's in the handbook, so it's true!)\n\n## The trip\n\nIn early 2016, I (Douwe) was trying to figure out how to spend the year and realized that my [remote-only](http://www.remoteonly.org/) job at GitLab gave me a unique opportunity to combine two of my favorite things: travel, and work. I decided to travel for six months, visiting [GitLab colleagues](/company/team/) around the world to get to know them better, work with them, and see some of the beautiful places our planet has to offer in the process. I dubbed it \"Around the World in 6 Releases.\"\n\nWhen Robert decided to join a few months later (his response to my invitation was a simple \"Sure\") the plan was really on.\n\nTwo weeks later, just before the release of [GitLab 8.9](/releases/2016/06/22/gitlab-8-9-released/) in June, I flew from Amsterdam to Washington, D.C. to meet up with Robert, and we spent the next six months (and six [r](/releases/2016/06/22/gitlab-8-9-released/)[e](/releases/2016/07/22/gitlab-8-10-released/)[l](/releases/2016/08/22/gitlab-8-11-released/)[e](/releases/2016/09/22/gitlab-8-12-released/)[as](/releases/2016/10/22/gitlab-8-13-released/)[es](/releases/2016/11/22/gitlab-8-14-released/)) visiting and working with colleagues all over the world, returning to our respective homes in December, just before the release of [GitLab 8.15](/releases/2016/12/22/gitlab-8-15-released/).\n\nTraveling the equivalent of 2.5 times around the equator over some 31 flights, the trip took us to\n[Washington, D.C.](https://maps.google.com?q=Washington,+D.C.),\n[New York City](https://maps.google.com?q=New+York+City),\n[Nashville](https://maps.google.com?q=Nashville),\n[Denver](https://maps.google.com?q=Denver),\n[Salt Lake City](https://maps.google.com?q=Salt+Lake+City),\n[Las Vegas](https://maps.google.com?q=Las+Vegas),\n[Mexico City](https://maps.google.com?q=Mexico+City),\n[Rio de Janeiro](https://maps.google.com?q=Rio+de+Janeiro),\n[Sofia](https://maps.google.com?q=Sofia),\n[Warsaw](https://maps.google.com?q=Warsaw),\n[Nice](https://maps.google.com?q=Nice),\n[Madrid](https://maps.google.com?q=Madrid),\n[Braga](https://maps.google.com?q=Braga),\n[Lisbon](https://maps.google.com?q=Lisbon),\n[Edinburgh](https://maps.google.com?q=Edinburgh),\n[Tel Aviv](https://maps.google.com?q=Tel+Aviv),\n[Taipei](https://maps.google.com?q=Taipei),\n[Bali](https://maps.google.com?q=Bali),\n[Sydney](https://maps.google.com?q=Sydney),\nand finally\n[Amsterdam](https://maps.google.com?q=Amsterdam)\n\nNot shown is the week between Sydney and Amsterdam that we spent in [New Zealand](https://maps.google.com?q=New+Zealand), explicitly chosen because we had no one there and because we thought we deserved a vacation after six months of non-stop travel/work.\n\n[![Map](https://about.gitlab.com/images/blogimages/around-the-world-in-6-releases/map.png){: .shadow}](/images/blogimages/around-the-world-in-6-releases/map.png)\n\nAbout halfway through the trip, GitLab CEO [Sid](/company/team/#sytses) realized the tremendous positive impact the trip was having on all of the people visiting, being visited, and following along through our team calls, and the [\"the company will cover travel costs to visit colleagues\"](/handbook/spending-company-money/#travel-to-visit-team-members) policy [was born](https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/3735) to encourage more people to make trips like this in the future.\n\nNow that the trip is concluded and we've had a few weeks to reflect, I'd like to share with you some of the things we've learned during this trip.\nIn the near future, we will also publish a follow-up to [\"GitLab in Action\"](/blog/gitlab-in-action/), covering our travels through Latin America, Europe, Asia, and Oceania in more detail.\n\n## Insight 1: GitLab feels like one big team of friends\n\nOne of the first things we realized on this trip relates to one of our core values at GitLab: [Kindness](https://handbook.gitlab.com/handbook/values/#kindness).\n\nEach and every one of the people we met up with, some of whom didn't even know we were coming until just days before we arrived, welcomed us with open arms and made us feel at home in these strange cities and countries.\nMany of them invited us into their homes, introduced us to their significant others and/or [pets](/company/team-pets), and took us into town to show us their favorite places to see, work, eat, or have a drink.\n\nBecause of the glimpses we have had into each other's lives through the daily company-wide [team call](/handbook/communication/#team-call) and the dozens of chat channels about interests and hobbies, it immediately felt like we were hanging out with a friend, not just \"someone from the internet,\" or \"this person I work with.\" While early conversations often related to our single biggest shared interest – GitLab and work at GitLab – this quickly became just one of the many things we talked about.\n\nInterestingly, this was true regardless of whether they were in our department and we had already worked with them a lot, or if they did something totally different and we had never conversed before. [\"There are no floors in GitLab\"](/blog/how-we-stay-connected-as-a-remote-company/), and even though we have multiple [functional groups](/company/team/structure), GitLab feels like one big team.\n\n{: .text-center}\n![GitLab Edinburgh](https://about.gitlab.com/images/blogimages/gitlab-edinburgh.jpg){: .shadow}\u003Cbr>\n_The unofficial Edinburgh GitLab office, with (from left to right) Douwe, [James EJ](/company/team/#jamedjo), [Sean M](/company/team/#mcgivernsa), [Sean P](/company/team/#SeanPackham), [Nick](/company/team/#lupine_85), and Robert_\n\n## Insight 2: Hearing about it is one thing, experiencing it is another\n\nWith \u003C%= Gitlab::Homepage.team.members.size %> people in \u003C%= Gitlab::Homepage.team.members.group_by(&:country).size %> different countries, GitLab is the largest [remote-only](http://www.remoteonly.org/) organization in the world, with a wide range of cultures, ways of thinking, and ways of living among its people.\n\nWhile you hear about things going on in people's lives, about the places they live, and about issues they face, it's hard to truly appreciate and understand these different perspectives at a distance of hundreds, thousands, or tens of thousands of miles. Visiting them, getting to know them in their \"natural habitat\", and experiencing some bits of their life yourself, bring you closer to that understanding than anything else.\n\nAn example of this occurred when we arrived in Taipei, Taiwan to meet with [Jen-Shin](/company/team/#godfat-gitlab), and got to experience GitLab from the Asia-Pacific (APAC) region.\n\nSeen from Taipei, the European workday starts at around 4pm, and the American workday doesn't start until 10pm, so there is very little overlap with much of the rest of the team. While your mornings are nice and quiet and offer you a chance to concentrate on your work and catch up on emails and todos without interruption, that changes just when your workday is about to end. You get responses to all of the chat messages and GitLab comments you sent earlier, people start mentioning you on new things, and you are left with a choice: Do I work a little bit more and respond to them now, or do I respond in the morning, effectively blocking them until _their_ morning, a full 24 hours later?\n\nBeing the kind, helpful people we are, we chose the former, and as those things go, before we knew it the clock struck 12 and we had been working for 15 hours straight.\n\nTurns out it's really hard to stick to regular working hours when most of the people you work with are half a world away. In the end, we did what Jen-Shin had already found as working best for him: we shifted our workday a number of hours to better align with Europe. Other people work in the morning, take a break for a few hours to do whatever it is people do, and work some more in the evening. [Working hours are flexible](/handbook/paid-time-off/#working-hours), so everyone finds something that works for them. Of course, as more people from the APAC region join the team, and as our people get more evenly distributed among timezones, much of this issue will resolve itself automatically.\n\nAnother example of an issue our APAC team members face is the inconvenient timing of the daily company-wide [Team Call](/handbook/communication/#team-call): 8:30am in San Francisco, 5:30pm in Amsterdam, but 12:30am in Taipei. Of course the agenda is in a shared document, but not being able to hear or react live to the stories people share about their lives, or to share your own with the rest of the team, makes you feel like you miss out, and – in a sense – like you are being left out. To help with this, we have started [recording all of our team calls](https://gitlab.com/gitlab-com/peopleops/issues/1) including the \"what did you do this weekend?\" bit, and have a dedicated [APAC Team Call](/handbook/communication/#team-call) for those in that region and anyone else who wants to join, to give them the same regular opportunity to share stories about their lives, and to talk with colleagues about something other than work.\n\nBottom line is, hearing about these issues from a distance is one thing, but being there and experiencing it yourself is totally different.\n\n{: .text-center}\n[![Map](https://about.gitlab.com/images/blogimages/around-the-world-in-6-releases/taiwan-waterfall.jpg){: .shadow width=\"600px\"}](/images/blogimages/around-the-world-in-6-releases/taiwan-waterfall.jpg)\u003Cbr>\n_Besides a crazy timezone, Taiwan also has beautiful nature and awesome waterfalls!_\u003Cbr>\n_From left to right: Jen-Shin, his girlfriend, Robert, Douwe, and Vincent Lin, a hiker/developer friend we made_\n\n## Insight 3: People valued our visits immensely\n\nThe goal of this trip was always to visit colleagues and get to know them better. Of course, it was also a great excuse to travel, and to visit and experience some awesome cities and countries we otherwise might never have seen, or at least not with a local to show us around. We never realized, however, what kind of impact the fact that we traveled so many miles to visit and get to know them would have on some of the people we visited.\n\nSince their words do it more justice than mine, I'm going to let them speak for themselves (emphasis mine):\n\n[Marcia](/company/team/#XMDRamos), who we met in Rio de Janeiro, Brazil, along with [Douglas](/company/team/#dbalexandre) and [Felipe](/company/team/#FelipeArtur), writes:\n\n> After a few months with GitLab, it was very important to me finally meeting people in person, **it made me feel more human in our virtual world**. More exciting yet, was hanging out with such amazing guys, interested in what we have to share, in what we think about our job, how we feel about working remotely, what is awesome about GitLab and what we feel is missing. **Such openness makes us feel included, touched.**\n>\n> For our tech-generation, strengthening our relationships is essential, otherwise everything around us ends up superficial; we won’t ever feel fulfilled. As we usually spend most of our time working, it is so important to be with people, to share our concerns, to help, to collaborate, to participate, and to have moments of joy. **I feel so grateful for having met these folks face to face.** Thanks guys, and thanks GitLab for allowing us to do this kinda thing!\n\n[Pedro](/company/team/#pedromscom), who we met in Lisbon, Portugal, writes:\n\n> I believe it was a rich experience for everyone. I gave them some nice memories of Lisbon and, in return, **they brought GitLab’s values and culture to my doorstep**. As a new GitLab team-member, I was in “sponge mode”. After all, I had two experienced team members in front of me, that inhale and exhale GitLab. Also, as remote workers, it’s uncommon to spend so much time talking and hanging out with other team members. **Their stories made me appreciate GitLab even more, and I felt valued with their presence.**\n\n[Eliran](/company/team/#eliran_mesika), who we met in Tel Aviv, Israel, writes:\n\n> **Meeting with Douwe and Robert provided quality time** to work together and casually bounce around ongoing matters with them in a way that is otherwise a bit cumbersome when working remotely. I feel this sort of casual channel of communication is lacking from the remote work environment and **having a few days to work together face-to-face was a real treat.** To make things better, we were able to hang out and get to know each other on a personal level in an opportunity you might not get in a \"classic\" office setting with your colleagues. I was able to invite them over to my house, give them the tour of my home office, introduce them to my wife and tour our city together.\n\n\n## Conclusion\n\nThis trip has been one of the most, if not _the_ most, rewarding experiences of our lives. Not in the least because of the insights listed above, but first and foremost because of all of the amazing people we have gotten to connect with at a deeper level, all of the things we have experienced together, and all the beautiful places we have been able to see with them.\n\nWe would like to thank all of the people we visited for welcoming us with open arms into their cities and, in many ways, their lives. You (and everyone else at GitLab) are welcome in our homes anytime.\n\nWe would like to thank GitLab for making these things possible through [the way we work](/handbook/), for actively encouraging trips like this by covering a [significant portion of the cost](/handbook/spending-company-money/#travel-to-visit-team-members), and ultimately for having built a company with a [culture](/company/culture/) and [team](/company/team/) like no other.\n\nThis post is one in a series about this particular trip. Check out GitLab in Action [part 1](/blog/gitlab-in-action/) and [part 2](/blog/gitlab-in-action-part-2/)!\n\n{: .text-center}\n![Lisbon sticker wall](https://about.gitlab.com/images/blogimages/around-the-world-in-6-releases/lisbon-sticker-wall.jpg){: .shadow}\u003Cbr>\n_On a wall in Lisbon, Portugal: Evangelizing GitLab, one sticker at a time_\n",{"slug":4282,"featured":6,"template":683},"around-the-world-in-6-releases","content:en-us:blog:around-the-world-in-6-releases.yml","Around The World In 6 Releases","en-us/blog/around-the-world-in-6-releases.yml","en-us/blog/around-the-world-in-6-releases",{"_path":4288,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4289,"content":4295,"config":4300,"_id":4302,"_type":17,"title":4303,"_source":18,"_file":4304,"_stem":4305,"_extension":21},"/en-us/blog/gitlab-2016-year-in-review",{"title":4290,"description":4291,"ogTitle":4290,"ogDescription":4291,"noIndex":6,"ogImage":4292,"ogUrl":4293,"ogSiteName":671,"ogType":672,"canonicalUrls":4293,"schema":4294},"GitLab 2016 year in review","We’re proud to announce that we closed 2016 with the entire idea-to-production workflow, as promised! These are the highlights!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666633/Blog/Hero%20Images/gitlab-2016-in-review-cover.png","https://about.gitlab.com/blog/gitlab-2016-year-in-review","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab 2016 year in review\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Connor Shea\"}],\n        \"datePublished\": \"2017-01-24\",\n      }",{"title":4290,"description":4291,"authors":4296,"heroImage":4292,"date":4298,"body":4299,"category":14},[4297],"Connor Shea","2017-01-24","\nAt GitLab, we believe the best approach to software delivery is to ship quickly and often.\nBy building a team and a [company culture](/company/culture/) that values iteration over perfection, we\nare able to ship new improvements and features every month!\n\nSo it should come as no surprise that in 2016, we shipped 12 new versions of GitLab!\nIncluded in those releases were major new features like [Issue Boards] and\n[Cycle Analytics], and the completion of our idea-to-production [vision](/blog/gitlab-master-plan/#vision).\n\n\u003C!-- more -->\n\nFor a visual of how far we’ve come, take a look at these two screenshots.\n\nAn issue for GitLab Community Edition on January 22, 2016 (8.4):\n\n![Screenshot of an issue from GitLab 8.4 on January 22, 2016](https://about.gitlab.com/images/blogimages/2016-year-in-review/gitlab-8-4.png)\n\nAn issue for GitLab Community Edition on January 3, 2017 (8.15):\n\n![Screenshot of an issue from GitLab 8.15 on January 3, 2017](https://about.gitlab.com/images/blogimages/2016-year-in-review/gitlab-8-15.png)\n\n## January: 8.4\n\n> [GitLab 8.4 Release Post](/releases/2016/01/22/gitlab-8-4-released/)\n\nWe kicked off the year with our 50th release of GitLab.\n\n### Build Artifacts\n\nA browser was added for [Build Artifacts](https://docs.gitlab.com/ee/ci/pipelines/job_artifacts.html). Artifacts are the output resulting from builds, and can be used to provide binaries for a piece of software, the compiled content of a static site, or the results of a test coverage checker.\n\n### File Finder\n\nWe introduced a [File Finder](https://docs.gitlab.com/ee/user/project/repository/file_finder.html), a much-requested addition contributed by the community! It helps find any file in a repository using \"fuzzy\" search.\n\n### Elasticsearch (EE Starter)\n\nImproved repository search was added for [Enterprise Edition Starter](/stages-devops-lifecycle/) with [Elasticsearch](https://docs.gitlab.com/ee/integration/advanced_search/elasticsearch.html). This made searching projects' code, issues, and merge requests faster and more useful.\n\n## February: 8.5\n\n> [GitLab 8.5 Release Post](/releases/2016/02/22/gitlab-8-5-released/)\n\n### Todos\n\nFebruary saw the release of GitLab 8.5 with the introduction of [Todos](https://docs.gitlab.com/ee/user/todos.html) – our take on a more useful notification system.\n\n### GitLab Geo (EE Premium)\n\nAlso included in February's release was an alpha version of GitLab Geo. GitLab Geo is available for [GitLab Enterprise Edition Premium](/stages-devops-lifecycle/) and allows companies with offices around the world to mirror their GitLab instance in multiple places. This makes downloading large repositories much faster for all team members, no matter where they are.\n\n### Custom Domains and custom TLS certs for GitLab Pages\n\n[GitLab Pages](https://pages.gitlab.io/) added support for custom domains and custom TLS certificates. This allows users to host their static sites on custom domains without giving up the added security of HTTPS. While GitLab Pages is an Enterprise Edition-only feature right now, [we'll be bringing it to all versions in an upcoming release](/releases/2016/12/24/were-bringing-gitlab-pages-to-community-edition/).\n\n## March: 8.6\n\n> [GitLab 8.6 Release Post](/releases/2016/03/22/gitlab-8-6-released/)\n\n### Confidential Issues\n\n[Confidential issues](https://docs.gitlab.com/ee/user/project/issues/confidential_issues.html) are issues visible only to members of a project with sufficient permissions. Confidential issues can be used by open source projects and companies alike to keep security vulnerabilities private or prevent surprises from leaking out.\n\n### Subscribing to Labels\n\n[Label subscriptions](https://docs.gitlab.com/ee/user/project/labels.html#subscribe-to-labels) send any newly-labeled issues to your inbox so you can keep up-to-date with issues and merge requests relevant to you.\n\n## April: 8.7\n\n> [GitLab 8.7 Release Post](/releases/2016/04/22/gitlab-8-7-released/)\n\n### License Templates\n\n[License templates](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#template-dropdowns) were\nintroduced, providing users with a quick way to fill in LICENSE files for new projects.\nLicense templates can also be added [using the API](https://docs.gitlab.com/ee/api/templates/licenses.html).\n\n### Due Dates\n\n[Due dates](https://docs.gitlab.com/ee/user/project/issues/due_dates.html) were added for issues. They can be used to keep track of deadlines and make sure features are shipped on time.\n\n### Cherry Picking\n\n[Cherry picking](https://docs.gitlab.com/ee/user/project/merge_requests/cherry_pick_changes.html) is [a feature in Git](https://git-scm.com/docs/git-cherry-pick) that takes individual commits or sets of commits from one branch and adds them to another. It’s most commonly used to backport bug fixes or security patches from the default branch to older, stable branches. GitLab 8.7 added cherry picking to the user interface and lets users do more of their work without switching to the command line.\n\n## May: 8.8\n\n> [GitLab 8.8 Release Post](/releases/2016/05/22/gitlab-8-8-released/)\n\n### Pipelines\n\nWith GitLab 8.8, GitLab CI gained the concept of [Pipelines](https://docs.gitlab.com/ee/ci/pipelines/index.html), collections of builds that are executed in stages. Pipelines allow for better organization and parallelization.\n\n### GitLab Container Registry\n\n[GitLab Container Registry](https://docs.gitlab.com/ee/user/packages/container_registry/index.html) was a huge addition to our offering with GitLab CI. If you’ve used [Docker](https://www.docker.com/), you probably know what a container registry is. Container registries are used to host and provide Docker containers for testing and deployment of software. Integrating the container registry means that uploading and download Docker images is easy and fast, especially for local instances.\n\nRead [the full blog post](/blog/gitlab-container-registry/) on the GitLab Container Registry for more information.\n\n### `.gitignore` templates\n\nFollowing the introduction of License templates in 8.7, 8.8 provides [`.gitignore` templates](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#template-dropdowns) as well. [`.gitignore` files](https://git-scm.com/docs/gitignore) tell git not to track certain directories or kinds of files to help keep the repository clean. We provide templates for various languages and frameworks to prevent users from committing secrets or large log files to the repository. `.gitignore` templates can also be added [using the API](https://docs.gitlab.com/ee/api/templates/gitignores.html).\n\n## June: 8.9\n\n> [GitLab 8.9 Release Post](/releases/2016/06/22/gitlab-8-9-released/)\n\n### File Locking (EE Premium)\n\n[File Locking](https://docs.gitlab.com/ee/user/project/file_lock.html) is an EE Premium feature that can be used to prevent binary files from being overwritten. This is useful for many use cases, like game development with models, art assets, and sound files or on a website when editing a graphic. File Locking also works for non-binary files.\n\n### Environments\n\nWith GitLab 8.9 you can now define [Environments](https://docs.gitlab.com/ee/ci/environments/index.html). Environments allow you to track deployments and quickly understand things like \"what's running in staging?\"\n\n![Environments](https://about.gitlab.com/images/8_9/environments.png){:.shadow}\n\nFor more information, see [our blog post on Environments and Deployments](/blog/ci-deployment-and-environments/).\n\n### Priority Labels\n\nWith GitLab 8.9, labels can be starred and added to a priority list.\n[Prioritized labels](https://docs.gitlab.com/ee/user/project/labels.html#prioritize-labels)\nare like any other label, but sorted by priority. This allows you to easily\nsort issues and merge requests by priority.\n\n![Priority Labels](https://about.gitlab.com/images/8_9/plabels2.png){:.shadow}\n\n### Redesigned Navigation\n\nWith 8.9 we replaced the often-confusing sidebar paradigm with a new tabbed header. We've been really happy with this change, and think it was a huge improvement over our past iterations.\n\n![Redesigned Navigation](https://about.gitlab.com/images/8_9/look3.png)\n\n### Universal Two Factor (U2F)\n\nUniversal Two Factor (U2F) is a form of [Two-Factor Authentication](https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html) that uses physical keys (usually via USB) for authentication. GitLab 8.9 added support for the U2F device standard.\n\nSee [our blog post](/blog/gitlab-adds-support-for-u2f/) for more information.\n\n## July: 8.10\n\n> [GitLab 8.10 Release Post](/releases/2016/07/22/gitlab-8-10-released/)\n\n### Wildcard Branch Protection\n\nOur branch protection feature was improved with [Wildcard Branch Protection](https://docs.gitlab.com/ee/user/project/protected_branches.html), allowing repositories to protect branches based on their names, for example `release-*` protects any branch which starts with `release-`.\n\n![Wildcard Branch Protection](https://about.gitlab.com/images/8_10/wc1.png){:.shadow}\n\n### Manual actions for CI\n\n[Manual actions](https://docs.gitlab.com/ee/ci/environments/index.html#manually-deploying-to-environments) were introduced for CI. This addition allows users to maintain fine-grained control over how they handle things like deployments to staging or production, rather than deploying automatically upon a pipeline's completion.\n\n![Manual Actions for CI](https://about.gitlab.com/images/8_10/ci_manual1.png){:.shadow}\n\nFor more information, read the post \"[Continuous Integration, Continuous Delivery, and Continuous Deployment with GitLab](/blog/continuous-integration-delivery-and-deployment-with-gitlab/)\".\n\n## August: 8.11\n\n> [GitLab 8.11 Release Post](/releases/2016/08/22/gitlab-8-11-released/)\n\nGitLab 8.11 was probably the most exciting release of the year, bringing with it a number of major features and improvements.\n\n### Issue Boards\n\n[Issue Boards](/stages-devops-lifecycle/issueboard/) are another way of tracking project issues. Similar to existing kanban board software, [issue boards integrate](https://docs.gitlab.com/ee/user/project/issue_board.html) with the issues you already have in GitLab and organize themselves based on project labels. If you're already using labels to track progress on issues, issue boards shouldn't take more than a minute to set up.\n\n![Issue Boards](https://about.gitlab.com/images/8_11/issue_boards.gif){:.shadow}\n\n### Merge Conflict Resolution\n\nMerge conflicts frequently happen in large projects with lots of developers. They cause friction and slow down the pace of development, which is why we introduced [Merge Conflict Resolution](https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html) into the GitLab web interface. With Merge Conflict Resolution, users can resolve simple conflicts right from GitLab.\n\n![Merge Conflict Resolution](https://about.gitlab.com/images/8_11/resolve_mc.gif){:.shadow}\n\n### Merge Request Discussion Resolution\n\nWith [Discussion Resolution](https://docs.gitlab.com/ee/user/discussions/index.html), each comment and discussion on merge request diffs can be resolved. Longer threads can be resolved all at once or just comment-by-comment. Discussion resolution can help prevent feedback from slipping through the cracks on larger merge requests.\n\n![Resolve Discussions](https://about.gitlab.com/images/8_11/resolve_discussion.png){:.shadow}\n\n### Pipeline Graphs\n\n[Pipeline Graphs](https://docs.gitlab.com/ee/ci/pipelines/index.html) are an awesome visual representation of a project's Pipeline, they help users understand the way their pipelines are run.\n\n![Pipeline Graph](https://about.gitlab.com/images/8_11/pipeline_graph2.png){:.shadow}\n\n### Slash Commands\n\nWith the addition of [Slash Commands](https://docs.gitlab.com/ee/user/project/quick_actions.html), comments can be used to modify the status, author, assignee, due date, milestone, and labels of a merge request or issue, among other things. This feature gives users more power over their issues and merge requests without ever leaving the keyboard or needing to memorize keyboard shortcuts.\n\n![Slash Commands](https://about.gitlab.com/images/8_11/slash-commands.gif){:.shadow}\n\n### Koding Integration\n\n8.11 introduces [integration](/blog/koding-and-gitlab-integrated/) with Koding, an online IDE. Koding allows users to develop and test your project without ever leaving the browser. Note that Koding integration isn't currently supported on GitLab.com, only self-managed GitLab instances.\n\n## September: 8.12\n\n> [GitLab 8.12 Release Post](/releases/2016/09/22/gitlab-8-12-released/)\n\n### Cycle Analytics\n\nThe headline feature of 8.12 was [Cycle Analytics](/solutions/value-stream-management/), a new way of [tracking software development](https://docs.gitlab.com/ee/user/analytics/value_stream_analytics.html) using the data GitLab gathers as you use it. Cycle Analytics is the last step of the [GitLab Workflow](/topics/version-control/what-is-gitlab-flow/).\n\nSee [our feature highlight blog post](/blog/cycle-analytics-feature-highlight/) for more information.\n\n![Cycle Analytics](https://about.gitlab.com/images/8_12/cycle_analytics.png){:.shadow}\n\n### Global Code Search (EE Starter)\n\nCode search was improved for [Enterprise Edition Starter](/stages-devops-lifecycle/) in GitLab 8.12 with the addition of Global Code Search. This allows users to search across all the repositories on an instance, and is especially useful for microservice-based architectures and for reusing code from existing projects.\n\n### Merge Request Versions\n\nWith [Merge Request Versions](https://docs.gitlab.com/ee/user/project/merge_requests/versions.html) you can view previous states of a merge request: compare between a previous commit and the target branch or even between versions, showing you what has changed between certain commits.\n\n![Merge Request Versions](https://about.gitlab.com/images/8_12/mr_versions.png){:.shadow}\n\n## October: 8.13\n\n> [GitLab 8.13 Release Post](/releases/2016/10/22/gitlab-8-13-released/)\n\n### Multiple Issue Boards (EE Starter)\n\nIssue Boards were improved for [EE Starter](/stages-devops-lifecycle/) users by allowing [more than one issue board](https://docs.gitlab.com/ee/user/project/issue_board.html#multiple-issue-boards) for a given project. This is great for large projects with more than one team, or in situations where a repository is used to host the code of multiple products.\n\n![Multiple Issue Boards](https://about.gitlab.com/images/8_13/m_ib.gif){:.shadow}\n\n### Merge Conflict Editor\n\nBuilding on Merge Conflict Resolution introduced in 8.11, the Merge Conflict Resolution tool [gained an Editor](https://docs.gitlab.com/ee/user/project/merge_requests/conflicts.html). This allows more complex merge conflicts, which require the user to manually modify a file in order to resolve a conflict, to be solved right form the GitLab interface.\n\n![Merge Conflict Editor](https://about.gitlab.com/images/8_13/inlinemergeconflictresolution.gif){:.shadow}\n\n## November: 8.14\n\n> [GitLab 8.14 Release Post](/releases/2016/11/22/gitlab-8-14-released/)\n\n### Time Tracking Beta\n\nWith the introduction of the [Time Tracking Beta](https://docs.gitlab.com/ee/user/project/time_tracking.html), companies that need time tracking tools can use them right from within GitLab.\n\n![Time Tracking](https://about.gitlab.com/images/8_14/time.gif){:.shadow}\n\n### Chat Commands\n\nWe introduced [Chat Commands](https://docs.gitlab.com/ee/user/project/integrations/mattermost_slash_commands.html). Chat commands allow you to interact with your GitLab instance from Mattermost.\n\n### Review Apps\n\nA new addition to GitLab CI in this release was [Review Apps](https://docs.gitlab.com/ee/ci/review_apps/). Review Apps can be used to [deploy merge requests from your GitLab instance to a dev or staging environment for testing](https://docs.gitlab.com/ee/ci/review_apps/index.html). At GitLab, we use these for testing [about.gitlab.com](https://gitlab.com/gitlab-com/www-gitlab-com) as well as [docs.gitlab.com](https://gitlab.com/gitlab-org/gitlab-docs).\n\nFor more information on Review Apps, see [our feature highlight blog post](/blog/introducing-review-apps/).\n\n## December: 8.15\n\n> [GitLab 8.15 Release Post](/releases/2016/12/22/gitlab-8-15-released/)\n\nRounding off the year with GitLab 8.15, we finished the base of our [idea-to-production](/blog/gitlab-master-plan/) toolset. Moving on to 2017, we'll build on our current product to make it easier to use and more powerful.\n\n### Auto Deploy\n\n[Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/stages.html) is an easy way to configure GitLab CI for the deployment of your application. Right now it supports deployment to OpenShift, with more templates coming in future releases.\n\n### Web Terminal\n\nThe addition of the [Web Terminal](https://docs.gitlab.com/ee/ci/environments/index.html#web-terminals) brings more power to the GitLab web interface. If you deploy to your environments with the help of a deployment service (e.g. Kubernetes), GitLab can open a terminal session to your environment and let you debug on your staging or – if you so dare – production site.\n\n![Web Terminal](https://about.gitlab.com/images/8_15/terminal_gif.gif){:.shadow}\n\n### LaTeX Support\n\n[LaTeX support](https://docs.gitlab.com/ee/user/markdown.html#math) was added in 8.15 to improve GitLab for scientists, mathematicians, and anyone else who wanted to use [LaTeX](https://en.wikipedia.org/wiki/LaTeX) in their issues or merge requests. LaTeX support was contributed by the community.\n\n![LaTeX math in a comment](https://about.gitlab.com/images/8_15/math.png){:.shadow}\n\n## Looking forward\n\nAs always, if you found this post interesting and want to contribute to the project, we’d be happy to have you! Take a look around the [Accepting merge requests](https://gitlab.com/gitlab-org/gitlab-ce/issues?scope=all&state=opened&utf8=%E2%9C%93&label_name%5B%5D=Accepting+merge+requests) label in the GitLab CE project, and download the [GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit) to get started. If you have any questions feel free to reach out on Twitter, in the GDK issue tracker, or in our IRC channel.\n\nWhat improvements do you want to see this year?\n\n{::options parse_block_html=\"true\" /}\n\n\u003C!-- Links -->\n\n[issue boards]: /stages-devops-lifecycle/issueboard/\n[cycle analytics]: /product/cycle-analytics/\n",{"slug":4301,"featured":6,"template":683},"gitlab-2016-year-in-review","content:en-us:blog:gitlab-2016-year-in-review.yml","Gitlab 2016 Year In Review","en-us/blog/gitlab-2016-year-in-review.yml","en-us/blog/gitlab-2016-year-in-review",{"_path":4307,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4308,"content":4314,"config":4318,"_id":4320,"_type":17,"title":4321,"_source":18,"_file":4322,"_stem":4323,"_extension":21},"/en-us/blog/gitlab-tower-integration-coupon-code",{"title":4309,"description":4310,"ogTitle":4309,"ogDescription":4310,"noIndex":6,"ogImage":4311,"ogUrl":4312,"ogSiteName":671,"ogType":672,"canonicalUrls":4312,"schema":4313},"Tower launches GitLab integration on Windows","Windows users can now manage their GitLab accounts right within Tower – give it a try with 20% off.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671402/Blog/Hero%20Images/gitlab-tower-integration-puzzle.jpg","https://about.gitlab.com/blog/gitlab-tower-integration-coupon-code","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Tower launches GitLab integration on Windows\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2017-01-20\",\n      }",{"title":4309,"description":4310,"authors":4315,"heroImage":4311,"date":4316,"body":4317,"category":14},[2489],"2017-01-20","\n\n[Tower](http://www.git-tower.com), the popular Git desktop client for Mac, has now launched integration with GitLab for Windows, making repository management and undoing mistakes a breeze, helping you and your team to work more efficiently. To celebrate, they're offering 20% off your order until February 15th.\n\n\u003C!-- more -->\n\nThis highly anticipated integration has been a popular request from Tower users and is something the Tower team has always wanted to provide themselves, explains Tower founder, [Tobias Günther](https://gitlab.com/tobidobi). GitLab VP of Product [Job van der Voort](https://gitlab.com/JobV) says, \"I’ve been a fan of Tower for many years on the Mac, so I’m very excited for Tower to bring both their great client-side app and GitLab integration to Windows.\"\n\nHere are some of the great ways this tight integration can help you:\n\n## Tower feature highlights\n\n### Services Manager\n\nManage your GitLab account right within Tower on Windows, and you can clone repositories with a single click – avoiding the hassle of usernames, passwords and authentication tokens.\n\n### Productivity boosters\n\nWork more quickly with productivity-enhancing features: automatic fetching from remote servers helps your team stay up to date and automatic stashing asks you at the right time if you want local changes on a Stash to avoid problems.\n\n### Undo and Conflict Wizard\n\nRoll back to previous versions, discard local changes, revert to an old revision... there are plenty of ways you can undo mistakes. The unique \"Conflict Wizard\" helps to resolve merge conflicts in a visual way.\n\n![Tower Conflict Wizard](https://about.gitlab.com/images/blogimages/conflict-wizard@2x.png){: .shadow}\n\n### Beginner features\n\nWith Tower you can see what you are doing and what changes are taking place without relying on the command line. Take advantage of learning resources including a video series, e-book and extensive documentation to help you learn Git.\n\n### Features for pros\n\nDiscard single lines of code, cherry-pick individual commits, and enjoy extensive support for Submodules and git-flow.\n\nReady to try out Tower with GitLab? Redeem this [coupon code](http://www.git-tower.com/buy?coupon=GITLAB20) to receive 20% off your order until 17/02/15.  \n\n_Tweet us [@GitLab](https://twitter.com/gitlab), check out our [job openings](/jobs/), or add your questions and suggestions to our [issue tracker](https://gitlab.com/gitlab-org/gitlab-ce/issues)!_\n\nImage: \"[Puzzle](https://www.flickr.com/photos/sterlic/4458413554)\" by [Scott Akerman](https://www.flickr.com/photos/sterlic/) is licensed under [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/)\n{: .note}\n",{"slug":4319,"featured":6,"template":683},"gitlab-tower-integration-coupon-code","content:en-us:blog:gitlab-tower-integration-coupon-code.yml","Gitlab Tower Integration Coupon Code","en-us/blog/gitlab-tower-integration-coupon-code.yml","en-us/blog/gitlab-tower-integration-coupon-code",{"_path":4325,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4326,"content":4331,"config":4335,"_id":4337,"_type":17,"title":4338,"_source":18,"_file":4339,"_stem":4340,"_extension":21},"/en-us/blog/product-update",{"title":4327,"description":4328,"ogTitle":4327,"ogDescription":4328,"noIndex":6,"ogImage":967,"ogUrl":4329,"ogSiteName":671,"ogType":672,"canonicalUrls":4329,"schema":4330},"Functional Group Update: Product","Watch the recording from our Product team update.","https://about.gitlab.com/blog/product-update","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Functional Group Update: Product\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Erica Lindberg\"}],\n        \"datePublished\": \"2017-01-19\",\n      }",{"title":4327,"description":4328,"authors":4332,"heroImage":967,"date":4333,"body":4334,"category":14},[1958],"2017-01-19","\n\nAs a remote-only company, we have to be incredibly intentional about how we communicate\nwith each other. One of the ways we keep each other informed and maintain transparency\nacross the company is through our functional group updates.\n\nYou can watch the functional group update from our Product team below.\n\n\u003C!-- more -->\n\n\u003Cfigure>\n  \u003Ciframe width=\"800\" height=\"480\" src=\"https://www.youtube.com/embed/UsQwW64Vy8A\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n\u003C/figure>\n",{"slug":4336,"featured":6,"template":683},"product-update","content:en-us:blog:product-update.yml","Product Update","en-us/blog/product-update.yml","en-us/blog/product-update",{"_path":4342,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4343,"content":4349,"config":4353,"_id":4355,"_type":17,"title":4356,"_source":18,"_file":4357,"_stem":4358,"_extension":21},"/en-us/blog/prometheus-and-gitlab",{"title":4344,"description":4345,"ogTitle":4344,"ogDescription":4345,"noIndex":6,"ogImage":4346,"ogUrl":4347,"ogSiteName":671,"ogType":672,"canonicalUrls":4347,"schema":4348},"Prometheus and GitLab","Completing the application lifecycle with monitoring","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677903/Blog/Hero%20Images/data.png","https://about.gitlab.com/blog/prometheus-and-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Prometheus and GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mark Pundsack\"}],\n        \"datePublished\": \"2017-01-05\",\n      }",{"title":4344,"description":4345,"authors":4350,"heroImage":4346,"date":4351,"body":4352,"category":14},[1373],"2017-01-05","\n\nA little while ago, we presented a first draft of our vision for monitoring within GitLab. We [value transparency](https://handbook.gitlab.com/handbook/values/), so see below for the recorded video and transcript of the presentation, or view the [slides](https://docs.google.com/presentation/d/12SDArWFfr8fGOZEOqUOwn7NMwfuGKBeS1KLJxtBVyMM/edit?usp=sharing) directly. Please do give us your feedback on any of the linked issues!\n\n\u003C!-- more -->\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/NFPGtbQfL1A\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## GitLab monitoring vision 0.1\n\nThanks everyone for joining. Just to level set: This call is to go over a first draft of our vision for monitoring within GitLab. A version 0.1 of the vision, if you will. I’m presenting it so Sid and others can ask questions and critique it, and to share more broadly. If you’re looking for a polished presentation about a well-defined product, this is the wrong place. :)\n\nI’ll start by talking about a potential minimum viable product (MVP), and then discuss future directions, and finally open it up to Q&A.\n\nAnd if you want to play along at home, here’s a link to your personalized [buzzword bingo card](http://bit.ly/2hP4xTn) for the presentation.\n\n## Minimum Viable Product (MVP)\n### Use Prometheus to monitor GitLab installation\n\nSo the first step is to add [Prometheus](https://prometheus.io/) to monitor GitLab installations themselves. I won’t go into details here; and I believe [Pablo will be giving a talk about how we’re using it](https://gitlab.com/gitlab-com/marketing/issues/594). But in short, Prometheus is an open source monitoring solution. We’ve been using it internally here, and we’re going to bundle it up with GitLab CE so you can use it to monitor your own instances of GitLab.\n\nMeta issue: [gitlab-com/infrastructure/issues/589](https://gitlab.com/gitlab-com/infrastructure/issues/589)\n\nRelated issues:  \n1. [Expose service metrics via Prometheus](https://gitlab.com/gitlab-org/gitlab-workhorse/issues/61)\n1. [Monitor CI end to end with prometheus](https://gitlab.com/gitlab-com/infrastructure/issues/543)\n1. [Build public monitoring infrastructure](https://gitlab.com/gitlab-com/infrastructure/issues/414)\n1. [Bundle Prometheus with GitLab CE](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/1481)\n1. [Build High Available (Federated) prometheus monitoring solution](https://gitlab.com/gitlab-com/infrastructure/issues/760)\n\nHere’s a couple screenshots I cribbed from some of those issues. Again, I’m not going to go into detail here. These are fairly traditional, if not ugly, dashboards using Prometheus and Grafana.\n\n![Sidekiq stats](https://about.gitlab.com/images/blogimages/monitoring/sidekiq-stats.png){: .shadow}\n\n![CPU Usage](https://about.gitlab.com/images/blogimages/monitoring/cpu-usage.png){: .shadow}\n\n## MVP+3\n\n### Web application monitoring\n\nI kind of tongue-in-cheek called this MVP+3, but after some number of iterations, the next **major** step is to [use Prometheus to monitor end-user applications](https://gitlab.com/gitlab-org/gitlab-ce/issues/23841). Ideally, providing a [New Relic](https://newrelic.com/)-like experience. Maybe it’s more accurate to say [Heroku-like monitoring](https://devcenter.heroku.com/articles/metrics) experience. New Relic does TONS of things we won’t touch for a long time, if ever. I believe there’s always a place for dedicated monitoring solutions that go deep. Our unique value won’t be in the deepness of the monitoring, it’ll be in the integration of monitoring into the rest of the experience. That may not be apparent in the initial release, but will show up later.\n\nMVP focuses on:\n* Limit to applications on Kubernetes\n* Response: Throughput, latency, errors\n* Resource: CPU, Memory, I/O\n\nInitially we’ll focus on Kubernetes because that’s where we’re placing a few bets and installing Prometheus into every permutation of hardware is just too much to tackle. So to keep scope smaller, we’ll focus on Kubernetes.\n\nWe’ll start by measuring throughput, latency (or response time), and error rates. I’m calling this response monitoring, and it’s the highest value we can deliver that works for monitoring any web stack.\n\nBut measuring resources such as CPU, memory, and I/O might be easier for an MVP, so I’m keeping that open. Kubernetes may make some parts of that easier, but others harder. I don’t believe we should do all of this for an MVP, so my preference would be the web response side of things. The thinking goes: if one of the resources are constrained, say memory is entering swap too much, then that will show up as latency in the system. So I’d rather observe the material impact to the user directly. Unfortunately that means you don’t see anything until it’s already an impact. And knowing that latency is bad or error rates are up doesn’t help you debug the situation. That’s where resource monitoring can be useful. But still, as a first step, I want to know how my users are impacted and THEN find a way to debug it, at which point I may very well fire up New Relic to do more powerful analysis.\n\n### Monitoring alert on merge request\n\nSo to show how we’re thinking of integrating monitoring, here’s a merge request, that has already been merged and deployed to production. Because we’ve got monitoring, GitLab noticed that memory usage increased right after the deploy, so we get a message right on the merge request.\n\n![Monitoring alert on merge request](https://about.gitlab.com/images/blogimages/monitoring/merge-request__performance--inline-v03.png){: .shadow}\n\nLet’s zoom in a little more. We see the alert, plus some summary information, telling you the memory usage increased from 114MB to 127MB, and a little spark line so you can see it graphically. Maybe we’d add a percent increase to make it more concrete. Of course, we’d also send an email notification of this alert, to the author of the actual changes about the impact. That way, this isn’t just an ops problem, the person or people most likely to be able to deal with it know as soon as possible.\nNow let’s click through and see more details.\n\n### Monitoring dashboard\n\nSo now we see something a little more traditional. This is an early mockup of how a monitoring dashboard could appear. Note even in this early stage, we’ve got lines showing when deploys happened, to help identify code changes that impacted performance. Maybe hovering over them would show a list of merge requests that were included in that deploy.\n\n![Monitoring dashboard](https://about.gitlab.com/images/blogimages/monitoring/environments__monitoring.png){: .shadow}\n\nThis dashboard would be available for all of your environments: production, staging, and review apps. Or maybe you’d only want to install it for production environments. I’m not sure yet.\nThe point is that monitoring is an essential part of environments, deployments, and MRs.\n\n### Deployment history\n\nThis is a screenshot cribbed from New Relic, but I could imagine some of this information show up on our deployment history pages.\n\n![Deployment history](https://about.gitlab.com/images/blogimages/monitoring/deploy-history-e747cf6fa6b33dd414e8099294091dca.png){: .shadow}\n\n## Future\n\n### Monitoring++\n* Response monitoring (throughput, latency, errors)\n* Resource monitoring (CPU, memory, IO)\n* [Status monitoring](https://gitlab.com/gitlab-org/gitlab-ce/issues/25555) (e.g. Pingdom, up/down/uptime, bad MR)\n* Application performance monitoring (APM) (stack-aware, endpoint-aware, code-aware, db-aware)\n* End-user experience monitoring (measured at the browser)\n* User metrics/analytics (e.g. clicks, flows, funnels, a/b testing)\n* User-defined / business metrics (signups, conversions, revenue)\n* Integrated deeply, across the developer experience\n\nSo the future holds an infinite set of possibilities, but I’ll talk about a few directions I’d like to consider moving into.\n\nFirst, there’s more to flesh out in response and resource monitoring, covering whatever we don’t ship in the MVP, and going beyond.\n\nThen there’s status monitoring. Think [Pingdom](https://www.pingdom.com/), which tracks whether your app is responding to a certain HTTP request to know if it’s “up” or “down”, and then alerting on that, and reporting uptime. The linked issue describes an MVP that just checks a URL after each deploy to see if your merge request borked the server or not. I have no idea yet what role Prometheus may play here.\n\nThen there’s the broader application performance monitoring, which really is a superset of these other pieces, but I’m breaking it out to differentiate monitoring that usually requires your code to be instrumented with a client library installed in your application; like a Gem file or an npm module. Generally, it’s language, framework, and stack aware, can analyze code paths, and even profile database SQL queries.\n\nThe next level most APM companies go to is end-user experience monitoring; measuring latency at the browser so it includes the entire trip over the interwebs, and including the time to finish asynchronously loading all Javascript and actually rendering the web page. This gives a truer, and often much scarier, view of the performance of your app.\n\nThen there’s user metrics/analytics. Clicks, flows, and funnels.\n\nLastly, we’ve got user-defined or business metrics like signups, conversions, revenue, or really any action that you determine is important for your business success, or just fun to watch.\n\nNow, I’ve pretty much just defined the entirety of several monitoring industries. Obviously we’re unlikely to be best-of-breed in all of these. At least not in the next release or two. So again, the focus really is how we can provide the biggest bang-for-buck, the 20% effort that delivers 80% of the value, and really leverage our unique value, and that’s in our deep integration; making everything easier to use because it’s already there, and more impactful because it’s integrated across the experience. Anyone can show a graph of performance, where you can see that deploy 123 of merge request XYZ caused a problem, but alerting right on the merge request itself, right after deploying it, and emailing the authors of the actual changes about their impact, well, that’s just the tip of the iceberg of how monitoring could permeate the developer experience.\n\n### Deploy monitoring\n* Track status of deploy from start to finish\n* Finer state detail (ready, preparing, waiting, deploying, finished, failed)\n* Aware of rollout across multiple containers/servers\n* Ability to abort a deploy\n\nNow let’s go in a different direction and talk about something I’m calling [deploy monitoring](https://gitlab.com/gitlab-org/gitlab-ce/issues/21413).\nDeploys aren’t just binary pass/fail, and they’re not instantaneous, but we currently kinda treat them as if they’re both. Deploys can take significant time, going through many different states, and across many containers or servers. Being able to track and debug that complexity is pretty important, especially for larger organizations.\n\n### Deployboard\n\nSo here’s an early mockup of how we could integrate this information into our environment view.\n\n![Deployboard](https://about.gitlab.com/images/blogimages/monitoring/environments__deploy-graphic.png){: .shadow}\n\nOn staging, you see that the last deployment finished, but production has a deployment that is ongoing. Each square represents a container, managed by Kubernetes. Hovering over each one shows the server name and it’s current status. Clicking through might show more details about that container. Since this is the environment list, we also see our review apps, but we’ve hidden the deploy status by default since it’s less important for review apps. For any of these environments, you can click through to the monitoring dashboard I already showed.\n\n### Deploy monitoring++\n* Notify authors of MRs that their changes are now live or in staging\n\nNow deploy monitoring is a rich area with lots of opportunities for growth. Here’s an image from someone else’s Deployboard that shows a Slack notification of a staging deploy, and @ mentioning everyone with code in that change.\n\n![Deployboard notification](https://about.gitlab.com/images/blogimages/monitoring/deployboard_notification.png){: .shadow}\n\nHere are some other ideas I want to explore:\n\n* Incremental rollouts (deploy to 10 containers at a time)\n* Canary deploys (deploy 10 containers, then wait for stats or manual tests)\n* Blue/green deploys\n\nFirst is incremental rollouts where you deploy new code in batches. Say if you’ve got 100 containers to roll, you’d deploy 10 containers at a time, in 10 batches, until all 100 are done.\n\nClosely related to that is a canary deploy, where you deploy to a few containers, and then stop while you wait some period of time for performance statistics to prove that there are no problems. Maybe even do some manual tests on those containers, although really that should have been done in staging.\n\nAnd then there’s blue/green deploy, which has a few definitions, but the one I’m using here is where you have all your traffic going to one fleet of containers or servers, call that the blue fleet. Then you start deploying new code to a green fleet, but don’t send any traffic to it. When the green fleet is up and ready, then you cut over the router to suddenly send all traffic to the green fleet and the blue fleet goes idle. You could leave that blue fleet running in case you need to immediately revert. It’s much faster to switch a router over rather than wait for all servers to deploy again. If you’re using physical servers, these fleets may be permanent, meaning you’ve got to have twice the computing capacity at any time. If they’re containers, you can bring down the idle fleet after some time and then just spin it up again when you do the next deploy.\n\nBut again, these are standard deploy strategies that companies already use. Of course we want to support these best practices, but our challenge will be to integrate these closely into GitLab to deliver even more value from the integrated whole. Integrating deploy strategies with monitoring and our knowledge of the codebase, merge requests, and issues. Maybe an alert of a performance problem automatically generates a new issue labeled appropriately and assigned to the right person so it shows up in their todos.\n\n### Feature flags\n* Decouple deployment from delivery\n* In-code flag to execute one path or another based on externally controllable settings\n* Binary switch\n* Incremental (%) rollout\n* Named group (internal, beta)\n\nI’m going to go off on a tangent for a moment and talk about [Feature Flags](http://martinfowler.com/bliki/FeatureToggle.html).\nFeature flags allow developers to decouple deployment from delivery while reducing risk. It’s usually an in-code mechanism, like an if statement, to conditionally execute one path or another based on externally controllable settings such as a simple all-or-nothing binary switch, or a more complex incremental rollout based on percentages, like turning it on for 10% of your users, or involving named groups like company internal, or a \"beta” group.\nWith feature flags, code can be deployed into production while the feature is still turned off.\n\nMy ideal rollout is something like:\n* Dev team that created it ->\n* internal alpha (all employees minus those giving customer-facing demos) ->\n* select beta (~200 people that signed up for this specific feature) ->\n* private beta (~1000 people that signed up for general beta) ->\n* public beta ->\n* 10% rollout ->\n* GA\n\nFeatures can then be rolled out to internal users, beta users, a percentage of production users, and then to everyone in ever-increases spheres.\nThis help facilitate healthy real-world testing, restricting risk to affect only beta customers rather than everyone, for example, so that you get feedback earlier in the development cycle. Validate your ideas quickly.\nIt also helps stay true to the premise of continuous integration which is that everything is checked into master often and deployed right away. This reduces deployment risk.\n\n* Feature Flags as first-class citizens\n* Compare flag states across environments (e.g. staging has X, which is not yet enabled on production)\n\nI'd like to see us work [feature flags into GitLab](https://gitlab.com/gitlab-org/gitlab-ee/issues/779) in a first-class way. To be honest, I really don’t know how to do that. But I know I’d like to visually see, at a glance, which features are in private beta, for example. If a product manager tries to turn a feature on for general availability, they’ll be subtly reminded that they should consider going through private beta first. Companies should be able to set a rollout policy of what percentages things should go through at each stage.\nIf done right, it’ll encourage a good rollout process, and make it trivially easy for users to follow the flow, every time.\n\n![User flags](https://about.gitlab.com/images/blogimages/monitoring/user-flags.png){: .shadow}\n\n### Feature monitoring\nNow to bring this back to monitoring, feature flags are another rollout mechanism, similar to some of the deployment strategies. So we should be able to [monitor these](https://gitlab.com/gitlab-org/gitlab-ce/issues/24254), showing some analysis/graphing on them.\nPerhaps it’s a simple list of features and summary statistics about them indicating if they're performing as expected. Like:\n* Feature X, rolled out to beta, decreased response time by 5%\n* Feature Y, rolled out to 10%, increased conversion by 25%\n\nThe good thing is that since feature flags often run in parallel, so you’ve got some users with the flag and some users without, you can more accurately determine the performance or other impact. You don’t have to rely on point-in-time changes, like looking at memory before and after a deploy.\n\nAnd it’s quite possible to have multiple flags at the same time, all at different rollout stages. With a deploy, which ships everything in master at once, if there’s a problem with one merge request 25 commits ago, you’ve got to rollback the entire stack until that change is gone. But feature flags are decoupled so if there’s a problem in an individual feature, you can just scale it down to zero without affecting any other feature, and without requiring a lengthy deploy process.\n\nAnother side note, since deployment strategies and feature flags are somewhat advanced topics that currently take quite a commitment to implement, most companies only focus on one of these strategies. If you work on feature flags, you’re not likely to bother with canary deploys, for example. But each tool has their sweet spot of value. Memory problems aren’t likely to show up using feature flags since memory is a system resource that’s really hard to pin down to a specific user. But error rates or conversion metrics are great for this. If we do a great job here, maybe people won’t have to be so stingy on their choice of tools.\n\n### Q&A\n\nAnd with that, I’d like to thank you all for listening, and open it up to questions.\n\n",{"slug":4354,"featured":6,"template":683},"prometheus-and-gitlab","content:en-us:blog:prometheus-and-gitlab.yml","Prometheus And Gitlab","en-us/blog/prometheus-and-gitlab.yml","en-us/blog/prometheus-and-gitlab",{"_path":4360,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4361,"content":4367,"config":4372,"_id":4374,"_type":17,"title":4375,"_source":18,"_file":4376,"_stem":4377,"_extension":21},"/en-us/blog/how-to-prepare-for-a-virtual-interview",{"title":4362,"description":4363,"ogTitle":4362,"ogDescription":4363,"noIndex":6,"ogImage":4364,"ogUrl":4365,"ogSiteName":671,"ogType":672,"canonicalUrls":4365,"schema":4366},"How to prepare for a virtual interview at GitLab","Our Global Recruiter shares a few tips on how to get ready for a job interview that's *not* irl.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683946/Blog/Hero%20Images/how-to-prepare-for-a-virtual-interview.jpg","https://about.gitlab.com/blog/how-to-prepare-for-a-virtual-interview","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How to prepare for a virtual interview at GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sasha Bannister\"}],\n        \"datePublished\": \"2017-01-03\",\n      }",{"title":4362,"description":4363,"authors":4368,"heroImage":4364,"date":4370,"body":4371,"category":14},[4369],"Sasha Bannister","2017-01-03","\n\nThe GitLab interview process, like our company, is remote first. As a result, our recruiting team and hiring managers spend lots of time meeting candidates via [video calls](/handbook/communication/#video-calls). Video chats are an important part\nof our daily culture and a great way to connect with our teammates, but they can also be a confusing, uncomfortable, and stress-inducing component of an interview.\n\n\u003C!-- more -->\n\nMore and more organizations are conducting interviews and meetings using video platforms. At GitLab we use Google Hangouts or Appear.in for most of our [one-on-one calls](/handbook/communication/#video-calls). Whatever platform you’re using, these simple guidelines will help you have a productive web interview and allow you to focus on the role.\n\nRead on for our tips on how to avoid video chat nerves!\n\n## Stage your interview spot\n\nIt’s nice to be in a neutral environment that is a quiet and comfortable for you. That way neither you nor the interviewer gets too distracted by your environment. We encourage you to display your [quirkiness](https://handbook.gitlab.com/handbook/values/) and personality, but for the interview it's best to avoid chaos. For example, we wouldn't suggest taking your interview call in a loud crowded cafe, in a car, or from your bed! These examples may sound extreme, but we have seen it all.\n\n## Practice your positioning\n\nDuring the interview, you can’t exactly make eye contact with the interviewer, so the interviewer should clearly be able to see your face. Before the interview, check your front-facing camera or webcam to make sure you are well\nlit and can be seen!\n\n## Test your tech\n\nNothing is worse than realizing moments before your call that you don’t have strong enough wifi, don’t know how to use the video platform, or can’t get your mic to work! Test your equipment and the video platform before\nyour interview, and avoid technical snags the day of! It’s also worthwhile to make sure your computers are fully charged or plugged in, and you have earphones with a good mic (this helps minimize echo). We suggest using a webcam or your built-in camera on your laptop for the interview instead of using a phone or tablet.\n\n## Do your research\n\nAt GitLab, we love when candidates have reviewed our [handbook](/handbook/) and know our [values](https://handbook.gitlab.com/handbook/values/). Many of our [interview questions](/handbook/hiring/#interview-questions) can even be found in our [hiring process](/handbook/hiring/), making preparation simple. Making a great first impression is not reserved for on-site interviews.\n\nAfter you've mastered these tips, it's important to remember that much of the traditional interviewing advice still applies; we encourage you to prepare for a virtual interview the same way you would for an in-person interview. Just because you are taking a call from home doesn’t make it the same as a casual call. Dress appropriately, do your research, and prepare good questions.\n\n So what are you waiting for?! Now that you’re ready for your first interview with GitLab, head to our [jobs page](/jobs/) to check out all of our open roles. We can’t wait to meet you!\n\nImage: \"[Nurturing Global Communities Of Practice via Google Plus Hangouts](https://www.flickr.com/photos/thomcochrane/6816952248/in/photolist-booEps-eAd9dF-nFi1Nk-ePjC2R-irZLco-p9T8i9-hJw5BS-hJwJZv-ajfAp4-ePjM8X-mbFtpp-ePw3fy-hJvBEe-ceF17u-HHywQL-ePw19o-kYkwKf-dqEjfQ-pESWes-kYkxBf-ePw9h3-cfW6eb-HLxMw2-HHyDaj-fA43ft-dUYEGc-hVp7qj-hHfkXj-rtZnmw-nDvJzr-a8ygpG-krfaXi-edHRac-a8ygq1-aaUbmS-krfbbV-hJvB7k-dyxQZQ-a8ygqA-aaUbis-eHuQJe-h7U3mF-f29C1c-dXS8Cy-ePw58L-hVpb6J-oS8XNJ-nzD7xn-oS9qPV-hVp92f)\" by [Thom Cochrane](https://www.flickr.com/photos/thomcochrane/) available under [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/legalcode).\n\nTweet us [@GitLab](https://twitter.com/gitlab), or add your thoughts and questions to our issue tracker.\n",{"slug":4373,"featured":6,"template":683},"how-to-prepare-for-a-virtual-interview","content:en-us:blog:how-to-prepare-for-a-virtual-interview.yml","How To Prepare For A Virtual Interview","en-us/blog/how-to-prepare-for-a-virtual-interview.yml","en-us/blog/how-to-prepare-for-a-virtual-interview",{"_path":4379,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4380,"content":4386,"config":4390,"_id":4392,"_type":17,"title":4393,"_source":18,"_file":4394,"_stem":4395,"_extension":21},"/en-us/blog/how-to-evaluate-gitlab-during-ee-trial",{"title":4381,"description":4382,"ogTitle":4381,"ogDescription":4382,"noIndex":6,"ogImage":4383,"ogUrl":4384,"ogSiteName":671,"ogType":672,"canonicalUrls":4384,"schema":4385},"How to evaluate GitLab during an EE trial","Find out if GitLab EE is the right fit for your company by evaluating your free trial with this handy spreadsheet","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683936/Blog/Hero%20Images/i-love-spreadsheets-trial-evaluation.jpg","https://about.gitlab.com/blog/how-to-evaluate-gitlab-during-ee-trial","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How to evaluate GitLab during an EE trial\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2016-12-09\",\n      }",{"title":4381,"description":4382,"authors":4387,"heroImage":4383,"date":4388,"body":4389,"category":14},[2489],"2016-12-09","\n\nEver reach the end of a free trial and wonder if you even learned anything from the experience? We want you to get the most out of your time using [GitLab Enterprise Edition](/enterprise/), so here's a spreadsheet you can use to evaluate the product.\n\n\u003C!-- more -->\n\nSometimes when you start a free trial you don't have any particular criteria in mind and aren't sure what exactly you're looking for from GitLab EE, so you don't get much out of your time using it. The spreadsheet below was created by one of our biggest EE customers to use when they were evaluating GitLab, and they've kindly shared it with us to help more users discover whether EE is the best choice for them.\n\nWe'd love for you to contribute to it and make it work for you so we can also learn more about what you're looking for in EE. Please share your feedback in the comments!\n\nFollow the instructions below to make an informed decision about whether GitLab EE is right for your company.\n\n1. To get started, sign up for your [free 30-day trial of GitLab EE](/free-trial/).\n1. Make a copy of our [GitLab EE trial evaluation spreadsheet](https://docs.google.com/spreadsheets/d/1gUzEoiJqbkE35lCmpk8UqFP1bMfzG3SjmstFQKaVxFM/edit?usp=sharing) and save it to your own Google Drive.\n1. Customize the spreadsheet to suit your needs: add other products you currently use or are considering and will be comparing to GitLab EE, and include additional tests that you would run to assess the trial.\n1. Create an evaluation timeline for your 30-day trial, and divide tasks between departments and teams if you like.\n1. At the end of the trial period, total the scores.\n1. [Contact our sales team](/sales/) with any questions or feedback.\n\n\nImage: \"[I Love Spreadsheets](https://www.flickr.com/photos/craigmoulding/8399214678/)\" by [Craig Chew-Moulding](https://www.flickr.com/photos/craigmoulding/) is licensed under [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/)\n",{"slug":4391,"featured":6,"template":683},"how-to-evaluate-gitlab-during-ee-trial","content:en-us:blog:how-to-evaluate-gitlab-during-ee-trial.yml","How To Evaluate Gitlab During Ee Trial","en-us/blog/how-to-evaluate-gitlab-during-ee-trial.yml","en-us/blog/how-to-evaluate-gitlab-during-ee-trial",{"_path":4397,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4398,"content":4404,"config":4410,"_id":4412,"_type":17,"title":4413,"_source":18,"_file":4414,"_stem":4415,"_extension":21},"/en-us/blog/announcing-gitlab-enterprise-edition-premium",{"title":4399,"description":4400,"ogTitle":4399,"ogDescription":4400,"noIndex":6,"ogImage":4401,"ogUrl":4402,"ogSiteName":671,"ogType":672,"canonicalUrls":4402,"schema":4403},"Expanding our enterprise: GitLab Enterprise edition premium","We've added a new enterprise plan, GitLab Enterprise Edition Premium","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683929/Blog/Hero%20Images/announcing-ee-premium-cover.jpg","https://about.gitlab.com/blog/announcing-gitlab-enterprise-edition-premium","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Expanding our Enterprise offering: Announcing GitLab Enterprise Edition Premium\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Amara Nwaigwe\"}],\n        \"datePublished\": \"2016-12-08\",\n      }",{"title":4405,"description":4400,"authors":4406,"heroImage":4401,"date":4408,"body":4409,"category":14},"Expanding our Enterprise offering: Announcing GitLab Enterprise Edition Premium",[4407],"Amara Nwaigwe","2016-12-08","\n\nToday we are announcing the addition of a new enterprise plan, GitLab Enterprise Edition Premium. GitLab Enterprise Edition (EE) Premium was built for global organizations who need a solution for remote teams, premium support, High Availability, and advanced workflow controls. GitLab EE Premium builds on top of our base enterprise plan and offers the following additional features:\n\n\u003C!-- more -->\n\n* Premium Support: 4-hour response times, 24/7 emergency support, training, upgrade assistance, and support for High Availability ensure that your team can focus on building great products.\n* GitLab Geo: Make your remote teams more productive with read-only mirrors of your GitLab instance that significantly reduce the time it takes to clone and fetch large repos.\n* File Locking: Improve how you manage your binary and text files with the ability to lock any file or directory.\n* Pivotal Tile: Easily deploy GitLab as a pre-configured appliance using Ops Manager (BOSH) for Pivotal Cloud Foundry.\n\n[GitLab EE Premium](/pricing/premium/) ensures your team has the tools and support they need today\nas well as in the future. Premium features are features that\nreplace other products typically used within organizations. Take a look at some\nof the premium features we are considering on [our direction page](/direction/#new-products).\n\nGitLab EE Premium is now [available for purchase](/stages-devops-lifecycle/) for $199 per user per year.\n\n## What has changed?\n\nPreviously, we offered one enterprise plan for $39 per user/per year and a number of additional enterprise products you could purchase for $99 per product/per user/per year. Now, the products and services we used to offer as additional purchases will be bundled into GitLab EE Premium. The only change to the former GitLab Enterprise Edition is the name. Its features and price will be exactly the same. This plan has simply been renamed to GitLab Enterprise Edition Starter.\n\nWe are also improving our Premium Support offering to speed up our non-emergency SLA from next-day responses to a 4-hour response time. This faster response time means that we will no longer offer a dedicated service engineer. While dedicated resources can potentially offer more personalized service, they limit our ability to get back to you as quickly as possible. We know your team’s time is sensitive so we chose to optimize for faster response times.\n\n## Why one subscription instead of multiple products?\n\nThere are a few reasons:\n\n1. The per product purchasing process slowed customers down. We'd release a new product that our customers needed but in order for customers to actually start using it they would have to start a new internal purchasing process.\n2. Unlocking certain features/experiences on a per product reduces the usage, so we were not getting enough feedback from our customers on how we could improve.\n3. We think this will make ordering and upsell conversations less complex.\n\n## What does this mean for existing enterprise customers?\n\n* For customers who did not purchase an EE product, there is no change.\n* For customers with one EE Product, you were paying $138 per user/per year for one product. With the new EE Premium plan you'll have quicker support response times and access to the additional products for $199 per user/per year.\n* For customers with two or more EE Product, you will save money and enjoy quicker support response times.\n\nWe want all of our customers to have the best experience with our products so we are offering all enterprise customers a 25% discount for early renewal until January 31st, 2017. If you've purchased an EE product we'll upgrade your plan to EE Premium so you can try the additional products and services for FREE until your contract renewal. For customers with two or more of the EE products, we will include the additional products and services, update your contract to reflect the new EE Premium price of $199/per user, and give you money back (to refund the difference between your bill with multiple EE products and the new EE Premium price).\n",{"slug":4411,"featured":6,"template":683},"announcing-gitlab-enterprise-edition-premium","content:en-us:blog:announcing-gitlab-enterprise-edition-premium.yml","Announcing Gitlab Enterprise Edition Premium","en-us/blog/announcing-gitlab-enterprise-edition-premium.yml","en-us/blog/announcing-gitlab-enterprise-edition-premium",{"_path":4417,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4418,"content":4424,"config":4428,"_id":4430,"_type":17,"title":4431,"_source":18,"_file":4432,"_stem":4433,"_extension":21},"/en-us/blog/gitlab-at-does-2016",{"title":4419,"description":4420,"ogTitle":4419,"ogDescription":4420,"noIndex":6,"ogImage":4421,"ogUrl":4422,"ogSiteName":671,"ogType":672,"canonicalUrls":4422,"schema":4423},"GitLab at DOES San Francisco 2016","We're the new kids on the block in the Git space. Here are some other things about us you should know, in a segment of DevOpsTV.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670702/Blog/Hero%20Images/party.jpg","https://about.gitlab.com/blog/gitlab-at-does-2016","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab at DOES San Francisco 2016\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emily von Hoffmann\"}],\n        \"datePublished\": \"2016-12-06\",\n      }",{"title":4419,"description":4420,"authors":4425,"heroImage":4421,"date":4426,"body":4427,"category":14},[1496],"2016-12-06","\n\nOur U.S. Sales Director, Haydn Mackay, joined Matt Hines on [DevOpsTV](https://devops.com/) at [DOES 2016](http://events.itrevolution.com/us/) in San Francisco last month. They chat about some trends they observed at the event, such as companies' increasing willingness to talk about tooling, and a warmer embrace of open source. Haydn explains what we do, how we got started, and mentions a few of our clients with names you might recognize. Watch their conversation or skim the transcript below, and tweet us your thoughts @GitLab.\n\n\u003C!-- more -->\n\n## Watch:\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/KooCVhZ7nHk\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## Read:\n\n**Matt:** GitHub we're very familiar with, but GitLab is an emerging presence here so can you tell us about what it is you guys do?\n{: .alert .alert-info}\n\n**Haydn:** We're the new kids on the block in the Git space; we do get mistaken for GitHub all the time. We're an open source code collaboration platform, been around since 2013 when the project was started by our CTO. We incorporated in the States in 2014. head office here in San Francisco. We're open source, but we also sell an Enterprise Edition. Version control, issue tracking, code review, and CI/CD all baked into a single application.\n\n**Matt:** Who are your customers who are here this week? Are there any onsite talking about what they're doing?\n{: .alert .alert-info}\n\n**Haydn:** There are the two sides of the business - the community edition, our open source product. There are a lot of people who come up and see my shirt and say, \"hey, we love GitLab, we use you.\" That's great to hear because we don't know they're using it. Then we have our customer base who subscribe to the enterprise edition. There's a lot of them here, Disney's presenting, Akamai's presenting, IBM's presenting, they're on the enterprise side. A bunch on the community side like Capital One that's got some GitLab, there are quite a few here.\n\n**Matt:** Those are some great names.\n{: .alert .alert-info}\n\n**Haydn:** Yeah and one message that has become clear this week is that everyone is really embracing open source. It made sense that the tools that developers use, git obviously being open source, but that the platform on top of Git makes sense to be open source as well so they can actually contribute to the tool they use everyday.\n\n**Matt:** There's been a lot of talk about best practices this week, it used to be \"emerging practices\" but now we're driving towards best practices. Nearly every conversation that I've had this week has elicited the fact that people more and more are willing to talk about tools. Before people said, \"listen I want to talk about culture, not tools,\" but now people are talking more and more about best practices for tooling. Are you seeing that with your business as well?\n{: .alert .alert-info}\n\n**Haydn:** There's no doubt it's a competitive advantage. With the advent of continuous integration, and tying that to a development platform, and now continuous delivery and deployment, it's all becoming tightly integrated and I think there's two ROIs for that. One is you attract the right talent. The modern developer today grew up on GitHub, there's no doubt about it. So they go to a company and they expect to see that kind of workflow and tooling. It becomes a recruitment and retention strategy. And you can also improve the performance of your development team, getting stuff done and out the door faster, increasing your deployment velocity and things like that. Two-fold.\n\n**Matt:** I'm going to put you on the spot here, continuous people say \"DevOps means something different to everybody.\" I think continuous delivery suffers the same malady. What does continuous delivery mean to you and to GitLab?\n{: .alert .alert-info}\n\n**Haydn:** Continuous delivery to me means that you're in a state where you can release at any given moment. It's not so much an end result but a process. The outcome of that process is being able to ship something at any given moment, if you had to. If you wanted to ship in the next five minutes, then you could. You may not, you may decide to ship once a month like we do. We put out a major release on the 22nd of every month, that's just our regular drum beat cadence for releasing. But, if we had to put out an emergency patch for a security hole tomorrow or in the next five minutes, we could do that. To me that's what continuous delivery is.\n\n**Matt:** We've also talked about snowflakes here a lot. \"Everybody's a snowflake,\" or \"people aren't such a snowflake,\" others say. Definitions aside, you talk about bringing to market an integrated single platform, and it's got various components to it. I imagine different organizations have different ideas about what they need from a platform. How has Gitlab arrived at what needs to be in the platform it's providing and how is that changing?\n{: .alert .alert-info}\n\n**Haydn:** That's a really good question. Our CEO has really defined our scope of what we'll include in the platform and what we won't go after. The core developer tools have always been version control, code review, issue tracking, and now we're seeing continuous integration also becoming part of that dev stack, along with deployment to some degree. But things like security scanning, or scanning for vulnerabilities, is probably something that we wouldn't say is part of our scope. We try to be really clear about what will be part of our platform and which areas we'll look to integrate with or open up to others.\n\n**Matt:** The beauty of being open source is that you're 100% engaged with the community, and seeing how they're advancing their use of the tooling, must drive a lot of what you do there.\n{: .alert .alert-info}\n\n**Haydn:** Yes and in fact GitLab CI, and the Runner used in CI, was contributed by someone in the community. It was something that developers wanted inside GitLab and they just went ahead and did it. So it's a prime example of that.\n\n**Matt:** I'll ask you one last question before we let you go. One of the presentations here yesterday talked about the top ten ways to fail at DevOps. One of those was too much open source, because of the notion of reliability, support, etc. Listen, we've been hearing this since the genesis of the open source movement. Yet at the same time, this is being exacerbated by DevOps, the cloud, there's all sorts of confluences that continue to bring this subject to light. As a provider that is driven by an open source community, how do you encourage people to use as much of the open source tooling as possible while balancing that?\n{: .alert .alert-info}\n\n**Haydn:** Yeah, it's always tricky. A lot of companies are embedding open source components into the produce they're releasing, and also using open source tools as part of that development platform. What we've seen is they're kind of straddling the fence of how much to expose outside, and how much to keep on-premise. We've always been focused on-premise. That's how GitLab started, the CTO wanted a collaboration platform that he could put on his own servers for his consulting clients, that's how he started. He was importing things from open source, contributing to open source projects, but keeping that delineation between the two. Having an easy way to do it is the challenge.\n\n**Matt:** It's an interesting conversation and it probably always will be. Haydn thanks for joining us, GitLab clearly a very interesting company to watch within this space. I'm Matt Hines with DevOps TV for DevOps.com at DOES 2016, thanks for joining us.\n{: .alert .alert-info}\n\n## Chat:\n\nTweet us [@GitLab](https://twitter.com/gitlab), check out our [job openings](/jobs/), or add your questions and suggestions to our [issue tracker](https://gitlab.com/gitlab-org/gitlab-ce/issues)!\n",{"slug":4429,"featured":6,"template":683},"gitlab-at-does-2016","content:en-us:blog:gitlab-at-does-2016.yml","Gitlab At Does 2016","en-us/blog/gitlab-at-does-2016.yml","en-us/blog/gitlab-at-does-2016",{"_path":4435,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4436,"content":4442,"config":4446,"_id":4448,"_type":17,"title":4449,"_source":18,"_file":4450,"_stem":4451,"_extension":21},"/en-us/blog/how-to-explain-gitlab-to-anyone",{"title":4437,"description":4438,"ogTitle":4437,"ogDescription":4438,"noIndex":6,"ogImage":4439,"ogUrl":4440,"ogSiteName":671,"ogType":672,"canonicalUrls":4440,"schema":4441},"How to explain GitLab to anyone","How do you explain what GitLab is and how it works to a non-technical person?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684725/Blog/Hero%20Images/explain-gitlab-cover.jpg","https://about.gitlab.com/blog/how-to-explain-gitlab-to-anyone","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How to explain GitLab to anyone\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2016-11-30\",\n      }",{"title":4437,"description":4438,"authors":4443,"heroImage":4439,"date":4444,"body":4445,"category":14},[2489],"2016-11-30","\n\nHow do you explain what GitLab is and how it works to a non-technical person?\n\nThis is a challenge I’m facing right now, as I try to describe the company I just joined to my family and friends. \u003C!-- more --> Initial conversations were not very successful:\n\n\nMe: “It’s an open source workflow solution...”\n\nThem: “What’s a workflow?”\n\nMe:\n\nThem:\n\nMe:\n\n\nI’ve been getting closer (“We help people who write code to collaborate on projects”), but it’s still hard to drive the idea home in a way that really speaks to people – especially if they have only a vague idea of what coding is.\n\nIn a team meeting we tried to come up with some real-world examples of how GitLab works, from using files on a computer, to DropBox, to Google Docs. But what if you’re talking to someone who’s not that comfortable with computers?\n\n## Let’s bring it back to something relatable, paper!\n\nSay I’m a newspaper journalist collaborating with my team on a big story about a concert. We’ve been given a brief, but we each have different aspects of the story to cover: someone will interview the performers, someone else will provide some background about the venue.\n\nIf we all worked on that original brief, we might end up writing over each other’s contributions and it would be hard to see what each person is working on. We have a meeting to divide up the work and establish what each team member’s task is and how we will approach it. To make things more efficient, we make photocopies of the brief so that each team member has their own copy that they can start adding to. We all have other articles we’re working on at the same time, so we spend some time prioritising tasks.\n\nI write a draft, and when I’m happy with my contribution, it needs to be fact checked and edited for spelling and grammar. Once a sub-editor gives it the go-ahead, I approach my editor to add my piece (currently on the photocopied brief) to the main story. My editor reviews my work, approves it for the story and includes it in the original. When this is done we create a mock-up of the newspaper page with the article so we can see how it will look.\n\nMy colleagues go through the same process until all of their work is visible too – this happens every time a change is made, no matter how small, so we know that each new part of the story has been reviewed and checked for errors. When the deadline comes, we send the newspaper to the printers and then it gets distributed. We might get some responses to our story from readers who write in: someone might suggest some information that would have been useful to include in the article, so we update the online version of the article on our website and the new addition is visible right away. Other reader feedback might be useful for improving what we write about next time.\n\n![Brief to Print](https://about.gitlab.com/images/blogimages/brief-to-print.png)\n\n## This is how GitLab works!\n\nThe process I described above is a [workflow in which everyone collaborates to bring an idea to production](/topics/version-control/what-is-gitlab-flow/), and it’s a process that works just as well for developers making software as it does for my imaginary newspaper team.\n\n![Idea to Production](https://about.gitlab.com/images/blogimages/idea-to-production.png)\n\nIn GitLab, we start with an Idea (the main article that everyone will work on), then break it up into Issues (each team member’s tasks). To help us plan, we have an Issue Board to organize Issues into order of priority, just as the journalists had to work out how they were going to approach their tasks in amongst the other articles they are working on. To make sure we don’t overwrite each other’s work, we make our own ‘photocopies’ of the original idea: we call these Branches.\n\nThen, we code! This is like that first draft of my contribution to the story. When the code is ready, we Commit it, like a final draft. The sub-editor checking the work before updating the article is part of what we call Continuous Integration – a system by which the project is updated throughout the day, and those updates are automatically, continually checked for any problems. When I ask the editor to approve my contribution, we do this in the form of a Merge Request, and when that’s been approved, we can preview the changes in Staging, just like the newspaper team did with the mock-up of the page. If everything looks good, it goes into Production, the equivalent of going off to the printers.\n\nThe last stage of the cycle is feedback: our ‘reader letters’ might be comments from colleagues or users, or data from analytics, and we use it to make sure we’re always improving. If there’s something we can change immediately, Continuous Deployment ensures the project is always up to date (like the newspaper’s website can show a change or addition to an article right away), and other feedback is used to do better next time.\n\nImage: \"[The Deptford Project — Newspaper](https://www.flickr.com/photos/eivind1983/4703991995/in/gallery-94794587@N03-72157635294619645/)\" by [Eivind Z. Molvær](https://www.flickr.com/photos/eivind1983/) is licensed under [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/)\n",{"slug":4447,"featured":6,"template":683},"how-to-explain-gitlab-to-anyone","content:en-us:blog:how-to-explain-gitlab-to-anyone.yml","How To Explain Gitlab To Anyone","en-us/blog/how-to-explain-gitlab-to-anyone.yml","en-us/blog/how-to-explain-gitlab-to-anyone",{"_path":4453,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4454,"content":4460,"config":4464,"_id":4466,"_type":17,"title":4467,"_source":18,"_file":4468,"_stem":4469,"_extension":21},"/en-us/blog/join-our-december-issue-bash",{"title":4455,"description":4456,"ogTitle":4455,"ogDescription":4456,"noIndex":6,"ogImage":4457,"ogUrl":4458,"ogSiteName":671,"ogType":672,"canonicalUrls":4458,"schema":4459},"Join our December Issue Bash","We’re on a mission to blitz GitLab’s open issues and we need your help!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684134/Blog/Hero%20Images/issue-bash.jpg","https://about.gitlab.com/blog/join-our-december-issue-bash","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Join our December Issue Bash\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rebecca Dodd\"}],\n        \"datePublished\": \"2016-11-28\",\n      }",{"title":4455,"description":4456,"authors":4461,"heroImage":4457,"date":4462,"body":4463,"category":14},[2489],"2016-11-28","\n\nJoin us for an all-weekend Issue Bash on 3-4 December and you could walk away with a [Pocket CHIP](https://getchip.com/pages/pocketchip) – we're giving away two! Two Raspberry Pis and 10 GitLab T-shirts are also up for grabs.\n\nThere are currently over 5000 open issues on GitLab CE! We have over 1400 GitLab contributors, and we want everyone to be able to find issues to work on. Part of that means streamlining our issue tracker: culling duplicate issues, categorizing unlabelled issues and tackling bugs.\n\n\u003C!-- more -->\n\nOur last Bug Bash helped us squash 80 bugs, let’s see what we can do this time!\n\n## When is it?\n\nIt all kicks off at 00:01 UTC on Saturday, 3 December and will run until 23:59 UTC on Sunday, 4 December.\n\n## How can you get involved?\n\nHelp us close issues: identify duplicate issues so a team member can close them\n\nInvestigate bugs: attempt to reproduce labeled bugs in a test project on GitLab.com\n\nFix bugs: close bug issues once and for all\n\nCategorize existing issues: provide a suitable label for uncategorized issues\n\nCheck out the [2016 GitLab-ce Issue Bash Proposal](https://gitlab.com/gitlab-org/gitlab-ce/issues/17815) to find out how to get started. To be considered for a prize you need at least one contribution accepted by the time GitLab 8.15 releases on 22 December. Prizes will be drawn at random.\n\n## Who can take part?\n\nThis is a chance for anyone in the GitLab community to get involved, even if you don’t have technical experience. Some of the tasks above, like categorizing issues or spotting duplicates, are ideal for non-technical community members and are definitely prize-worthy!\n\n## Questions? More info?\n\nGitLab team-members [@markglenfletcher](https://gitlab.com/markglenfletcher) [@ClemMakesApps](https://gitlab.com/ClemMakesApps) [@haynes](https://gitlab.com/haynes) [@axil](https://gitlab.com/axil) [@afolson](https://gitlab.com/afolson) will be on hand to answer questions and close issues.\n\nImage: \"[Smash](https://www.flickr.com/photos/schatz/3893795729)\" by [Richard Schatzberger](https://www.flickr.com/photos/schatz/) is licensed under [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/#)\n",{"slug":4465,"featured":6,"template":683},"join-our-december-issue-bash","content:en-us:blog:join-our-december-issue-bash.yml","Join Our December Issue Bash","en-us/blog/join-our-december-issue-bash.yml","en-us/blog/join-our-december-issue-bash",{"_path":4471,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4472,"content":4478,"config":4482,"_id":4484,"_type":17,"title":4485,"_source":18,"_file":4486,"_stem":4487,"_extension":21},"/en-us/blog/gitlab-adoption-growing-at-cern",{"title":4473,"description":4474,"ogTitle":4473,"ogDescription":4474,"noIndex":6,"ogImage":4475,"ogUrl":4476,"ogSiteName":671,"ogType":672,"canonicalUrls":4476,"schema":4477},"Customer Story: GitLab adoption growing at CERN","CERN, the European Organization for Nuclear Research, is increasingly using GitLab to host software projects and code for configuration management.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670719/Blog/Hero%20Images/cern.jpg","https://about.gitlab.com/blog/gitlab-adoption-growing-at-cern","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Customer Story: GitLab adoption growing at CERN\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emily von Hoffmann\"}],\n        \"datePublished\": \"2016-11-23\",\n      }",{"title":4473,"description":4474,"authors":4479,"heroImage":4475,"date":4480,"body":4481,"category":14},[1496],"2016-11-23","\n\nCERN, the European Organization for Nuclear Research, is the world's largest particle physics lab. They are well known for creating [the world’s first website](http://home.cern/topics/birth-web), hosted on Tim Berners-Lee’s computer.\n\n[GitLab]() is one of the platforms CERN uses to host software projects and code for configuration management. CERN has about 2500 active developers using GitLab. While most GitLab users at CERN are located in France and Switzerland around Geneva, they also have a community of scientists working from their home institutes in their various member states.\n\n\u003C!-- more -->\n\nKey projects include the software frameworks and libraries for the experiments conducted at CERN. Some of them are hosted on CERN's GitLab instance.\nPublic projects in this category include for instance [Gaudi](https://gitlab.cern.ch/gaudi/Gaudi) an open project for providing the necessary interfaces and services for building HEP experiment frameworks.\nThey are also using GitLab more and more for [Continuous Integration](/solutions/continuous-integration/) tasks.\n\n### Why Did CERN Choose GitLab?\n\nAlexandre Lossent, Service Manager for the version control systems at CERN, explained that part of their user community has a preference for open source software; GitLab was also cheaper than other alternatives.\n\nThe most significant benefit is probably how easy GitLab makes it to create a project and start working. Lossent said, “We had more than 2,000 projects in a few months, a very fast adoption rate compared to our other code hosting platforms.”\n\nHe has also found that the internal adoption of GitLab is spreading throughout CERN. He said, “While we are not yet actively asking users to move their projects to GitLab, many are attracted by GitLab's features and move proactively.”\n\nNot only are they an active team of users, they have also offered contributions. Lossent contributed the [SAML code](/blog/feature-highlight-saml/) they wrote for their own usage, and earned an [MVP recognition](/community/mvp/) in June 2015. Thanks to their effort, GitLab can be configured to act as a [SAML](https://docs.gitlab.com/ee/integration/saml.html) 2.0 Service Provider, [since release 7.12](/releases/2015/06/22/gitlab-7-12-released/). For this reason, the advantage of an open source code base management tool is clear.\n\n_Tweet [@GitLab](https://twitter.com/gitlab) and check out our [job openings](/jobs/)._\n\nImage: \"[Views of the LHC tunnel sector 3-4 - CERN-AC-0910152-02](http://cds.cern.ch/record/1211045?ln=en)\" by [CERN](http://home.cern/) is licensed under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)\n",{"slug":4483,"featured":6,"template":683},"gitlab-adoption-growing-at-cern","content:en-us:blog:gitlab-adoption-growing-at-cern.yml","Gitlab Adoption Growing At Cern","en-us/blog/gitlab-adoption-growing-at-cern.yml","en-us/blog/gitlab-adoption-growing-at-cern",{"_path":4489,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4490,"content":4496,"config":4500,"_id":4502,"_type":17,"title":4503,"_source":18,"_file":4504,"_stem":4505,"_extension":21},"/en-us/blog/cognitive-logic-talks-migrating-to-gitlab",{"title":4491,"description":4492,"ogTitle":4491,"ogDescription":4492,"noIndex":6,"ogImage":4493,"ogUrl":4494,"ogSiteName":671,"ogType":672,"canonicalUrls":4494,"schema":4495},"Customer Story: Data startup Cognitive Logic talks migrating to GitLab","Data analytics startup Cognitive Logic helps companies store, share, and examine consumer information without compromising security.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670658/Blog/Hero%20Images/data-startup-cognitive-logic-talks-migrating-to-gitlab.jpg","https://about.gitlab.com/blog/cognitive-logic-talks-migrating-to-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Customer Story: Data startup Cognitive Logic talks migrating to GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emily von Hoffmann\"}],\n        \"datePublished\": \"2016-11-22\",\n      }",{"title":4491,"description":4492,"authors":4497,"heroImage":4493,"date":4498,"body":4499,"category":14},[1496],"2016-11-22","\n\nData analytics startup [Cognitive Logic](http://www.cognitivelogic.com/) helps companies store, share, and examine consumer information without compromising security. I sat down with engineer Johan Brandhorst to learn more about his team, their work, and how GitLab helps.\n\nThree of our offerings in particular drove Cognitive Logic's decision to switch to GitLab:\n\n* Validated Merge Requests\n* Easily Configurable CI\n* Easy migration from GitHub\n\n\u003C!--more-->\n\nJohan also told me that his team's biggest challenge with GitLab is that it can be difficult to orchestrate CI between repositories; he says they're looking forward to being able to chain testing between repositories. A fix is in the works - in typical fashion, minutes after I posted his query on Slack our Head of Product, [Mark Pundsack](https://twitter.com/MarkPundsack), wrote back that we have [existing functionality](https://docs.gitlab.com/ee/ci/triggers/) that allows one pipeline to trigger another pipeline in a different project. There are also several [issues](https://gitlab.com/gitlab-org/gitlab-ee/issues/933) open to make this better.\n\n**Could you please explain for our readers what the dev team at Cognitive Logic does? What kinds of projects do you work on?**\n{: .alert .alert-info}\n\n**Johan:** We’re working on connecting large datasets while maintaining customer privacy. Our platform is built on docker and golang microservices with a React/node.js frontend. We use gRPC for communications between services and protobuffers for backwards compatible messages. We maintain a container for our build environment and compile static binaries which can be run in a minimal docker container. The whole system runs on a cloud service provider.\n\n**You currently have 10 devs using GitLab — could you elaborate on the makeup of the team, and what your workflow is like?**\n{: .alert .alert-info}\n\n**Johan:** We have a high focus on engineering; engineers have control over what they want to work on and what they consider the most important to work on at the time. As an engineer, it’s a very liberating and enjoyable experience. We maintain a startup culture with a pool table, a couple of consoles in the meeting room with a 4K TV, board games and company events every now and then. It’s a great place to work (we’re hiring!).\n\nWe try to raise issues when features or bugs arise, then triage in a branch, submit a merge request, have it approved by another engineer before being merged back into master. Validated merge requests means we’re not afraid of merging straight into master as we try to do as much testing and validation as possible at merge request time. In the future we are going to try to set up staging environments and merge request environments for complete system validation at merge request time.\n\n**Which features or capabilities of GitLab has your team used the most? Is there anything you feel you can do with GitLab that you can't accomplish with other tools?**\n{: .alert .alert-info}\n\n**Johan:** Definitely the validated merge request system. It has helped us ensure consistently passing tests and linting tools to maintain the quality of the codebase. The GitLab docker registry has also been very useful for storing the output of our builds and provide a central point from which to fetch those builds.\n\n**What were the major problems you were trying to solve with your previous version control system, if you used one?**\n{: .alert .alert-info}\n\n**Johan:** We were using Github for VCS before moving to GitLab earlier this year. I came from a company where we had rolled our own CI solution while running our own VCS server and I knew how much time it takes to run a system like that reliably, so when I started at Cognitive Logic I was conscious about trying to make good choices for VCS early on. This lead me to look at GitLab as I wanted something with easy CI and validated merge request capabilities to ensure maintained code quality. GitLab was perfect in this regard and we made the switch from Github.com to GitLab.com about 6 months ago. The major difference between GitLab and Github was the easily configurable CI.\n\n**How have developers responded to migrating to GitLab? Have there been any unforeseen challenges or obstacles?**\n{: .alert .alert-info}\n\n**Johan:** We started the migration process quite early so there wasn’t much work to be done. I used the “import from Github” tool to get our repositories up and running on GitLab, and it imported all our issues and merge requests without problems. For the developers it took a little getting used to, but being able to sign up with your Google or Github account helped. There hasn’t been any real problems with our transition to GitLab, I’d consider the features of GitLab to be a superset of those available on GitHub, so it was all positive. The currently biggest problem with GitLab to us is that it can be difficult to orchestrate CI between repositories. We would like to be able to chain testing between repositories so that a change in one repo can automatically trigger a merge request in another repo (complete with testing). I know this kind of solution is being worked on and we’re eager to see what the team can deliver.\n\n*If your team uses GitLab and is interested in sharing your story, please fill out this [form]( https://docs.google.com/a/gitlab.com/forms/d/1K8ZTS1QvSSPos6mVh1ol8ZyagInYctX3fb9eglzeK70/edit)  and we’ll get in touch!*\n\n_Read more about [Cognitive Logic](http://www.cognitivelogic.com/), and follow them on [Twitter](https://twitter.com/cognitivelogic)._\n\n_Tweet [@GitLab](https://twitter.com/gitlab) and check out our [job openings](/jobs/)._\n",{"slug":4501,"featured":6,"template":683},"cognitive-logic-talks-migrating-to-gitlab","content:en-us:blog:cognitive-logic-talks-migrating-to-gitlab.yml","Cognitive Logic Talks Migrating To Gitlab","en-us/blog/cognitive-logic-talks-migrating-to-gitlab.yml","en-us/blog/cognitive-logic-talks-migrating-to-gitlab",{"_path":4507,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4508,"content":4514,"config":4517,"_id":4519,"_type":17,"title":4509,"_source":18,"_file":4520,"_stem":4521,"_extension":21},"/en-us/blog/introducing-review-apps",{"title":4509,"description":4510,"ogTitle":4509,"ogDescription":4510,"noIndex":6,"ogImage":4511,"ogUrl":4512,"ogSiteName":671,"ogType":672,"canonicalUrls":4512,"schema":4513},"Introducing Review Apps","Transform your development flow with temporary review apps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671443/Blog/Hero%20Images/review_apps_cover.png","https://about.gitlab.com/blog/introducing-review-apps","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Introducing Review Apps\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mark Pundsack\"}],\n        \"datePublished\": \"2016-11-22\",\n      }",{"title":4509,"description":4510,"authors":4515,"heroImage":4511,"date":4498,"body":4516,"category":14},[1373],"\n\n{::options parse_block_html=\"true\" /}\n\nLet's talk about deploys. When a developer starts out with a new idea for an application, they'll typically start working locally, where running the app is as simple as typing `rails server` or `npm start`. But at some point, you need to deploy that app somewhere so that other people, hopefully paying customers, can use it. An easy place to start is to deploy to Heroku or maybe you're using a massive Kubernetes cluster, but really, there are tons of options out there. This post is not about those options. It's about deployment strategy.\n\n\u003C!-- more -->\n\n## Baby steps\n\nWhen you start, you have no users so there's very little risk in deploying directly to production. If you're still pitching your ideas to VCs, for example, you want your changes pushed up right away, usually right before a big meeting, so you push directly whenever you're ready. Nobody uses the app when you're not showing it to them, so who cares about \"production downtime\" or pushing untested code with bugs; nobody is using it! So you'll go ahead and create a production app named the same as your project:\n\n- **tanuki**\n\nBut of course, you really hope things don't stop there. You push some code, test it out, then get some real users, and eventually you realize you should have a separate app for testing that doesn't affect your real users. So you create a `staging` version, configured as much like production as possible including a production database, memcache or Redis, New Relic, Papertrail, and everything else you have added to your production app, but maybe scaled down so it doesn't cost as much. :) And if you're using GitLab, you'll probably embrace [continuous delivery](/blog/continuous-integration-delivery-and-deployment-with-gitlab/#continuous-delivery) and set it up to automatically deploy to `staging` any time `master` is updated (but still require a manual deploy to go all the way to production):\n\n- **tanuki**\n- **tanuki-staging**\n\nBut what about testing out changes earlier on in development? Say you've got a merge request that you want your coworker to check out to see if you're going in the right direction? Ever tried to review a merge request involving CSS just by looking at the code? Yeah, it's not fun. You really need to see it running to know if it's OK or not. So, you start out by asking your team members to pull down your topic branch (you did create a topic branch for your change, right?) and then run the code locally to see how it looks.\n\n```\ngit pull origin\ngit checkout topic-branch\nbundle install\nrails server # or npm start or whatever\n```\nThat works for a while, especially while your entire company is full of developers, but what happens as you grow and you've got product managers, QA testers, and designers that may not have their development environment set up, or are just too busy to bother pulling down your branch just to see your code run. So you create a new `dev` app to show off your code on a running server:\n\n- **tanuki**\n- **tanuki-dev**\n- **tanuki-staging**\n\nThen your team grows and one day you're running your topic branch on the dev server and someone else pushes a different branch to test their thing, not realizing you were already using the server. Now you realize you need a separate app for each developer on your team:\n\n- **tanuki**\n- **tanuki-grzegorz**\n- **tanuki-kamil**\n- **tanuki-mark**\n- ...\n- **tanuki-staging**\n\nThis lets developers show off their work to their manager or product manager without getting overwritten by another developer. But at some point, in any fast-moving company, a single developer might have multiple features under development and want to demo them at any time, without having to micromanage their single `dev` app. So, you start creating new apps dedicated to big features.\n\n- ...\n- **tanuki-new-interface**\n- **tanuki-refactor-signup**\n- ...\n\nBut apps should be easy to create and destroy, so why not create a new one for every branch?\n\n- **tanuki**\n- **tanuki-6-update-logo**\n- **tanuki-7-refactor-backend**\n- ...\n- **tanuki-328-fix-typo**\n- **tanuki-grzegorz**\n- **tanuki-kamil**\n- **tanuki-mark**\n- **tanuki-staging**\n\nAs you can see, this gets complicated pretty quickly and boy, would that be a lot to manage manually.\n\nOver the last few releases, and culminating in 8.14, GitLab has been working to make this easier.\n\n## Introducing Review Apps\n\nReview Apps are ephemeral app environments that are created dynamically every time you push a new branch up to GitLab, and they're automatically deleted when the branch is deleted. This sounds nice and all, but what good is it? Well, rather than having a single `dev` environment for a project, or even separate `dev` apps for each developer, you get a new app for every topic branch, automatically. This let's you test and demo new features without having to ask in chat \"hey, can I deploy to `dev`?\" It's even better for the people on the periphery. Product managers can check out exactly what a merge request is going to look like without having to download and run a topic branch. QA and other users can take a look without having a development environment installed on their laptop at all.\n\n![Environments](https://about.gitlab.com/images/blogimages/review-app-environments.png)\n\nOnce you embrace review apps, you'll find it hard to go back. You'll get rid of all your `dev` apps. You might even move on to full [continuous deployment](/blog/continuous-integration-delivery-and-deployment-with-gitlab/#continuous-deployment) and get rid of your `staging` app. After all, the feature will have gone through full automated CI testing, and with high fidelity feature-level testing on a review app, `staging` becomes an unnecessary speed bump on your way to full-speed productivity. Once a merge request is approved and merged, have it automatically deployed to `production`!\n\n![Deploy Flow](https://about.gitlab.com/images/blogimages/deploy_review_apps.png)\n\nReview Apps aren't just for large teams; they're great even for solo developers. Review Apps mean you have an environment running that contains only the code changes of one merge request. This solves four problems:\n\n1. Having each change go through multiple stages (development, staging and QA stages).\n1. Finding a problem in staging or QA and having to research what merge request caused it.\n1. Having to add screenshots and videos to your merge request.\n1. Looking at a merge request and not being able to test the UX and edge cases.\n\nTo [get started with Review Apps](https://docs.gitlab.com/ee/ci/review_apps/), you'll need to figure how to create and deploy a new app using shell scripts, then put that into your `.gitlab-ci.yml` in a special job.\n\nYou might use NGINX with subdirectories, like [we do for about.gitlab.com](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/.gitlab-ci.yml#L33-70). Or use the [Openshift client to create and build new apps](https://gitlab.com/gitlab-examples/review-apps-openshift/blob/master/.gitlab-ci.yml). Either way, you're in full control, creating and deploying temporary review apps on your own private infrastructure. Need them behind a firewall on dedicated PCs? No problem. Want them deployed in the cloud using the latest Docker technology? No problem. If you can script it, we can run it with GitLab CI.\n\n## A simple example\n\nThe `.gitlab-ci.yml` syntax is somewhat complex because we prefer being explicit over hiding magic. This example shows two jobs, one to start/update a review app, and the other to stop it. The key is in the declaration of an `environment` that has both its `name` and `url` be dynamic, based on the Git branch name. You can name the environment anything you like, but if you follow the convention of starting it with `review/`, the GitLab UI will group the apps in a `review` folder. The `start_review` job then points to the `stop_review` job using the `on_stop` keyword, which helps signal to GitLab to show the option to \"stop\" or delete the environment in several places in the GitLab interface. Setting the [`GIT_STRATEGY` to `none`](https://docs.gitlab.com/ee/ci/runners/configure_runners.html#git-strategy) is necessary on the `stop_review` job so that the [GitLab Runner](https://docs.gitlab.com/runner) won't try to checkout the code after the branch is deleted. And of course both jobs only run on branches other than `master`.\n\n```yaml\nstart_review:\n  stage: review\n  script:\n    - rsync -av --delete public /srv/nginx/pages/$CI_BUILD_REF_NAME\n  environment:\n    name: review/$CI_BUILD_REF_NAME\n    url: http://$CI_BUILD_REF_NAME.$APPS_DOMAIN\n    on_stop: stop_review\n  only:\n    - branches\n  except:\n    - master\n\nstop_review:\n  stage: review\n  variables:\n    GIT_STRATEGY: none\n  script:\n    - rm -rf public /srv/nginx/pages/$CI_BUILD_REF_NAME\n  when: manual\n  environment:\n    name: review/$CI_BUILD_REF_NAME\n    action: stop\n  only:\n    - branches\n  except:\n    - master\n```\n\n## Conclusion\n\nReview Apps are about improving the fidelity and speed of review; bringing everyone (product managers, QA, designers, etc.) into the conversation earlier, with higher quality information, so you move faster from idea to production. After you embrace them, you'll look back and wonder how you ever lived without them.\n\nDynamic environments were first introduced with experimental support in 8.12 and the ability to manually stop dynamic environments was introduced in 8.13. 8.14 adds automatic stopping of environments on branch deletion, as well as environment folders in the UI. With that, Review Apps are no longer considered experimental. Review apps are available now, for free, in GitLab CE, GitLab EE, and on GitLab.com.\n\n## Further reading\n\n- [Review Apps documentation](https://docs.gitlab.com/ee/ci/review_apps/)\n- [Environments documentation](https://docs.gitlab.com/ee/ci/environments/index.html)\n- [Review Apps with NGINX example project](https://gitlab.com/gitlab-examples/review-apps-nginx)\n- [Review Apps with Openshift example project](https://gitlab.com/gitlab-examples/review-apps-openshift)\n\n",{"slug":4518,"featured":6,"template":683},"introducing-review-apps","content:en-us:blog:introducing-review-apps.yml","en-us/blog/introducing-review-apps.yml","en-us/blog/introducing-review-apps",{"_path":4523,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4524,"content":4530,"config":4535,"_id":4537,"_type":17,"title":4538,"_source":18,"_file":4539,"_stem":4540,"_extension":21},"/en-us/blog/track-your-time-in-the-same-tool-you-do-your-work",{"title":4525,"description":4526,"ogTitle":4525,"ogDescription":4526,"noIndex":6,"ogImage":4527,"ogUrl":4528,"ogSiteName":671,"ogType":672,"canonicalUrls":4528,"schema":4529},"Track your time in the same tool you do your work","Announcing Time Tracking in GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684139/Blog/Hero%20Images/track-your-time-in-the-same-tool-you-do-your-work.jpg","https://about.gitlab.com/blog/track-your-time-in-the-same-tool-you-do-your-work","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Track your time in the same tool you do your work\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Regis Freyd\"}],\n        \"datePublished\": \"2016-11-03\",\n      }",{"title":4525,"description":4526,"authors":4531,"heroImage":4527,"date":4533,"body":4534,"category":14},[4532],"Regis Freyd","2016-11-03","\n\nIn 8.14 we are adding Time Tracking to GitLab Enterprise Edition as a Product to allow teams to stack their project estimates against their time spent. At GitLab, our goal is to build everything software development teams need to collaborate efficiently into one product. With each new release we reduce the number of external tools you need, allowing you to complete the full software development lifecycle within GitLab. Lets take a look at how Time Tracking works.\n\n\u003C!-- more -->\n\nMost teams use external tools to track time, but we wanted to give them a more natural and distraction free way to do this in the same tool they already use for the rest of the software development lifecycle. Like the rest of GitLab, Time Tracking is simple, efficient and out of the way. All you need is two new Time Tracking **slash commands** accessible from the body of an issue and merge request and in a comment field:\n\n- The `/spend` command will let you record the time you spent working on a task e.g. `/spend 10h 45m`. Multiple spend commands add to the total time spent, visible in the sidebar.\n- The `/estimate` command will let you enter a time estimate. Contrary to the `/spend` command, the last `/estimate` entry overrides any previous.\n\nThe `/spend` and `/estimate` commands can also be used independently of each other e.g tracking time without a formal estimation stage. With these two simple commands, you and your team have everything you need to get started estimating and track your time, all from within GitLab. You can read more about the exact specification in the [corresponding issue](https://gitlab.com/gitlab-org/gitlab-ee/issues/985), or in the [landing page](https://docs.gitlab.com/ee/user/project/time_tracking.html).\n\n![time tracking example](https://about.gitlab.com/images/blogimages/track-your-time-in-the-same-tool-you-do-your-work/time_tracking.png)\n\nTime tracking will be available with GitLab 8.14 as a Product for GitLab Enterprise Edition customers. Time tracking will be free while it is still in beta. It will also be offered as usual for free to anyone on GitLab.com. We can’t wait to see what you will do with it!\n",{"slug":4536,"featured":6,"template":683},"track-your-time-in-the-same-tool-you-do-your-work","content:en-us:blog:track-your-time-in-the-same-tool-you-do-your-work.yml","Track Your Time In The Same Tool You Do Your Work","en-us/blog/track-your-time-in-the-same-tool-you-do-your-work.yml","en-us/blog/track-your-time-in-the-same-tool-you-do-your-work",{"_path":4542,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4543,"content":4549,"config":4554,"_id":4556,"_type":17,"title":4557,"_source":18,"_file":4558,"_stem":4559,"_extension":21},"/en-us/blog/gitlab-ux-update",{"title":4544,"description":4545,"ogTitle":4544,"ogDescription":4545,"noIndex":6,"ogImage":4546,"ogUrl":4547,"ogSiteName":671,"ogType":672,"canonicalUrls":4547,"schema":4548},"GitLab UX update","Inside GitLab: Sneak peek of what the UX Team is working on","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684147/Blog/Hero%20Images/gitlabdesign-cover-image.jpg","https://about.gitlab.com/blog/gitlab-ux-update","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab UX update\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Allison Whilden\"}],\n        \"datePublished\": \"2016-10-19\",\n      }",{"title":4544,"description":4545,"authors":4550,"heroImage":4546,"date":4552,"body":4553,"category":14},[4551],"Allison Whilden","2016-10-19","\n\nThe UX Team at GitLab has been hard at work, and I'm delighted to share a sneak peek of some of their designs. While more details will be shared when the various features ship, hopefully this quick update will help you get excited for what is in the works. The designs below share some of what the UX Team is currently focused on, with a mix of features for both 8.13 and future releases.\n\n\u003C!-- more -->\n\n## What we've been working on:\n\n### Better Empty States\n\nEmpty states are easy to forget about. However, they can be great moments to celebrate an accomplishment (you finished all of your [Todos][todo-empty-state]!) or explain a concept (when to use a [group][group-empty-state]).\n\n![Better Empty States](https://about.gitlab.com/images/blogimages/ux-update-2016-10/empty-states.png)\n\n### Rethinking Filtering and Searching\n\nToday we have a rich set of filters and search options, allowing you to find exactly what you are looking for. However, you have to jump between many dropdowns, and can't always build the complex query you are looking for. We are actively working on combining the controls into a [streamlined, powerful search][rethinking-filters] flow.\n\n![Rethinking Filtering and Searching](https://about.gitlab.com/images/blogimages/ux-update-2016-10/rethinking-filtering.png)\n\n### Tracking Time\n\nLarge companies need to understand the cost of work and use of their resources. One aspect of this is [tracking time][time-tracking] spent on issues. Using slash commands, you can now easily estimate the time needed for an issue, and keep track of time spent as you work on it.\n\n![Time tracking](https://about.gitlab.com/images/blogimages/ux-update-2016-10/time-tracking.png)\n\n### Building upon Cycle Analytics\n\nWith the next iteration of [Cycle Analytics][cycle-analytics], we are helping break down each of the stages into events that data was gathered from. It is now much easier to see how the information is being put together, and exactly where your time is going.\n\n![Cycle Analytics](https://about.gitlab.com/images/blogimages/ux-update-2016-10/cycle-analytics-v2.png)\n\n### Refining the Review Apps Experience\n\nWe are continuing to polish our Review Apps experience, allowing you to [stop apps][stop-review-apps], and [group environments][group-environments].\n\n![Review App experience refinements](https://about.gitlab.com/images/blogimages/ux-update-2016-10/review-apps.png)\n\n## What's Next?\n\nWe are already jumping into more work, from [standardizing and cleaning up our many settings pages][settings], to adding such useful visuals as [burndown charts][burndown]. We are also digging into large open question such as refining the [personality][personality] of GitLab.\n\nWe love getting feedback! Please share your thoughts on the designs by commenting below, joining the discussions in any of the issues linked above, or opening a [new issue][new-issue] to let us know what else we should consider. Thanks!\n\n## Acknowledgments\n\nThe design work on this page was created by [Hazel Yang][hazel], [Chris Peressini][chris], [Dimitrie Hoekstra][dimitrie], [Pedro Moreira da Silva][pedro], and [Taurie Davis][taurie]. Thanks for all of your great work!\n\n\n\n\n\u003C!-- identifiers -->\n[burndown]: https://gitlab.com/gitlab-org/gitlab-ee/issues/91\n[chris]: https://twitter.com/ChrisPeressini\n[cycle-analytics]: https://gitlab.com/gitlab-org/gitlab-ce/issues/22458\n[dimitrie]: https://twitter.com/dimitrieh\n[group-empty-state]: https://gitlab.com/gitlab-org/gitlab-ce/issues/20829\n[group-environments]: https://gitlab.com/gitlab-org/gitlab-ce/issues/22539\n[hazel]: https://twitter.com/hazelyuyang\n[new-issue]: https://gitlab.com/gitlab-org/gitlab-ce/issues/new\n[pedro]: https://twitter.com/pedromscom\n[personality]: https://gitlab.com/gitlab-org/gitlab-ce/issues/22192\n[rethinking-filters]: https://gitlab.com/gitlab-org/gitlab-ce/issues/21747\n[settings]: https://gitlab.com/gitlab-org/gitlab-ce/issues/22171\n[stop-review-apps]: https://gitlab.com/gitlab-org/gitlab-ce/issues/22191\n[taurie]: https://twitter.com/tauried\n[time-tracking]: https://gitlab.com/gitlab-org/gitlab-ee/issues/985\n[todo-empty-state]: https://gitlab.com/gitlab-org/gitlab-ce/issues/20833\n",{"slug":4555,"featured":6,"template":683},"gitlab-ux-update","content:en-us:blog:gitlab-ux-update.yml","Gitlab Ux Update","en-us/blog/gitlab-ux-update.yml","en-us/blog/gitlab-ux-update",{"_path":4561,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4562,"content":4568,"config":4573,"_id":4575,"_type":17,"title":4576,"_source":18,"_file":4577,"_stem":4578,"_extension":21},"/en-us/blog/gitlab-ci-oohlala",{"title":4563,"description":4564,"ogTitle":4563,"ogDescription":4564,"noIndex":6,"ogImage":4565,"ogUrl":4566,"ogSiteName":671,"ogType":672,"canonicalUrls":4566,"schema":4567},"Why we chose GitLab CI for our CI/CD solution","Find out why we choose GitLab CI and what we've found through our experience using it.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684084/Blog/Hero%20Images/gitlab-ci-oohlala-cover.png","https://about.gitlab.com/blog/gitlab-ci-oohlala","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Why we chose GitLab CI for our CI/CD solution\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"James Dang\"}],\n        \"datePublished\": \"2016-10-17\",\n      }",{"title":4563,"description":4564,"authors":4569,"heroImage":4565,"date":4571,"body":4572,"category":14},[4570],"James Dang","2016-10-17","\n\n\nAt [OOHLALA Mobile][oohlala], our testing and deployment of code is done\nthrough Fabric, essentially a set of Python scripts (called “fabfiles”) that\nare executed on various servers. Recently, we started looking for a [CI/CD solution][ci-cd]\nthat help manage our fabfile deployment system, which is growing\nmore complex each day. In the end, we went with [GitLab CI][gitlab-ci], and here’s what we\nfound through our experience.\n\n## Simple to Use\nSince the bulk of the work is done in Fabric, the CI/CD solution can be very simple,\nas it only needs to be able to execute fabfiles. GitLab CI’s shell executor is perfect\nfor this. The complexities of other solutions (e.g. Jenkins) are unnecessary for us.\n\n## Fast\n\nWe will be using the system for all code deploys, including development and QA environments,\nso the [CI/CD system](/topics/ci-cd/) needs to be fast, to keep up with the fast-paced changes required for\ndevelopment. Primarily Docker based solutions, such as CircleCI, took considerably longer\nto run due to the dependency set up stage. With GitLab CI, we can set up our own runner\nwith all dependencies pre-installed, and **jobs are executed really fast**.\n\nWe would like to have a solution that can be installed on arbitrary hardware, specifically\nour own dedicated macOS and Windows machines that perform our mobile app CI/CD for iOS and\nAndroid respectively. The reasoning is that in the future we may use the same CI/CD service\nfor our mobile teams as well. GitLab CI can do this for free, as we can simply install GitLab\nrunners on our dedicated machines. Other CI solutions (e.g. Travis CI, CircleCI etc.)\ndo offer mobile CI/CD solutions, but will not meet our requirements since we need our in-house\nbuild and deploy scripts on dedicated hardware to effectively manage the hundreds of mobile apps that we maintain.\n\n## Economical and Secure\n\nThe solution should be relatively economical, especially since our development team\nis still relatively small. Most CI solutions are relatively expensive (e.g. Travis\nCI starts at $129/month minimum), and the ones that have free tiers are very\nlimited in capacity (e.g. CircleCI and Shippable both allow only 1 concurrent\njob on their free tier). GitLab CI only costs as much as the machine used to run it,\nwhich is very flexible (a $40/month DO instance can run many concurrent jobs without issue).\n\nIdeally (i.e. not a hard requirement), we would like to keep all SSH private keys\nwithin our own infrastructure for better security. With most other CI solutions,\nwe would have to hand them the private keys for all the servers we need to deploy to.\nWith GitLab CI, the keys are stored on the CI runner instance, which is hosted by us\nand fully under our control.\n\nIn the end, we actually chose to host our code on [GitLab.com][gitlab-com], because of the seamless\nintegration with GitLab CI. There weren’t any major differences in features\n(at least ones that we wanted) in the repository hosting solutions we looked at\n(GitHub, Gogs, and GitLab mostly), and the CI solution made the choice easier.\n\n## About the author\n\nJames Dang is the co-founder the CTO of [OOHLALA Mobile][oohlala], an education technology\ncompany building the mobile platform for universities and colleges to connect and\nengage with their students.\n\n\u003C!-- identifiers -->\n\n[ci-cd]: /blog/continuous-integration-delivery-and-deployment-with-gitlab/\n[gitlab-ci]: /solutions/continuous-integration/ [gitlab-com]: https://gitlab.com/\n[oohlala]: https://oohlalamobile.com/\n[oohlala-jobs]: https://oohlalamobile.com/jobs/\n",{"slug":4574,"featured":6,"template":683},"gitlab-ci-oohlala","content:en-us:blog:gitlab-ci-oohlala.yml","Gitlab Ci Oohlala","en-us/blog/gitlab-ci-oohlala.yml","en-us/blog/gitlab-ci-oohlala",{"_path":4580,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4581,"content":4585,"config":4589,"_id":4591,"_type":17,"title":4592,"_source":18,"_file":4593,"_stem":4594,"_extension":21},"/en-us/blog/gitlab-reinstates-list-of-servers-that-have-malware",{"title":4582,"description":4582,"ogTitle":4582,"ogDescription":4582,"noIndex":6,"ogImage":967,"ogUrl":4583,"ogSiteName":671,"ogType":672,"canonicalUrls":4583,"schema":4584},"GitLab reinstates list of servers that have malware","https://about.gitlab.com/blog/gitlab-reinstates-list-of-servers-that-have-malware","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab reinstates list of servers that have malware\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2016-10-15\",\n      }",{"title":4582,"description":4582,"authors":4586,"heroImage":967,"date":4587,"body":4588,"category":14},[676],"2016-10-15","\n\nWillem de Groot published a list of web stores that contain malware.\nHe first hosted this list on GitHub but it was deleted.\nThen he hosted it on GitLab where it was also deleted.\nThe reason we gave him for the deletion was \"GitLab views the exposure of the vulnerable systems as egregious and will not abide it.\".\nWillem wrote about his experience in a blog post.\n\nAt GitLab we strongly believe in responsible disclosure, for examples of this see [our policy](/security/disclosure/) or [Hacker One's guidelines](https://hackerone.com/disclosure-guidelines).\nSo publishing a list of servers that are vulnerable or hacked without contacting the owner first and giving them time to remedy the situation is not OK.\n\nBut in this case the victim of the vulnerability is not only the owner but also the users of the web store.\nThe owners of web stores have a responsibility to their users.\nAnd it is in the users interest to have the list published so owners [fix their stores](https://twitter.com/gwillem/status/786908740838682624).\nWe currently think that the interest of the user weights heavier.\nTherefore we reinstated the snippet.\n\nWillem just [tweeted about my phone call to him to apologise](https://twitter.com/gwillem/status/787379789011251200). Thanks for that!\n\nWe applaud Willem's effort to protect users from malware.\nWe'll keep listening and will do our part to make the internet a more secure place for everyone.\n",{"slug":4590,"featured":6,"template":683},"gitlab-reinstates-list-of-servers-that-have-malware","content:en-us:blog:gitlab-reinstates-list-of-servers-that-have-malware.yml","Gitlab Reinstates List Of Servers That Have Malware","en-us/blog/gitlab-reinstates-list-of-servers-that-have-malware.yml","en-us/blog/gitlab-reinstates-list-of-servers-that-have-malware",{"_path":4596,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4597,"content":4602,"config":4606,"_id":4608,"_type":17,"title":4609,"_source":18,"_file":4610,"_stem":4611,"_extension":21},"/en-us/blog/yc-application-office-hours",{"title":4598,"description":4599,"ogTitle":4598,"ogDescription":4599,"noIndex":6,"ogImage":1328,"ogUrl":4600,"ogSiteName":671,"ogType":672,"canonicalUrls":4600,"schema":4601},"YC application office hours","The 25 YC application questions discussed with GitLab's CEO","https://about.gitlab.com/blog/yc-application-office-hours","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"YC application office hours\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Kirsten Abma\"}],\n        \"datePublished\": \"2016-10-03\",\n      }",{"title":4598,"description":4599,"authors":4603,"heroImage":1328,"date":4604,"body":4605,"category":14},[4259],"2016-10-03","\n\nFollowing our blog last Friday about [What Founders Ask Founders About Getting Into Y Combinator](/blog/what-founders-ask-founders-about-getting-into-yc/) we got a lot of responses through [HackerNews](https://news.ycombinator.com/) to have Sid, our CEO, read through people's application.\nSid figured talking in person would be way easier than leaving comments and we set up some office hours during the weekend and today to help founders applying with making their application as clear as possible.\n\n\u003C!-- more -->\n\nWith the blog post [trending on the HackerNews homepage](https://news.ycombinator.com/item?id=12615723) last Friday, a lot of candidates wanted to know if their answers were clear and concise; like Sid advised in our blog.\nDuring the office hours and a few one-on-one meetings Sid read and talked through the application form answers and asked questions and discussed what candidates could improve.\n\nBelow are a few examples of the calls Sid did over the weekend. We posted the recordings on our YouTube account\nso everyone can have a look at the advice mentioned and hopefully adjust the last few details before [sending in their own application](https://www.ycombinator.com/apply/).\n\n[Color Search](http://www.colorsearch.io/) lets you choose a paint color online, and [TrueJob](https://www.truejob.com/) is a data-driven startup job search. Both company founders have graciously agreed to let us post their call with Sid to help out other founders.\n\nBelow is the video of Sid's call with Color Search and they also shared [their application form](https://docs.google.com/document/d/10isDYk_fxBmyuRM2IiGdNOkX3TjWGfgx69_abkEaUbc/edit).\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/XSEtlBHDe7Q\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n\u003C/figure>\n\n\u003Cbr>\n\nTrueJob also sent us a link for [their application form](https://docs.google.com/document/d/13t48qEpSDS23_U_TYXwtr_fuUTV_C0O3bKzP3IAQE3M/edit) and their call with Sid is below.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/rVEf4_WZDbM\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n\u003C/figure>\n\n\u003Cbr>\n\nGood luck to both company founders.\n",{"slug":4607,"featured":6,"template":683},"yc-application-office-hours","content:en-us:blog:yc-application-office-hours.yml","Yc Application Office Hours","en-us/blog/yc-application-office-hours.yml","en-us/blog/yc-application-office-hours",{"_path":4613,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4614,"content":4620,"config":4624,"_id":4626,"_type":17,"title":4627,"_source":18,"_file":4628,"_stem":4629,"_extension":21},"/en-us/blog/gitlabs-application-for-y-combinator-winter-2015",{"title":4615,"description":4616,"ogTitle":4615,"ogDescription":4616,"noIndex":6,"ogImage":4617,"ogUrl":4618,"ogSiteName":671,"ogType":672,"canonicalUrls":4618,"schema":4619},"GitLab's Application for Y Combinator Winter 2015","We just released our Y Combinator W2015 application!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683744/Blog/Hero%20Images/gitlabs-application-for-y-combinator-winter-2015-cover.jpg","https://about.gitlab.com/blog/gitlabs-application-for-y-combinator-winter-2015","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab's Application for Y Combinator Winter 2015\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2016-09-30\",\n      }",{"title":4615,"description":4616,"authors":4621,"heroImage":4617,"date":4622,"body":4623,"category":14},[676],"2016-09-30","\nWe released it together with out blog post [What founders ask founders about getting into Y Combinator](/blog/what-founders-ask-founders-about-getting-into-yc/)\n\n\u003C!-- more -->\n\n## Company\n\n**Company name:**\nGitLab\n\n**Company url, if any:**\nhttps://about.gitlab.com/\n\n**If you have an online demo, what's the url?**\nhttp://demo.gitlab.com/users/sign_in\n\n**Note:** this URL no longer works, in 2016 our sign up url is [https://gitlab.com/users/sign_in](https://gitlab.com/users/sign_in)\n\n**What is your company going to make?**\nWe’re making open source software to collaborate on code. It started as ‘run your own GitHub’ that most users deploy on their own server(s). GitLab allows you to [version control](/topics/version-control/) code including pull/merge requests, forking and public projects. It also includes project wiki’s and an issue tracker. Over 100k organizations use it including thousands of programmers at \\\u003CRedacted>. We also offer GitLab CI that allows you to test your code with a distributed set of workers.\n\n**Where do you live now, and where would the company be based after YC?**\nThe Netherlands, Ukraine (with employees in San Francisco), we don't know yet where will be based after YC\n\n## Founders\n\n**Please enter the url of a 1 minute unlisted (not private) YouTube video introducing the founders.**\n\u003Chttps://www.youtube.com/watch?v=KzvDHA5323o>\n\n**Please tell us about an interesting project, preferably outside of class or work, that two or more of you created together. Include urls if possible.**\nWe created GitLab together (\u003C/gitlab-ce/>) and now over 100.000 organizations are using it. We also created GitLab CI and GitLab CI Runner together \u003C/solutions/continuous-integration/>. This pair of programs allow organizations to distribute their code testing over a number of workers.\n\n**How long have the founders known one another and how did you meet? Have any of the founders not met in person?**\nIn 2011 Dmitriy started GitLab. We met in 2012 via email when Sytse started building GitLab.com. In 2013 we formally started a company together and went on team trips a few times since than.\n\n## Progress\n\n**How far along are you?**\nOver 100.000 organizations are using GitLab. \\\u003CRedacted>, Qualcomm, NASA, Nasdaq OMX and Interpol are paying customers. Over 600 people have contributed to it. It is the most popular open source version control software. It has more installations than anything else (including GitHub Enterprise and Atlassian Stash).\n\n**If you've already started working on it, how long have you been working and how many lines of code (if applicable) have you written?**\nSince 2011, over 10,000 commits, see \u003Chttp://contributors.gitlab.com/>\n\n**Which of the following best describes your progress?**\nLaunched\n\n**When will you have a prototype or beta? How many users do you have?**\nWe estimate more than 1M\n\n**Do you have revenue?**\nYes\n\n**How much revenue?**\n$1m annual Revenue Run Rate\n\n**What is your monthly growth rate?**\nAbout 60% in revenue each month.\n\n**If you've applied previously with the same idea, how much progress have you made since the last time you applied? Anything change?**\nNo\n\n**If you have already participated or committed to participate in an incubator, \"accelerator\" or \"pre- accelerator\" program, please tell us about it.**\nWe have not applied to or participated any others.\n\n## Idea\n\n**Why did you pick this idea to work on? Do you have domain expertise in this area? How do you know people need what you're making?**\nDmitriy wanted a solution he could use at his previous job. All employees except our account managers (8-2=6) are software developers. We listen closely to the community via direct customer feedback, pull/merge requests, issues, twitter, mailinglists, chatrooms and the non GitLab B.V. employees on the GitLab core team.\n\n**What's new about what you're making? What substitutes do people resort to because it doesn't exist yet (or they don't know about it)?**\nWe offer the a better way of collaborating on digital products ( the feature branch workflow) to organizations that prefer to work on open source tools. Open source is interesting for large companies because they can inspect and modify the code. They also can and do contribute back changes that are important to them. Substitutes are closed source alternatives (GitHub Enterprise, Atlassian Stash) or less functional open source alternatives (Gitorious, Gogs). GitHub currently has a lot of mind-share but they are under- serving the on-premises (behind the firewall) market. We can see us grow into the leading solution for those installations (which is currently the majority of the market). In the long run most software will live on some (hybrid-)cloud and we think there are many ways to differentiate our offering (open source/distributed/integrated). In the short term we are emulating the Netflix strategy, shipping DVD’s (focus on the on-premise installations) when the competitors focus on the video-on-demand (SaaS) offering.\n\n**Who are your competitors, and who might become competitors? Who do you fear most?**\nGitHub Enterprise and Atlassian Stash are our primary competitors. We fear Atlassian Stash most since the GitHub Enterprise offering is weak (black box VM that doesn’t scale or cluster) and overpriced (4x more expensive than Stash or our standard subscription). We compete with Stash on usability, integration (no need to install Jira and Confluence separately), flexibility (you can inspect and adapt the source) and price.\n\n**What do you understand about your business that other companies in it just don't get?**\nAn open source development process allows you to market your product for free. It also allows a good product market fit at a low cost. We believe that version control is infrastructure software and that open source is the natural model for this kind of software . But to create and grow a competitive open source offering you need to have a proprietary commercial version to generate scalable revenue, support income alone is not enough.\n\n**How do or will you make money? How much could you make?**\nMostly by selling subscriptions that entitle our customers to support and our proprietary GitLab Enterprise Edition. Our most sold subscription by revenue costs $49 per user per year. Most or our revenue comes from organizations with more than 100 paying users. Every company with a substantial number of developers needs software like ours. We already declined an acquisition offer from a competitor for $10M because we want to grow this into a large company.\n\n**How will you get users? If your idea is the type that faces a chicken-and-egg problem in the sense that it won't be attractive to users till it has a lot of users (e.g. a marketplace, a dating site, an ad network), how will you overcome that?**\nCurrently we get users through word of mouth (amplified by twitter). During our time at YC we would like to grow our marketing, our [continuous integration product](/solutions/continuous-integration/) GitLab CI and our SaaS (GitLab.com). GitLab.com currently has only 15k monthly active users but we see a lot of possibilities to grow and differentiate it.\n\n## Others\n\n**If you had any other ideas you considered applying with, please list them. One may be something we've been waiting for. Often when we fund people it's to do something they list here and not in the main application.**\nN/A\n\n**Please tell us something surprising or amusing that one of you has discovered.**\nBefore GitLab Sytse has build recreational manned submarines from scratch, the company he started is currently the largest producer of them in the world and is called U-Boat Worx [http://www.uboatworx.com/](http://www.uboatworx.com/)\n",{"slug":4625,"featured":6,"template":683},"gitlabs-application-for-y-combinator-winter-2015","content:en-us:blog:gitlabs-application-for-y-combinator-winter-2015.yml","Gitlabs Application For Y Combinator Winter 2015","en-us/blog/gitlabs-application-for-y-combinator-winter-2015.yml","en-us/blog/gitlabs-application-for-y-combinator-winter-2015",{"_path":4631,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4632,"content":4638,"config":4642,"_id":4644,"_type":17,"title":4645,"_source":18,"_file":4646,"_stem":4647,"_extension":21},"/en-us/blog/world-tour-amplify-your-code",{"title":4633,"description":4634,"ogTitle":4633,"ogDescription":4634,"noIndex":6,"ogImage":4635,"ogUrl":4636,"ogSiteName":671,"ogType":672,"canonicalUrls":4636,"schema":4637},"GitLab World Tour: Amplify Your Code","Rock out with us and amplify your code on our World Tour! See where we'll be.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683580/Blog/Hero%20Images/world-tour-amplify-your-code-cover.png","https://about.gitlab.com/blog/world-tour-amplify-your-code","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab World Tour: Amplify Your Code\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emily Kyle\"}],\n        \"datePublished\": \"2016-09-28\",\n      }",{"title":4633,"description":4634,"authors":4639,"heroImage":4635,"date":4640,"body":4641,"category":14},[1688],"2016-09-28","\n{::options parse_block_html=\"true\" /}\n\n\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>&nbsp;&nbsp;\nGitLab World Tour - London, Oct 19th - [Register here][London-1]!\n&nbsp;&nbsp;\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n{: .alert .alert-webcast}\n\nEven the sharpest teams face minor setbacks when their code falls flat, or their team is just not in tune. \nO-boe-y, nobody wants that. Luckily, GitLab is here to pitch you an idea to help you boost your act.\n\nWe're kicking off the GitLab World Tour to help harmonize your development process because code is our forte.\nAt this free event, we will explore how teams are using Git and other modern software development practices to work together and build amazing products. Software development is changing and with it, the way developers work. \nToday’s rapid pace of communication and innovation fosters creativity, collaboration, and information sharing; bringing ideas to life—faster. The GitLab World Tour is an interactive discussion on what's next for software development.\n\n\u003C!-- more -->\n\n## What to Expect ##\n\nFrom ideation and planning to committing, testing, deploying, and getting feedback, we are building a toolset that takes an all-inclusive approach to the development process.\n\n![FROM IDEA TO PRODUCTION IN 10 STEPS](https://about.gitlab.com/images/blogimages/idea-to-production-10-steps.png)\n\nWe introduced our [Master Plan][master-plan] and now we need feedback from our rock star community as we think about how we can build the best toolset to help modern developers move faster from idea to production. \n\nOn Tour, you'll hear from GitLab CEO [Sid Sijbrandij][sid-twitter] on the GitLab Master Plan, have the opportunity to ask our developers questions, give feedback about our [product direction][product-direction], and share your ideas and projects.\n\n### Inspiration ###\n\n\u003Cdiv class=\"panel panel-gitlab-orange\">\n\n**Conversational Development**\n{: .panel-heading #convdev}\n\n\u003Cdiv class=\"panel-body\">\n\n**Conversational Development (ConvDev)** is a natural evolution of software\ndevelopment that carries a conversation across functional groups throughout\nthe development process, enabling developers to track the full path of\ndevelopment in a cohesive and intuitive way. ConvDev accelerates the\ndevelopment lifecycle by fostering collaboration and knowledge sharing\nfrom idea to production.\n\n\u003C/div>\n\u003C/div>\n\nIt's an exciting time to be a developer. There is a steady rise of new tools, languages, and practices. \nWe'll take a look at some incredible community projects and share information that you can take back to your teams including information on Conversational Development and the modern development lifecycle, Continuous Integration, and trends in open source. \n\n### Conversation ###\n\nWe value our community and are eager to trade ideas with you. We've planned our sessions to be interactive so there will be plenty of time for you to ask questions and share feedback. \n\n\u003Cdiv class=\"panel panel-gitlab-purple\">\n\n**GitLab Vision**\n{: .panel-heading #vision}\n\n\u003Cdiv class=\"panel-body\">\n\nThe vision of GitLab is to allow everyone to collaborate on all digital content so people can cooperate effectively and achieve better results, faster.\nWe can do this by providing an integrated set of tools that allows you to go faster [from idea to production][idea-production].\n\n\u003C/div>\n\u003C/div>\n\n#### Project #AmplifyYourCode\n\nAt GitLab, we owe our success to our community and the thousands of contributors who help make GitLab.com great. \nThanks to you, we can ship faster to deliver the best toolset for the modern developer. Now, it's your turn to take the spotlight.\n\n[Submit your best GitLab project][project-form] to amplify your code and to have your project showcased in front of hundreds of developers \nduring the GitLab World Tour and promoted on the GitLab blog and social channels.   What are you waiting for? Make your voice heard! Who knows, it could be your greatest hit. \n\n### Swag ###\n\nIt's not a tour without some commemorative item that says, \"I was here.\" Every stop on this tour will have their own city-specific GitLab swag. \n\n![GITLAB SWAG](https://about.gitlab.com/images/blogimages/world-tour-amplify-your-code-ping-pong.jpg)\n\n## Are you ready to amplify your code?\n\nThe World Tour will make stops in **London**, **New York City**, and **Amsterdam** before ending on a high note\nin **San Francisco** at our user conference early next year. The GitLab Team will travel city to city,\nworking in concert with git users like yourself, gathering feedback and stories to help make your git\nworkflow even more seamless. We would also like to trumpet about some major developments features in GitLab.\n\nHere is a list of some of the topics we will be covering:\n\n1. Modern Software Development\n1. Conversational Development (ConvDev)\n1. Continuous Integration\n1. Continuous Delivery & Continuous Deployment\n1. The Open Source Community\n1. Innersourcing, Microservices, and Version Control\n1. GitLab Direction\n1. GitLab Community Edition, Enterprise Edition, and GitLab.com\n\nWe hope that some of those themes will strike a cord with you and your team. Come, share your ideas and amplify your code at a stop near you.\n\n🇬🇧 &nbsp; Take a minute to register for our opening act in [London][london-1] on Oct 19th! &nbsp; 🇬🇧\n\u003Cbr>🇺🇸 &nbsp; [New York City][NYC] on October 26th! &nbsp; 🇺🇸\n\u003Cbr>🇳🇱 &nbsp; [Amsterdam] on November 3rd! &nbsp; 🇳🇱\n{:.alert .alert-webcast}\n\nCan't wait to rock out with you!\n\n\u003C!-- identifiers -->\n\n[amsterdam]: https://gitlabworldtouramsterdam.splashthat.com/\n[idea-production]: /blog/continuous-integration-delivery-and-deployment-with-gitlab/#from-idea-to-production-with-gitlab\n[master-plan]: /blog/gitlab-live-event-recap/\n[nyc]: https://gitlabworldtournyc.splashthat.com/\n[product-direction]: /direction/\n[project-form]: https://goo.gl/forms/7HZYUNTxLFVzNeZN2\n[London-1]: https://gitlabworldtourlondon.splashthat.com/ \"GitLab World Tour: London\"\n[sid-twitter]: https://twitter.com/sytses\n\n{::options parse_block_html=\"false\" /}",{"slug":4643,"featured":6,"template":683},"world-tour-amplify-your-code","content:en-us:blog:world-tour-amplify-your-code.yml","World Tour Amplify Your Code","en-us/blog/world-tour-amplify-your-code.yml","en-us/blog/world-tour-amplify-your-code",{"_path":4649,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4650,"content":4656,"config":4660,"_id":4662,"_type":17,"title":4663,"_source":18,"_file":4664,"_stem":4665,"_extension":21},"/en-us/blog/cycle-analytics-feature-highlight",{"title":4651,"description":4652,"ogTitle":4651,"ogDescription":4652,"noIndex":6,"ogImage":4653,"ogUrl":4654,"ogSiteName":671,"ogType":672,"canonicalUrls":4654,"schema":4655},"Feature Highlight: Cycle Analytics","See how GitLab's Cycle Analytics can help measure your team's velocity.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683605/Blog/Hero%20Images/cycle-analytics-feature-highlight-cover.png","https://about.gitlab.com/blog/cycle-analytics-feature-highlight","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Feature Highlight: Cycle Analytics\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Amara Nwaigwe\"}],\n        \"datePublished\": \"2016-09-21\",\n      }",{"title":4651,"description":4652,"authors":4657,"heroImage":4653,"date":4658,"body":4659,"category":14},[4407],"2016-09-21","\nOn September 22nd, we will release [GitLab 8.12](/releases/2016/09/22/gitlab-8-12-released/) with [Cycle Analytics](/solutions/value-stream-management/). Cycle Analytics tells you how long it takes your team to go [from idea to production][idea-production] on each of their projects.\n\nFew teams can answer how long their software projects take and fewer can answer how long each stage in the process takes. Without this information,\nyou do your best to estimate the time or level of effort that it will take to get from an idea to customer-ready code.\n\nUnfortunately, most teams are flying blind on their estimates using past experiences and best guesses to offer a semblance of how long it’ll take to complete a project. It’s no wonder [why estimates are often incorrect](http://www.innoarchitech.com/why-software-development-time-estimation-does-not-work-alternative-approaches/).\n\nWe built Cycle Analytics to stop blind estimation and instead show you\nreal data on your team’s velocity. You'll see how long the total process takes as well as how much time you spend in each stage.\n\n\u003C!-- more -->\n\n## Why Cycle Analytics Recap\n\nLast week, we wrote a \"feature preview\" on [what Cycle Analytics is and how it can help your team](/blog/feature-preview-introducing-cycle-analytics/). The TL;DR takeaway from that post was: **reducing cycle time is a competitive advantage**. Cycle Analytics helps you uncover how long it actually takes to complete your development process.\nA shared view of the team's velocity is the first stage to improving it.\n\n## Measuring the Modern Development Lifecycle\n\n![FROM IDEA TO PRODUCTION IN 10 STEPS](https://about.gitlab.com/images/blogimages/idea-to-production-10-steps.png)\n\nCycle Analytics tracks the [median](https://www.mathsisfun.com/definitions/median.html) time it takes your team to complete every stage in the modern development process.\n\n{::options parse_block_html=\"true\" /}\n\n\u003Cdiv class=\"panel panel-gitlab-purple\">\n\n**Cycle Analytics Stages**\n{: .panel-heading}\n\n\u003Cdiv class=\"panel-body\">\n\n\\- **Issue** (Tracker)\n  - Median time from creating an issue to assigning the issue to a milestone or adding the issue to a list on your Issue Board\n\n\\- **Plan** (Board)\n  - Median time from giving an issue a milestone or adding it to an Issue Board list to the pushing first commit\n\n\\- **Code** (IDE)\n  - Median time from the first commit to creating the merge request\n\n\\- **Test** (CI)\n  - Median of the time CI takes to run every build for the related merge request\n\n\\- **Review** (Merge Request)\n  - Median time from creating the merge request to merging it\n\n\\- **Staging** (Continuous Deployment)\n  - Median time from MR merge until deploy to production\n\n\\- **Production** (Total)\n  - The time it takes between creating an issue and deploying the code to production\n\n\u003C/div>\n\u003C/div>\n\n**Note:** This the first iteration of Cycle Analytics. As you know, we ship the smallest thing to provide initial value and then we learn from your feedback and continue to improve the feature over time. We have ideas about what we will build next for Cycle Analytics but we'd love to hear your thoughts. You can follow and contribute to the discussion on [this issue](https://gitlab.com/gitlab-org/gitlab-ce/issues/20975).\n{: .note}\n\n## Cycle Analytics Follows GitLab Flow\n\nIn recent months, we've talked a lot about [our vision](/direction/#vision) of being an integrated set of tools for the full software development lifecycle. Cycle Analytics is another testament to the benefits of having an integrated toolset.\nThe reason we are able to measure cycle time is because GitLab stores all of the data around your development efforts, and the associated metrics, in one central data store. Now, we're able to surface that data through Cycle Analytics.\nHowever, it's important to note that Cycle Analytics tracks cycle time based on the [GitLab Flow](http://doc.gitlab.com/ee/workflow/gitlab_flow.html). Therefore, there are some noteworthy dependencies.\n\n\u003Cdiv class=\"panel panel-gitlab\">\n\n**Cycle Analytics & GitLab Flow**\n{: .panel-heading}\n\n\u003Cdiv class=\"panel-body\">\n\n- Cycle Analytics is a measure of how long it takes the team to complete the cycle. Therefore, we only track cycle time on issues that have been **deployed to production.**\n- Cycle Analytics uses your GitLab CI configuration file to understand which [`environment` is set to `production`](https://docs.gitlab.com/ee/ci/environments/index.html#sts=Introduction). For Cycle Analytics to track your cycle time, you'll need to [configure GitLab CI](https://docs.gitlab.com/ee/ci/quick_start/).\n- The **Plan** stage measures the time from assigning an issue to a milestone or moving it to a list on the Issue Board to pushing the first commit. For Cycle Analytics to track this time, your commit message must include the [issue closing pattern] like `Closes #xxx`, where `xxx` is the issue number related to this commit.\n- The **Code** stage measures the time between pushing the first commit and creating a merge request (MR) related to that commit. For Cycle Analytics to track this, you’ll need to add an [issue closing pattern] like `Closes #xxx` to the description of the MR.\n\n\u003C/div>\n\u003C/div>\n\nWe recognize that every team does not follow the same flow. And while GitLab is a flexible product, we are also building an opinionated product that’s aimed at helping you move faster from idea to production. Our CEO, Sid Sijbrandij, shared his thoughts on [GitLab Workflow best practices](/topics/version-control/what-are-gitlab-flow-best-practices/). We hope that they help simplify your workflow within GitLab.\n\n## Getting Started\n\nOn September 22nd, [Cycle Analytics](/solutions/value-stream-management/) will be available in GitLab.com, GitLab Community Edition, and GitLab Enterprise Edition. Getting started is the same in all three products. All you have to do is navigate to your Project’s **Pipelines** tab and then select **Cycle Analytics** to see your project's dashboard.\n\nKeep in mind that if you're working in a new project and you haven't deployed anything to production then you won't see any data on your Cycle Analytics dashboard.\n\n## Join Our Release Webcast\n\nJoin us on September 29th for our Cycle Analytics and [GitLab 8.12](/releases/2016/09/22/gitlab-8-12-released/) Release Webcast. We'll demo some exciting new features and hold a Q&A. [Register here][webcast-registration].\n\n\u003C!-- identifiers -->\n\n[idea-production]: /blog/continuous-integration-delivery-and-deployment-with-gitlab/#from-idea-to-production-with-gitlab\n[webcast-registration]: https://Page.gitlab.com/20160922_CycleAnalyticsWebcast.html\n[issue closing pattern]: https://docs.gitlab.com/ee/user/project/issues/managing_issues.html\n\n\u003C!-- custom styles -->\n\n\u003Cstyle>\n.panel-gitlab {\n  border-color: rgba(252,163,38,.3);\n}\n.panel-gitlab > .panel-heading {\n  color: rgb(226,67,41);\n  background-color: rgba(252,163,38,.3);\n  border-color: rgba(252,163,38,.3);\n}\n.panel-gitlab-purple {\n  border-color: rgba(107,79,187,.3);\n}\n.panel-gitlab-purple > .panel-heading {\n  color: rgb(107,79,187);\n  background-color: rgba(107,79,187,.3);\n  border-color: rgba(107,79,187,.3);\n}\n\u003C/style>\n\n{::options parse_block_html=\"false\" /}",{"slug":4661,"featured":6,"template":683},"cycle-analytics-feature-highlight","content:en-us:blog:cycle-analytics-feature-highlight.yml","Cycle Analytics Feature Highlight","en-us/blog/cycle-analytics-feature-highlight.yml","en-us/blog/cycle-analytics-feature-highlight",{"_path":4667,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4668,"content":4674,"config":4679,"_id":4681,"_type":17,"title":4682,"_source":18,"_file":4683,"_stem":4684,"_extension":21},"/en-us/blog/announcing-gitlab-and-mesosphere",{"title":4669,"description":4670,"ogTitle":4669,"ogDescription":4670,"noIndex":6,"ogImage":4671,"ogUrl":4672,"ogSiteName":671,"ogType":672,"canonicalUrls":4672,"schema":4673},"Announcing GitLab + Mesosphere: 5 reasons to get excited","GitLab is now available on DC/OS!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683612/Blog/Hero%20Images/announcing-gitlab-and-mesosphere-cover.png","https://about.gitlab.com/blog/announcing-gitlab-and-mesosphere","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Announcing GitLab + Mesosphere: Five Reasons You Should Be Excited About This Integration\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Amara Nwaigwe\"}],\n        \"datePublished\": \"2016-09-16\",\n      }",{"title":4675,"description":4670,"authors":4676,"heroImage":4671,"date":4677,"body":4678,"category":14},"Announcing GitLab + Mesosphere: Five Reasons You Should Be Excited About This Integration",[4407],"2016-09-16","\nToday we're happy to announce our integration with [Mesosphere](https://mesosphere.com/).\nNow you can install GitLab in your DC/OS environment in one-click. If you are not already familiar with Mesosphere, this is the \nperfect chance to get acquainted. Built on top of [Apache Mesos](http://mesos.apache.org/),\n[DC/OS](https://mesosphere.com/product/) makes it easier to build, run, and scale modern\napps. How? In short, they let you put your workloads into Docker\ncontainers and then manage those containers from a single secure and highly-available platform. We won't say\nmore than that so we don't spoil the five reasons to be excited.\n\n\u003C!-- more -->\n\n## The Five Reasons\n\n{::options parse_block_html=\"true\" /}\n\n\u003Cdiv class=\"panel panel-gitlab\">\n\n**1. Simplify the Complexities** \n{: .panel-heading}\n\n\u003Cdiv class=\"panel-body\">\n\nDC/OS is an incredible product that has made something that is genuinely complex feel surprisingly simple and intuitive. Most teams run their applications in production environments composed of multiple servers. Using GitLab.com as an example, at any given time, we run anywhere from 60-200 servers. You can read about the full breakdown in [this blog post](/blog/look-into-gitlab-infrastructure/). The point is that your infrastructure team is dealing with a lot of complexity. DC/OS simplifies that, offering a single platform to run everything on the same shared infrastructure.\n\n\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"panel panel-success\">\n\n**2. Spin up GitLab Instances in Minutes** \n{: .panel-heading}\n\n\u003Cdiv class=\"panel-body\">\n\nIf you've ever spent hours or days configuring your tools, you know what a time-consuming pain it can be. In a world where time to market is everything, your team should take advantage of all the time savings they can get. With this integration, you able to spin up a GitLab instance in minutes, taking advantage of the existing infrastructure in your DC/OS environment. \n\n\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"panel panel-gitlab-purple\">\n\n**3. Utilize Resources More Efficiently** \n{: .panel-heading}\n\n\u003Cdiv class=\"panel-body\">\n\nLet's say you have a pool of servers that you've set up a cluster that can act as a shared computing resource. Any of these servers can run your task, while still being able to run other tasks that fit within their remaining resources, allowing you to maximize the capacity of each server. \n\n\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"panel panel-info\">\n\n**4. Maintain Uptime** \n{: .panel-heading}\n\n\u003Cdiv class=\"panel-body\">\n\nDC/OS is fault tolerant. It keeps GitLab running through storage primitives in Mesos. If your GitLab instance dies then your server could just recover itself by simply going to another node. Setting up fault tolerance does require some additional configuration but this is a great way to ensure you don't lose anything.\n\n\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"panel panel-danger\">\n\n**5. Analytics and Reporting** \n{: .panel-heading}\n\n\u003Cdiv class=\"panel-body\">\n\nDC/OS offers tools to help you monitor and perform health checks on your applications. You can also pull in metrics from other monitoring platforms, such as [DataDog and Graphite](https://mesosphere.com/solutions/container-orchestration/). DC/OS even wraps your analytics into a nice dashboard view. If you're an existing GitLab customer you know how much we value great UI. We spend a lot of time thinking about how to deliver the best UI in our product. It is clear that the team at Mesosphere does the same. The dashboard views in their product are clean and intuitive so you can maintain a pulse of your infrastructure. \n\n\u003C/div>\n\u003C/div>\n\n## Resources\n\nIf you're interested in learning more or want to learn how you can install GitLab on DC/OS take a look at these resources: \n\n- [GitLab-on-DC/OS tutorial blog post](https://mesosphere.com/blog/gitlab-dcos/)\n- [GitLab & Mesosphere joint solution brief](https://mesosphere.com/resources/mesosphere-gitlab-joint-solution-brief/)\n- [GitLab & Mesosphere webcast recording](https://youtu.be/GPtSI_2-lbM) \n\n\u003C!-- custom styles -->\n\n\u003Cstyle>\n.panel-gitlab {\n  border-color: rgba(252,163,38,.3);\n}\n.panel-gitlab > .panel-heading {\n  color: rgb(226,67,41);\n  background-color: rgba(252,163,38,.3);\n  border-color: rgba(252,163,38,.3);\n}\n.panel-gitlab-purple {\n  border-color: rgba(107,79,187,.3);\n}\n.panel-gitlab-purple > .panel-heading {\n  color: rgb(107,79,187);\n  background-color: rgba(107,79,187,.3);\n  border-color: rgba(107,79,187,.3);\n}\n\u003C/style>\n\n{::options parse_block_html=\"false\" /}\n",{"slug":4680,"featured":6,"template":683},"announcing-gitlab-and-mesosphere","content:en-us:blog:announcing-gitlab-and-mesosphere.yml","Announcing Gitlab And Mesosphere","en-us/blog/announcing-gitlab-and-mesosphere.yml","en-us/blog/announcing-gitlab-and-mesosphere",{"_path":4686,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4687,"content":4693,"config":4696,"_id":4698,"_type":17,"title":4699,"_source":18,"_file":4700,"_stem":4701,"_extension":21},"/en-us/blog/feature-preview-introducing-cycle-analytics",{"title":4688,"description":4689,"ogTitle":4688,"ogDescription":4689,"noIndex":6,"ogImage":4690,"ogUrl":4691,"ogSiteName":671,"ogType":672,"canonicalUrls":4691,"schema":4692},"Feature Preview: Introducing Cycle Analytics","Cycle Analytics allows you to measure the time it takes you to move from idea to production!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683600/Blog/Hero%20Images/data.png","https://about.gitlab.com/blog/feature-preview-introducing-cycle-analytics","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Feature Preview: Introducing Cycle Analytics\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Erica Lindberg\"}],\n        \"datePublished\": \"2016-09-16\",\n      }",{"title":4688,"description":4689,"authors":4694,"heroImage":4690,"date":4677,"body":4695,"category":14},[1958],"\n{::options parse_block_html=\"true\" /}\n\n\u003Cp  class=\"alert alert-orange\" style=\"background-color: rgba(252,163,38,.3);\n    border-color: rgba(252,163,38,.3); color: rgb(226,67,41) !important; text-align: center;\">\n    \u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(226,67,41); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n    &nbsp;&nbsp;\n    [Join us for our next release webcast][webcast-registration]{: .purple} on September 29 to\n    learn more about Cycle Analytics and our upcoming GitLab 8.12!\n    &nbsp;&nbsp;\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n\u003C/p>\n\nTime to market is quickly becoming one of the most important, competitive factors \nfor software development companies. However, development teams \naren't able to track cycle time, largely because there isn't an easy way to do it. \n\n*Cycle Analytics changes that.* It gives you the ability to measure how much time \nit takes to go [from an idea to production][idea-production] so you can monitor and improve overall cycle time for continuous improvement. \n\n\u003Cdiv class=\"panel panel-info\">\n\n**What Is Cycle Analytics?**\n{: .panel-heading}\n\n\u003Cdiv class=\"panel-body\">\n\nCycle Analytics measures the time it takes to go from an idea to production for each project you have. \nNot only do we indicate the total time it takes to achieve this, but we break this total time down \ninto the multiple stages an idea has to pass through to be shipped. \n\n\u003C/div>\n\u003C/div>\n\nCycle Analytics enables you to reduce your cycle time by helping you to identify which steps\nin the modern development cycle are slowing down your team. Our [vision][vision] is to bring you all 10 steps of the modern development cycle into one cohesive experience. \nFrom idea to production, you should be able to monitor the entire process in one place.\n[Check out this video][demo] to learn more about our product vision.\n\n![FROM IDEA TO PRODUCTION IN 10 STEPS](https://about.gitlab.com/images/blogimages/idea-to-production-10-steps.png)\n\n## How Does Cycle Analytics Help Teams Work Better?##\n\nIt's easy to think that you are shipping quickly as a team, but issues can get stuck \nat a specific stage. Without metrics and a high-level \noverview of progress, we just don't know how long it takes to move from stage to stage, making it much harder \nto identify *why* something stalled. \n\nCycle Analytics is a way to prevent this from happening by giving you the data you \nneed to make better decisions and work better as a team. With metrics to measure \nhow long it takes your team to move from idea to production, you can pinpoint areas \nof improvement and more accurately predict your releases. Many teams already measure\na portion of their workflow, such as how long they spend writing code, but Cycle Analytics\nallows you to see the entire flow from end-to-end, starting right at the idea stage. \n\nReducing cycle time is the competitive advantage of the future. In fact, it's the \nfirst principle of [Conversational Development][convdev]. Yet, few teams have cycle times of weeks, days, or even hours. \nThe goal should be to reach [maximum efficiency][tech-beacon]. The benefit of reducing cycle time is that you can ship quicker, smaller changes. \nThis is not only more efficient, but helps teams be more customer-focused by delivering solutions, faster.\n\n![ConvDev Principles](https://about.gitlab.com/images/blogimages/feature-preview-introducing-cycle-analytics-convdev-principles.png)\n\nIt's not enough to focus on coding speed; what matters is how quickly you \nreact to market and customer needs.\n\n## Learn More\n\nThe first iteration of GitLab Cycle Analytics will be \nreleased on September 22, and is part of our [product vision][vision] to help you \nmove faster from idea to production. \n\nJoin us on September 29 for our Cycle Analytics webcast and a 8.12 Feature Release demo to learn more. [Register here][webcast-registration].\n\n\u003C!-- cover image: https://unsplash.com/photos/t5BvA-Q_m_Y -->\n\n\u003C!-- identifiers -->\n\n[convdev]: /blog/gitlab-live-event-recap/#convdev\n[demo]: https://www.youtube.com/watch?v=ZRcWCWatdas\n[idea-production]: /blog/continuous-integration-delivery-and-deployment-with-gitlab/#from-idea-to-production-with-gitlab\n[webcast-registration]: https://Page.gitlab.com/20160922_CycleAnalyticsWebcast.html\n[master-plan-recap-post]: /blog/gitlab-live-event-recap/\n[tech-beacon]: http://techbeacon.com/doing-continuous-delivery-focus-first-reducing-release-cycle-times\n[vision]: /direction/#scope\n\n\u003Cstyle>\n.purple {\n  color: rgb(107,79,187);\n }\n\u003C/style>\n\n{::options parse_block_html=\"false\" /}\n",{"slug":4697,"featured":6,"template":683},"feature-preview-introducing-cycle-analytics","content:en-us:blog:feature-preview-introducing-cycle-analytics.yml","Feature Preview Introducing Cycle Analytics","en-us/blog/feature-preview-introducing-cycle-analytics.yml","en-us/blog/feature-preview-introducing-cycle-analytics",{"_path":4703,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4704,"content":4710,"config":4714,"_id":4716,"_type":17,"title":4717,"_source":18,"_file":4718,"_stem":4719,"_extension":21},"/en-us/blog/gitlab-master-plan",{"title":4705,"description":4706,"ogTitle":4705,"ogDescription":4706,"noIndex":6,"ogImage":4707,"ogUrl":4708,"ogSiteName":671,"ogType":672,"canonicalUrls":4708,"schema":4709},"GitLab Master Plan","GitLab announces $20M in Series B funding, and its Master Plan to build an integrated toolset for the modern developer!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683617/Blog/Hero%20Images/gitlab-master-plan-cover.png","https://about.gitlab.com/blog/gitlab-master-plan","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Master Plan\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2016-09-13\",\n      }",{"title":4705,"description":4706,"authors":4711,"heroImage":4707,"date":4712,"body":4713,"category":14},[676],"2016-09-13","\n{::options parse_block_html=\"true\" /}\n\n\u003Cp class=\"alert alert-orange\" style=\"background-color: rgba(252,163,38,.3); border-color: rgba(252,163,38,.3); color: rgb(226,67,41) !important; text-align: center;\"> &nbsp;&nbsp;\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(226,67,41); font-size:.85em\" aria-hidden=\"true\">\u003C/i> &nbsp;&nbsp; \u003Ca style=\"color: rgb(107,79,187);\" href=\"/blog/gitlab-live-event-recap/\">Watch the recording of The GitLab Master Plan\u003C/a> &nbsp;&nbsp;\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(226,67,41); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n&nbsp;&nbsp;\u003C/p>\n\nToday we are thrilled to announce our **$20 million** Series B funding from investors [August Capital], [Khosla Ventures], and [Y Combinator]. This follows our [Series A round last September][series-a-post].\n\nWith the help of our investors, we’re moving full speed ahead to bring you issues, wikis, code review, [Continuous Integration, Continuous Deployment, and Continuous Delivery][ci-cd-post] into a single user interface (UI). In our [latest release][8-11-post], we announced the new **[Issue Boards][issue-boards-post]** and **[merge conflict resolution][mr-post]**, bringing us another step closer to realizing [our vision][vision].\n\n\u003C!-- more -->\n\n\u003Cdiv class=\"panel panel-gitlab-purple\">\n\n**GitLab Vision**\n{: .panel-heading #vision}\n\n\u003Cdiv class=\"panel-body\">\n\n\u003Cp>The vision of GitLab is to allow everyone to collaborate on all digital content so people can cooperate effectively and achieve better results, faster. We can do this by providing an integrated set of tools that allows you to go faster from idea to production.\u003C/p>\n\n\u003C/div>\n\n\u003C/div>\n\nMore than 100,000 organizations worldwide now use GitLab and we have hosted over 1 million projects in GitLab.com since 2014. Our new financing will accelerate the development of GitLab in an effort to continue to give teams the simplest way to scale projects across functional groups, collaborate in real-time and effortlessly manage workflows and version control.\n\nHere’s what our investors have to say about us:\n\n> _Born in the enterprise and founded by an exceptional team of developers, GitLab has reimagined the software development process with an open core and flexible deployment solution that is ideal for companies of all sizes. August Capital is excited to be working with Sid and his team, and supporting GitLab’s growth and continued innovation._ — [Villi Iltchev][villi], partner at August Capital\n\n> _Investing in GitLab was an obvious choice. Open source solutions are the future, and GitLab is leading the way as the most popular open source code collaboration platform on the market._ — [Vinod Khosla][vinod], founder and partner of Khosla Ventures\n\n## The Software Development Revolution\n\nWe are seeing a shift in the landscape as the disparate tools that were designed to enable collaboration and speed up development are actually slowing down the enterprise development process. Developers are looking at Git and open source for solutions to deliver higher quality software, faster. In fact, [18 million developers now use open source][idc-study] for their corporate infrastructure and 30% of enterprise developers are using Git.\n\nLikewise, modern developers are well networked and have more choices than ever when it comes to adopting languages, tools, and infrastructure. As their roles shift from assembly line to managing the full process, there’s a greater need to track the full path of development. While many tools exist to serve each stage of the development lifecycle, we believe an integrated set of open source tools is the best way to deliver Conversational Development.\n\n\u003Cdiv class=\"panel panel-gitlab-purple\">\n\n**Conversational Development**\n{: .panel-heading #convdev}\n\n\u003Cdiv class=\"panel-body\">\n\n**Conversational Development (ConvDev)** is a natural evolution of software development that carries a conversation across functional groups throughout the development process, enabling developers to track the full path of development in a cohesive and intuitive way. ConvDev accelerates the development lifecycle by fostering collaboration and knowledge sharing from idea to production.\n\n\u003C/div>\n\u003C/div>\n\n**It’s an exciting time to be a developer.** With more options, more open source collaboration, and new problems to solve, teams need to be able to work quickly to ship faster. As software becomes the competitive advantage across industries, those who can iterate quickly and build disruptive technologies will win out in the end.\n\n## The Master Plan\n\nTo help you get [faster from idea to production][idea-production], we are focusing on more than just the best tools, we are working to create the most natural and cohesive process to closely mirror the way developers work without duplicating effort or distraction of switching to multiple platforms. This additional capital gives us an incredible opportunity to expand our product offerings, create more collaborative tools and support development teams of all sizes.\n\n![FROM IDEA TO PRODUCTION IN 10 STEPS](https://about.gitlab.com/images/blogimages/idea-to-production-10-steps.png)\n\n\"GitLab is providing developers with a new way to view the development process as a seamless, iterative conversation that maps to how developers work today. This ‘‘conversational development” is a natural evolution for software engineers that covers the entire lifecycle from idea to production with agility and collaboration\", said Villi Iltchev.\n\nOur goal is to help you work better so you can ship faster. To do this, we are working on reducing cycle time and bringing ConvDev principles directly into our product as defined in our product direction [scope][scope].\n\nLearn more about our Master Plan and product direction. \u003Cbr> [Watch the recording here][event-recap].\n{: .alert .alert-orange}\n\n## We 💜 Our Community\n\nThank you to our amazing community. We owe GitLab’s existence to your enthusiasm, drive, and hard work. Without our contributors’ belief in open source software, we would not be where we are today. We need your help to make our collective vision a reality.\n\nWe are committed to standing by our [promise to be good stewards of open source][open-source-post], and keeping communication and collaboration amongst the community a high priority. Our open core business model ships both open and closed software. In an effort to maintain an unprecedented level of transparency, we follow three key principles:\n\n1. [Development in the open][open-dev]. You can submit issues in a public issue tracker. This is not a read-only interface.\n1. [Business in the open][open-core]. Our company handbook and policies are in the open.\n1. [Clear Direction][clear-direction]. Our Direction page clarifies the current project priorities and what is possible in the upcoming releases.\n\nRead more about our company values in our [open source][open-source-handbook-post] [handbook][handbook-values], licensed by [CC BY-SA 4.0][creative-commons].\n\n## Get Involved\n\nAt GitLab, everyone can contribute!\n\nUse the hashtag **#ConvDev** to share your impressions with your social media network!\n\nWant to help GitLab grow? *[We're looking for people to work with us!][careers]*\n\n\u003C!-- identifiers -->\n\n[8-11-post]: /releases/2016/08/22/gitlab-8-11-released/\n[august capital]: http://www.augustcap.com/\n[careers]: /jobs\n[ci-cd-post]: /blog/continuous-integration-delivery-and-deployment-with-gitlab/\n[clear-direction]: /direction/\n[creative-commons]: https://creativecommons.org/licenses/by-sa/4.0/\n[event-recap]: /blog/gitlab-live-event-recap/\n[handbook-values]: https://handbook.gitlab.com/handbook/values/\n[idc-study]: https://www.infoq.com/news/2014/01/IDC-software-developers\n[idea-production]: /blog/continuous-integration-delivery-and-deployment-with-gitlab/#from-idea-to-production-with-gitlab\n[issue-boards-post]: /blog/announcing-the-gitlab-issue-board/\n[khosla ventures]: http://www.khoslaventures.com/\n[mr-post]: /2016/09/06/resolving-merge-conflicts-from-the-gitlab-ui/\n[open-core]:  /2015/08/03/almost-everything-we-do-is-now-open/\n[open-dev]: /blog/improving-open-development-for-everyone/\n[open-source-handbook-post]: /2016/07/12/our-handbook-is-open-source-heres-why/\n[open-source-post]: /blog/being-a-good-open-source-steward/\n[scope]: /direction/#scope\n[series-a-post]:  /2015/09/17/gitlab-announces-4m-series-a-funding-from-khosla-ventures/\n[villi]: http://www.augustcap.com/team/villi-iltchev/\n[vinod]: http://www.khoslaventures.com/team/vinod-khosla\n[vision]: /direction/#vision\n[Y Combinator]: https://www.ycombinator.com/\n\n\u003C!-- custom styles -->\n\n\u003Cstyle>\n.panel-gitlab {\n  border-color: rgba(252,163,38,.3);\n}\n.panel-gitlab > .panel-heading {\n  color: rgb(226,67,41);\n  background-color: rgba(252,163,38,.3);\n  border-color: rgba(252,163,38,.3);\n}\n.panel-gitlab-purple {\n  border-color: rgba(107,79,187,.3);\n}\n.panel-gitlab-purple > .panel-heading {\n  color: rgb(107,79,187);\n  background-color: rgba(107,79,187,.3);\n  border-color: rgba(107,79,187,.3);\n}\n.purple {\n  color:rgb(107,79,187);\n}\n.orange {\n  color:rgb(252,109,38);\n}\n.alert-orange {\n  background-color: rgba(252,163,38,.3);\n  border-color: rgba(252,163,38,.3);\n  color: rgb(226,67,41) !important;\n  text-align: center;\n}\n.alert-orange a {\n  color: rgb(107,79,187) !important;\n}\n.alert-orange a:hover {\n  color: #1689e0 !important;\n}\n\u003C/style>\n\n{::options parse_block_html=\"false\" /}",{"slug":4715,"featured":6,"template":683},"gitlab-master-plan","content:en-us:blog:gitlab-master-plan.yml","Gitlab Master Plan","en-us/blog/gitlab-master-plan.yml","en-us/blog/gitlab-master-plan",{"_path":4721,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4722,"content":4728,"config":4733,"_id":4735,"_type":17,"title":4736,"_source":18,"_file":4737,"_stem":4738,"_extension":21},"/en-us/blog/gitlab-special-event",{"title":4723,"description":4724,"ogTitle":4723,"ogDescription":4724,"noIndex":6,"ogImage":4725,"ogUrl":4726,"ogSiteName":671,"ogType":672,"canonicalUrls":4726,"schema":4727},"Live Event: Unveiling the GitLab Master Plan","Tune in Tuesday, September 13th at 1pm ET - 5pm GMT for a special live event with GitLab CEO Sid Sijbrandij","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683880/Blog/Hero%20Images/gitlab-special-event-cover.jpg","https://about.gitlab.com/blog/gitlab-special-event","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Live Event: Unveiling the GitLab Master Plan\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Ashley Smith\"}],\n        \"datePublished\": \"2016-09-07\",\n      }",{"title":4723,"description":4724,"authors":4729,"heroImage":4725,"date":4731,"body":4732,"category":14},[4730],"Ashley Smith","2016-09-07","\n\n\u003Cp class=\"alert alert-orange\" style=\"background-color: rgba(252,163,38,.3); border-color: rgba(252,163,38,.3); color: rgb(226,67,41) !important; text-align: center;\">TL;DR: GitLab CEO Sid Sijbrandij unveiled the &nbsp;&nbsp;\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i> &nbsp;&nbsp;\u003Cstrong>GitLab Master Plan\u003C/strong> &nbsp;&nbsp;\u003Ci class=\"fab fa-gitlab\" style=\"color:rgb(107,79,187); font-size:.85em\" aria-hidden=\"true\">\u003C/i>\n&nbsp;&nbsp;during a special live event. \u003Ca style=\"color: rgb(107,79,187);\" href=\"/blog/gitlab-live-event-recap/\">Watch the recording and download the slides here\u003C/a>!\u003C/p>\n\nThe world of software development is changing.\n\nMore companies are joining the [open source][trends-version-control] world\ndue to improved efficiency, interoperability, and innovation.\nDevelopers' roles are shifting away from specialized functions and moving toward\na unified management process, accessible to their entire team with as little external integrations as possible.  \n\nThese changes in the way we work have presented new challenges for modern development teams. \nWith the entire team more aware of each step in the development process — from solving\nbugs to creating innovative features — teams need a better way to work together.\nBy putting **conversations first** and integrating chat into our platform, we can \neliminate dozens of external toolsets, understand ourselves better, and achieve \ndesired results in shorter time. This is what efficiency is all about.\n\n\u003C!-- more -->\n\n## GitLab vision\n\nThe need to track the full path of development in a cohesive and intuitive way has already\nstarted to make room for new, modern development tools and practices that foster\ncollaboration and information sharing across the entire lifecycle of a project.\n\nAt GitLab, our [vision][gitlab-vision] is to allow everyone to collaborate on all\ndigital technologies so people can cooperate effectively to achieve better results.\nIt's our mission to make collaboration seamless so you can work faster,\ninnovate better, and have more fun while doing it. We believe that to deliver\nmore relevant functionality with higher quality, the effort required to\nget the job done must be reduced.\nTo get there, we are working on solutions to go [faster from idea\nto production][post-ci-cd]. \n\nAfter the success of the [GitLab Issue Board][issue-board-release], a\nsolution for better planning within the GitLab UI, we are working on\nhaving all [10 solutions][scope] ready to go for the GitLab community.\n\nThis is why we hosted a special, live event with\nGitLab’s CEO, [Sid Sijbrandij]. During the event, Sid shared\nthe **GitLab Master Plan**, and demoed our advanced workflow for modern software\nproduction using **Conversation Driven Development (CDD)**.\n\nEveryone is invited to tune in, encouraged to ask questions, express\nopinions, and share ideas with us. At GitLab, **everyone can contribute!**\n\n## Watch the Recording\n\n[Watch the recording][event-recap] of this special event.\n\nWatch until the end to catch the Q&A session with Sid, CEO, Job van der Voort, \nVP of Product, myself, Chief Marketing Officer, and guest MC Community Extraordinaire [Jono Bacon][jono-twitter]. \n\n\u003C!-- identifiers -->\n\n[gitlab-vision]: /direction/#vision\n[issue-board-release]: /blog/announcing-the-gitlab-issue-board/\n[post-ci-cd]: /blog/continuous-integration-delivery-and-deployment-with-gitlab/\n[scope]: /direction/#scope\n[Sid Sijbrandij]: https://twitter.com/sytses\n[jono-twitter]: https://twitter.com/jonobacon\n[trends-version-control]: /blog/trends-in-version-control-land-open-source/\n[event-recap]: /blog/gitlab-live-event-recap/\n\n\u003C!-- custom styles -->\n\n\u003Cstyle>\n.alert-orange {\n  background-color: rgba(252,163,38,.3);\n  border-color: rgba(252,163,38,.3);\n  color: rgb(226,67,41) !important;\n  text-align: center;\n}\n.alert-orange a {\n  color: rgb(107,79,187) !important;\n}\n.alert-orange a:hover {\n  color: #1689e0 !important;\n}\n\u003C/style>\n",{"slug":4734,"featured":6,"template":683},"gitlab-special-event","content:en-us:blog:gitlab-special-event.yml","Gitlab Special Event","en-us/blog/gitlab-special-event.yml","en-us/blog/gitlab-special-event",{"_path":4740,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4741,"content":4747,"config":4752,"_id":4754,"_type":17,"title":4755,"_source":18,"_file":4756,"_stem":4757,"_extension":21},"/en-us/blog/resolving-merge-conflicts-from-the-gitlab-ui",{"title":4742,"description":4743,"ogTitle":4742,"ogDescription":4743,"noIndex":6,"ogImage":4744,"ogUrl":4745,"ogSiteName":671,"ogType":672,"canonicalUrls":4745,"schema":4746},"Resolving Merge Conflicts from the GitLab UI","Learn how GitLab's merge conflict resolution feature works and why we introduced it.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666760/Blog/Hero%20Images/merge-conflicts.png","https://about.gitlab.com/blog/resolving-merge-conflicts-from-the-gitlab-ui","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Resolving Merge Conflicts from the GitLab UI\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sean McGivern\"}],\n        \"datePublished\": \"2016-09-06\",\n      }",{"title":4742,"description":4743,"authors":4748,"heroImage":4744,"date":4750,"body":4751,"category":14},[4749],"Sean McGivern","2016-09-06","\nMerge conflicts can be very annoying for both merge request authors and\nreviewers. As an author, I just want my merge request to be merged. But the\nreviewer might not be in the same time zone as me and by the time they review\nmy changes, I have a merge conflict. I then need to fix it and pass the merge\nrequest back to them, which is a lot of busy work for something that could be\nfairly trivial to fix.\n\nSimilarly, as a reviewer, I want merge requests to be accepted when they're\nready. I don't want to spend my time checking out the author's branch, fixing\nthe conflicts, and pushing back; and I don't particularly like waiting around\nfor them to fix it. As an author or a reviewer, I just want to be able to have\nthe merge request accepted, and move on to the next thing. That's why understanding the methods of resolving conflicts is crucial. Fortunately, GitLab has a few ways of resolving conflicts from the GitLab UI.\n\nIn GitLab 8.11, we\n[introduced the ability to resolve merge conflicts in the UI][release-post]. This\npost describes the background for the feature, how it works, and what we're\nplanning to do next with it.\n\n\u003C!-- more -->\n\n## What is a merge conflict?\n\nA merge conflict is when a merge can't be performed cleanly between two versions\nof the same file. An error message\nmay appear, indicating the conflict is too complex.\n\n### Wait, what's a merge?\n\nA merge is a way of combining two sets of changes made in different branches. In\nGitLab, we handle this with [Merge Requests][mr], which are requests to merge\nthe changes we've made to a file (or a group of files), from a [feature\nbranch][fb] into another branch, for example, `master`.\n\nWhen the merge request is merged, the changes from `new-feature` are added to\n`master`. This happens by looking at all of the changes made in the `master` branch since\nthe `new-feature` branch was created, and all the changes made in `new-feature`,\nand applying them to the files changed.\n\nMost of the time, Git can do this automatically, but sometimes it can't. For\ninstance, if we changed a line of code in our `new-feature` branch, but that line was\nalso changed in `master`, Git doesn't know which line to accept. When this happens, someone needs to manually tell Git which line\nto use, which creates a **merge conflict**.\n\n**Note:** for this post, we will just concentrate on conflicts within a file. However,\nrenames and deletions can also cause conflicts, and we\n[plan on supporting those][20665] in the future.\n{: .note}\n\n## Why are merge conflicts a problem?\n\nThey're really annoying!\n\nWhen there's a conflict in a [version control](/topics/version-control/) system, a merge request can't be merged without manual\nintervention.\n\nIf you can't resolve complex merge conflicts within GitLab, that means that any merge\nrequest with a conflict needs to be checked out locally, resolved locally,\npushed back, and merged. That's a hassle and can't be done without having some\nGit tools installed locally. At GitLab, we want\n[everyone to be able to collaborate on all digital content][vision], and that\nmeans not having to install special tools whenever possible.\n\n### Types of conflict resolution\n\nThere are several methods of resolving conflicts:\n\n1. Just pick one version, and use that. This is often the case with generated\n   files. One example is the [`schema.rb`][schema-rb] file in a Rails app.\n   Conflicts on the schema version line are common, but we (almost) always want\n   the latest version.\n\n2. Keep the lines of code from both versions. A great example of this is the\n   [GitLab CE CHANGELOG file][changelog], which is a\n   [frequent source of merge conflicts][changelog-crisis]. We're working on\n   [tooling to help with this][automated-changelogs], but that's specific to\n   GitLab rather than applicable to every project.\n\n3. Write our own resolution. For instance, if we started with the sentence:\n\n    > There are two versions of GitLab: CE and EE\n\n    I might think that those acronyms should be spelled out:\n\n    > There are two versions of GitLab: Community Edition (CE) and Enterprise Edition (EE)\n\n    And you might think that the sentence needs some closing punctuation:\n\n    > There are two versions of GitLab: CE and EE.\n\n    Because conflicts are based on lines, there's no way to automatically pick\n    both of those changes. We can do so manually, though:\n\n    > There are two versions of GitLab: Community Edition (CE) and Enterprise Edition (EE).\n\nAt present, the conflict resolution support in GitLab is only really useful for\nresolving the first type of conflict. The [merge conflict resolution editor](https://gitlab.pavlovia.org/help/user/project/merge_requests/resolve_conflicts.md) allows for more complex [conflicts](https://docs.gitlab.com/ee/user/project/merge_requests/conflicts.html) to be resolved by manually modifying a file from the GitLab interface. \n\n## How do we resolve them?\n\nWhen a merge request can have its conflicts resolved within GitLab, it will have\na link within the merge box to 'resolve these conflicts':\n\n![The 'resolve these conflicts' link on a merge request](https://about.gitlab.com/images/blogimages/resolving-merge-conflicts-from-the-gitlab-ui/mr-widget.png){: .shadow}\n\nClicking that link will show a list of files with conflicts, with conflict sections\nhighlighted as 'our changes' (the changes in the merge request's source branch)\nand 'their changes' (the changes in the merge request's target branch):\n\n![Some example merge conflicts](https://about.gitlab.com/images/blogimages/resolving-merge-conflicts-from-the-gitlab-ui/merge-conflicts.png){: .shadow}\n\nHere's an example of a more complex merge conflict in a `schema.rb` that I resolved on the GitLab CE\nproject:\n\n![Resolving a merge conflict](https://about.gitlab.com/images/8_11/resolve_mc.gif){: .shadow}\n\n### How does that work?\n\nThe current implementation, at a high level, works like this:\n\n1. If a merge request has conflicts, GitLab gets a list of the\n   [files with merge conflicts][rugged-conflicts].\n2. For each file, it then\n   [generates a merged file with conflict markers][rugged-merge-file].\n3. GitLab parses those conflict markers out and presents them to the UI as\n   sections: context, our side of the conflict, their side of the conflict,\n   context, etc.\n4. When the UI passes the section IDs back, we do the same thing. This time,\n   GitLab only keeps the sections the user selected, along with all context\n   sections.\n5. GitLab joins the resolved lines together to create a resolved file, and\n   [adds it to the Git index][rugged-add].\n6. Finally, we write that index as a merge commit to the source branch.\n\nIf the source branch is `new-feature` and the target branch is `master`, then\nthis does basically the same thing as running:\n\n```\ngit checkout new-feature\ngit merge master\n```\n\n### Why can't some conflicts be resolved in GitLab?\n\nThe implementation above produces a number of constraints (for the most\nup-to-date list, please see the\n[merge conflict resolution documentation](https://docs.gitlab.com/ee/user/project/merge_requests/conflicts.html):\n\n1. If the file contains conflict markers that mean we can't parse the file contents\n   unambiguously, we can't show the sections. We will, however, be able to allow\n   [resolving those conflicts in an editor](#an-editor).\n2. If the file is a binary file, we can't parse the file for conflict markers\n   because they are only added to text files. Again, we plan to\n   [allow resolving conflicts in binary files](#binary-files) in the future.\n3. If the file [isn't in a UTF-8 compatible encoding][21247], we can't allow\n   resolving it because we pass data back and forth as JSON.\n4. If the file is too large (over 200 KB), we avoid parsing it.\n\nBecause all conflicts must be resolved at once, if any of the conflicts for a\nmerge request can't be resolved in the GitLab UI, then the conflicts must be\nresolved manually.\n\n## What's next?\n\nThere are plenty of places for improving our current implementation, and we'd\nlove to hear of ones we haven't thought of. Here are three obvious ones already\nin our [issue tracker][ce-issues].\n\n### An inline editor!\n\nThe most obvious improvement is to allow\n[editing the conflict resolution][20344]. This is closer to the experience on\nthe command line, with the conflict markers present in the file. It will also\ncover most of the problem cases listed above with the current approach.\n\n### Binary files!\n\nIn addition to this, as binary files are typically not manually mergeable, we\ncould just [show both file versions][20664], and ask which one to use. This will work\nbest for images, but can support all binary files.\n\n### Renames!\n\nIncompatible renames are detected as conflicts by the `git` command line tool,\nbut not by the library we use at GitLab. We can [detect rename conflicts][20345]\nourselves, it's just more work.\n\n**For the latest information on how to resolve merge conflicts in GitLab, check out our [documentation](https://docs.gitlab.com/ee/user/project/merge_requests/conflicts.html).**\n\n[20344]: https://gitlab.com/gitlab-org/gitlab-ce/issues/20344\n[20345]: https://gitlab.com/gitlab-org/gitlab-ce/issues/20345\n[20664]: https://gitlab.com/gitlab-org/gitlab-ce/issues/20664\n[20665]: https://gitlab.com/gitlab-org/gitlab-ce/issues/20665\n[21247]: https://gitlab.com/gitlab-org/gitlab-ce/issues/21247\n[automated-changelogs]: https://gitlab.com/gitlab-org/release-tools/merge_requests/29\n[ce-issues]: https://gitlab.com/gitlab-org/gitlab-ce/issues\n[changelog-crisis]: https://gitlab.com/gitlab-org/gitlab-ce/issues/17826\n[changelog]: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG.md\n[conflict-docs]: https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html\n[release-post]: /releases/2016/08/22/gitlab-8-11-released/#merge-conflict-resolution\n[rugged-add]: http://www.rubydoc.info/github/libgit2/rugged/Rugged/Index#add-instance_method\n[rugged-conflicts]: http://www.rubydoc.info/github/libgit2/rugged/Rugged/Index#conflicts-instance_method\n[rugged-merge-file]: http://www.rubydoc.info/github/libgit2/rugged/Rugged/Index#merge_file-instance_method\n[schema-rb]: http://guides.rubyonrails.org/active_record_migrations.html#what-are-schema-files-for-questionmark\n[vision]: /direction/#vision\n[fb]: https://docs.gitlab.com/ee/gitlab-basics/feature_branch_workflow.html\n[mr]: http://doc.gitlab.com/ce/user/project/merge_requests.html\n",{"slug":4753,"featured":6,"template":683},"resolving-merge-conflicts-from-the-gitlab-ui","content:en-us:blog:resolving-merge-conflicts-from-the-gitlab-ui.yml","Resolving Merge Conflicts From The Gitlab Ui","en-us/blog/resolving-merge-conflicts-from-the-gitlab-ui.yml","en-us/blog/resolving-merge-conflicts-from-the-gitlab-ui",{"_path":4759,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4760,"content":4766,"config":4771,"_id":4773,"_type":17,"title":4774,"_source":18,"_file":4775,"_stem":4776,"_extension":21},"/en-us/blog/designing-issue-boards",{"title":4761,"description":4762,"ogTitle":4761,"ogDescription":4762,"noIndex":6,"ogImage":4763,"ogUrl":4764,"ogSiteName":671,"ogType":672,"canonicalUrls":4764,"schema":4765},"Feature Highlight: Designing Issue Boards","Feature Highlight: Learn how the UX team worked together on the creation of Issue Boards.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671516/Blog/Hero%20Images/header-image.png","https://about.gitlab.com/blog/designing-issue-boards","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Feature Highlight: Designing Issue Boards\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Taurie Davis\"}],\n        \"datePublished\": \"2016-08-31\",\n      }",{"title":4761,"description":4762,"authors":4767,"heroImage":4763,"date":4769,"body":4770,"category":14},[4768],"Taurie Davis","2016-08-31","\n\nAccurate planning and coordination of each release at GitLab is critical to shipping useful features on time. In order to improve our planning process, not only ourselves but also for everyone who uses GitLab, we took a look at our existing features that help teams organize issues. From here, we determined that our current [Milestone Board](/blog/feature-highlight-set-dates-for-issues/#milestones) was not powerful enough for larger teams or more complex projects. The team then began to brainstorm ideas for designing and implementing a new type of board that allows users to visually plan issues.\n\n\u003C!--more-->\n\n## The Proposal\n\nAt GitLab, we believe that the speed of innovation for our organization and product is constrained by the total complexity we've added so far. Creating [boring solutions](https://handbook.gitlab.com/handbook/values/#boring-solutions) and simplifying our product to its absolute minimum allows us to ship faster and make iterations based on real user feedback. With this in mind, our team began determining basic principles that would help guide us during the creation process of the new Issue Board feature.\n\nWe knew we wanted the product to be able to:\n\n- Provide an overview of issues in a more visual way\n- Allow for a workflow with multiple intermediate steps\n- Use existing metadata that would keep the same sorting and filtering tools that already exist\n\n    \nKnowing this, the team was able to craft a [proposal](https://gitlab.com/gitlab-org/gitlab-ce/issues/17907) that began to come to life with requirements, user stories, and wireframes.\n\n![wireframe](https://about.gitlab.com/images/blogimages/designing-issue-boards/wireframe.png){: .shadow}\n\n## Feedback & Challenges\n\nHere at GitLab we are able to gather feedback early by posting our proposals as issues that are publicly available to team members, contributors, customers, and users. With over 100 participants, the Issue Boards proposal received a lot of responses that validated many of our assumptions, addressed concerns, and provided insight for future improvements.\n\nSome concerns included:\n\n- **Using labels as lists.** The drawback being that it can be confusing to use labels for issues, as well as creating lists. However, we believe that the flexibility of using labels for lists outweighs the downsides. Users will have the same metadata available throughout GitLab, as well as be able to use all the same sorting and filtering tools that already exist.\n- **Assigning multiple list labels to one issue.** We believe that managing boards should be up to the user. If a user assigns three list labels to the same issue, the issue will display in all three corresponding lists and the labels will change if you drag the issue from one column to another. As a user [mentioned](https://gitlab.com/gitlab-org/gitlab-ce/issues/17907#note_12602314): *\"Being able to display the same issues in multiple ways to track needs differently for different user-types through different work flows would be hugely valuable.\"*  We definitely agree!\n- **Only having one Issue Board per project.** The current scope of this feature for [GitLab 8.11](/releases/2016/08/22/gitlab-8-11-released/) allowed only a single board per project. However, we understand the benefit of having multiple boards per project. We also recognize that many teams work across repositories and want to see Issue Boards available at a group level. These are improvements we are planning for a future release. :)\n\n## Refining through Collaboration\n\nAfter addressing participants' concerns, the UX team started further refining UI elements and polishing interactions. Every member of the UX team worked on the design at some stage of the process and we came to the final product through iteration and collaboration.\n\nWe worked on creating a board that turned issues into draggable cards, provided an easy way to create default lists, and took advantage of the metadata that labels gave us by keeping the same filtering options that are available throughout the site. We also determined that the default Backlog list could contain an unmanageable number of issues, so we added a search functionality in order to find issues more easily.\n\nThe design, development, and product teams all worked closely throughout the creation process and met up once a week to discuss challenges, status, and overall excitement for the launch of this feature. \n\n![issue-board](https://about.gitlab.com/images/blogimages/designing-issue-boards/issue-board.gif){: .shadow}\n\n## What's next\n\nThe [GitLab Issue Board](/stages-devops-lifecycle/issueboard/) was created as a flexible tool that can be used for various workflows and tasks. We lean towards light-weight, flexible implementations so we can ship quickly, see real use cases, and make informed iterations. We are super excited to [continue working](https://gitlab.com/gitlab-org/gitlab-ce/issues/21365) on Issue Boards in the upcoming releases; from multiple and cross-project boards to searching through all lists and creating an issue directly from the board view. If you have further ideas for future improvements, let us know by [making an issue](https://gitlab.com/gitlab-org/gitlab-ce/issues/new?issue)!\n\n## Join our webcast \nIf you want to see a live demo of the Issue Board and see some of the other great features in [GitLab 8.11](/releases/2016/08/22/gitlab-8-11-released/), join our webcast on September 1st. [Register now](https://page.gitlab.com/IssueBoardWebcast_LandingPage.html).  \n\n",{"slug":4772,"featured":6,"template":683},"designing-issue-boards","content:en-us:blog:designing-issue-boards.yml","Designing Issue Boards","en-us/blog/designing-issue-boards.yml","en-us/blog/designing-issue-boards",{"_path":4778,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4779,"content":4784,"config":4788,"_id":4790,"_type":17,"title":4791,"_source":18,"_file":4792,"_stem":4793,"_extension":21},"/en-us/blog/announcing-the-gitlab-issue-board",{"title":4780,"description":4781,"ogTitle":4780,"ogDescription":4781,"noIndex":6,"ogImage":3166,"ogUrl":4782,"ogSiteName":671,"ogType":672,"canonicalUrls":4782,"schema":4783},"Announcing The GitLab Issue Board","Strengthen your Release Management Process: announcing the GitLab Issue Board!","https://about.gitlab.com/blog/announcing-the-gitlab-issue-board","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Announcing The GitLab Issue Board\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2016-08-22\",\n      }",{"title":4780,"description":4781,"authors":4785,"heroImage":3166,"date":4786,"body":4787,"category":14},[676],"2016-08-22","\n\nSoftware is eating the world. Reducing the time between having an idea and having the code in production\nis a great competitive advantage. Planning what to do next is an essential part of that process. Today we\nintroduce our Issue Board that will make it faster to plan issues. It is an integrated part of GitLab, ensuring\nyou don't have to switch tools to get things done.\n\n\u003C!-- more -->\n\n## Release management isn’t perfect\n\nUnderstanding your team’s challenges is the first step to solving them.\nSpeaking from our own experiences shipping GitLab, some of the release\nchallenges we face are:\n\n**Prioritization:** with nearly 4,500 issues in our [CE project][ce] and\nour [direction] issues, we are constantly faced with tough decisions of\nwhere to focus our resources.\n{: .alert .alert-info .blue}\n\n**Planning:** we release on the 22nd of every month. To hit our release goal,\nwe have to be incredibly diligent about what we forecast for each release.\n{: .alert .alert-info .blue}\n\n**Communication:** with a growing team consisting of 24 developers, 6 frontend\nengineers, and 5 UX designers, it has become increasingly more important to\nensure the full team has visibility into the overall release process.\n{: .alert .alert-info .blue}\n\n## What the experts had to say\n\nObviously, we’re not “the experts.” But we’ve summarized their feedback.\nThe International Journal of Computer Applications [2013 study][2013] has\ngreat insights into effective release management processes.\n\n\u003Ci class=\"fas fa-globe fa-fw font-awesome purple\" aria-hidden=\"true\">\u003C/i> **1. Create\na single source of truth:** eliminate the natural differences that\noccur with large teams working in different time zones, running different\nprocesses, and using different tools.\n\n\u003Ci class=\"fas fa-arrows-alt fa-fw font-awesome orange\" aria-hidden=\"true\">\u003C/i> **2. Manage\napplication dependencies:** avoid release failures by ensuring your\ntesting environments account for version dependencies.\n\n\u003Ci class=\"far fa-edit fa-fw font-awesome purple\" aria-hidden=\"true\">\u003C/i> **3. Document\neverything:** make sure it’s in a common repository and that it’s\neasily discoverable.\n\n\u003Ci class=\"fas fa-eye fa-fw font-awesome orange\" aria-hidden=\"true\">\u003C/i> **4. Make\napprovals visible:** you and your team should have agreed upon quality\nbars that determine what makes it into each environment.\n\n\u003Ci class=\"fas fa-terminal fa-fw font-awesome purple\" aria-hidden=\"true\">\u003C/i> **5. Deploy\nconsistently across environments:** standardize your build, test,\nand deploy process by automating as much as you can. The goal is to\nremove error and unpredictability.\n\n\u003Ci class=\"fas fa-crosshairs fa-fw font-awesome orange\" aria-hidden=\"true\">\u003C/i> **6. Make\nthe release plan easy to consume:** we’re lumping all the\n**P**'s (planning, people, process, and policy) together. They all boil up to\nthe same key ideas. Policies and plans should be centralized. Ownership must\nbe clear. Finally, a change in plans needs to be visible to the full team.\n\n## GitLab: From idea to production\n\nThat list is easier said than done. But it’s where we are all headed.\nModern development teams are optimizing for speed without sacrificing quality.\nThey are moving away from older process-driven development styles like Waterfall,\nScrum, and Agile and towards continuous delivery and deployment. To\nsupport modern development practices, GitLab has everything you need to get\n[from idea to production faster][cd].\n\nThere are 10 steps from idea to production in the modern development lifecycle.\n\n![FROM IDEA TO PRODUCTION IN 10 STEPS](https://about.gitlab.com/images/blogimages/announcing-the-gitlab-issue-board/10-step-dev-lifecycle-plan.png)\n\n1. Chat conversation &#8594; [Mattermost ships with GitLab][mattermost]\n1. Issue creation &#8594; [GitLab Issues][issue]\n1. Planning board &#8594; [GitLab Issue Board]\n1. IDE &#8594; [Koding + GitLab][koding] Integration\n1. Version control &#8594; GitLab Repositories\n1. Continuous Integration &#8594; [GitLab CI][ci] and [GitLab Container Registry][container]\n1. Code review &#8594; GitLab Merge Requests\n1. Continuous Delivery &#8594; [GitLab Deploy][cd]\n1. Chatops &#8594; We're planning to ship [Cog]\n1. Feedback &#8594; We plan to ship with [Cycle Analytics][cycle]\n\nThe 10 steps of the modern development lifecycle will be included directly in\nGitLab in the coming months. Today we are announcing the [GitLab Issue Board],\na software project management tool used to **plan**, **organize**, and **visualize** a team’s\nfeature or product release process.\n\n## Closer look at the GitLab Issue Board\n\nThe Issue Board builds on GitLab’s existing issue tracking functionality and now\noffers teams the ability project manage their release and deployment process. This\nis the first iteration of our Issue Board. Here are a few things you should know about:\n\n### The GitLab Issue Board\n\n\u003Ci class=\"fas fa-check-circle-o fa-fw font-awesome green\" aria-hidden=\"true\">\u003C/i> It’s\na new way to **manage** your **issues** in GitLab. Your issues appear as **cards** on the Board.\n\n\u003Ci class=\"fas fa-check-circle-o fa-fw font-awesome green\" aria-hidden=\"true\">\u003C/i> **Lists**\n(or columns) represent each step in your development process.\n\n\u003Ci class=\"fas fa-check-circle-o fa-fw font-awesome green\" aria-hidden=\"true\">\u003C/i> Your\nlists are **based on** your **Labels**. Which means it works out of the box with your existing issues.\nSo if you’ve already labeled things with “Development” and “Production”, the corresponding issues will\nappear in the lists as you create them.\n\n![GITLAB ISSUE BOARD](https://about.gitlab.com/images/blogimages/announcing-the-gitlab-issue-board/gitlab-issue-board.png){: .shadow}\n\n### Lists\n\n\u003Ci class=\"fas fa-check-circle-o fa-fw font-awesome green\" aria-hidden=\"true\">\u003C/i> Each\nIssue Board starts with two lists: **Backlog** and **Done**. The Backlog will hold all the issues in\nyour project which don't have any label assigned to a list. Once you label an issue, and create a list for that\nlabel, it will be automatically moved from **Backlog** to the corresponding list. You can create unlimited lists!\n\n\u003Ci class=\"fas fa-check-circle-o fa-fw font-awesome green\" aria-hidden=\"true\">\u003C/i> You\ncan drag and drop the lists to organize your Board according to your own workflow:\n\n![drag and drop issue](https://about.gitlab.com/images/blogimages/announcing-the-gitlab-issue-board/gif-drag-and-drop-list.gif){: .shadow .center}\n\n### Labels\n\n\u003Ci class=\"fas fa-check-circle-o fa-fw font-awesome green\" aria-hidden=\"true\">\u003C/i> When\nyou move issues between lists, the label on the issue is automatically updated, though it doesn't show on the issue card.\n\n\u003Ci class=\"fas fa-check-circle-o fa-fw font-awesome green\" aria-hidden=\"true\">\u003C/i> This\nnew label is displayed in the Issue Tracker as well as on the issue itself. So, even if someone on\nyour team isn’t checking the Issue Board, they’ll still have a record of what step an issue is on.\n\n![drag and drop issue](https://about.gitlab.com/images/blogimages/announcing-the-gitlab-issue-board/gif-drag-and-drop.gif){: .shadow .center}\n\n\u003Ci class=\"fas fa-check-circle-o fa-fw font-awesome green\" aria-hidden=\"true\">\u003C/i> If\nyou drag and drop the card to the list **Done**, the issue will be automatically closed.\n\n### Functionality\n\n#### Example\n\n\u003Ci class=\"fas fa-check-circle-o fa-fw font-awesome green\" aria-hidden=\"true\">\u003C/i> By\nadding new lists, you can create workflows. For example, you can create a list\nbased on the label of “Frontend” and one for “Backend”. A designer can start working on\nan issue by dragging it from **Backlog** to “Frontend”. That way, everyone knows,\nthis issue is now being worked on by the frontend engineers.\nThen, once they’re done, all they have to do is drag it over to the next list, Backend,\nwhere a backend developer can eventually pick it up. Once they’re done, they move it to\nthe list **Done**, to close the issue.\n\nRead through the [Issue Board documentation][doc] to know everything you can do with it.\n\n#### Bonus\n\n\u003Ci class=\"fas fa-check-circle-o fa-fw font-awesome green\" aria-hidden=\"true\">\u003C/i> Using\nGitLab’s existing Label functionality also means that you’ll have all the same\nfiltering and sorting abilities you see across the rest of the product.\n\n### Live demo\n\nTo see the GitLab Issue Board in action, take a look at GitLab Developer Advocates\n([Amanda] and [Ivan])’s screencast below.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/UWsJ8tkHAa8\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## Join our webcast\n\nOn September 1st, we’ll be hosting a webinar to discuss and demo the Issue Board and all of the other\ngreat features in GitLab 8.11. [Register here][webcast].\n\n\u003C!-- identifiers -->\n\n[2013]: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.403.1791&rep=rep1&type=pdf\n[about-gitlab-com]: htpps://about.gitlab.com/\n[cd]: /blog/continuous-integration-delivery-and-deployment-with-gitlab/\n[ce]: https://gitlab.com/gitlab-org/gitlab-ce/issues\n[ci]: /solutions/continuous-integration/ [cog]: https://gitlab.com/gitlab-org/omnibus-gitlab/issues/1412\n[container]: /blog/gitlab-container-registry/\n[cycle]: https://gitlab.com/gitlab-org/gitlab-ce/issues/20975\n[direction]: /direction/\n[doc]: https://docs.gitlab.com/ee/user/project/issue_board.html\n[GitLab Issue Board]: /stages-devops-lifecycle/issueboard/\n[issue]: /blog/start-with-an-issue/\n[koding]: /blog/koding-and-gitlab-integrated/\n[mattermost]: /blog/gitlab-loves-mattermost/\n[webcast]: https://Page.gitlab.com/IssueBoardWebcast_LandingPage.html\n[Amanda]: https://twitter.com/AmbassadorAwsum\n[Ivan]: https://twitter.com/inemation\n\n\u003Cstyle>\n  .blue {\n    color: rgb(49,112,143) !important;\n  }\n  .center {\n    display: block;\n    margin-right: auto;\n    margin-left: auto;\n  }\n  .font-awesome {\n    font-size:.85em;\n  }\n  .purple {\n    color:rgb(107,79,187);\n  }\n  .orange {\n    color:rgb(252,109,38);\n  }\n  .green {\n    color: rgb(60,118,61);\n  }\n\u003C/style>\n",{"slug":4789,"featured":6,"template":683},"announcing-the-gitlab-issue-board","content:en-us:blog:announcing-the-gitlab-issue-board.yml","Announcing The Gitlab Issue Board","en-us/blog/announcing-the-gitlab-issue-board.yml","en-us/blog/announcing-the-gitlab-issue-board",{"_path":4795,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4796,"content":4802,"config":4807,"_id":4809,"_type":17,"title":4810,"_source":18,"_file":4811,"_stem":4812,"_extension":21},"/en-us/blog/applying-gitlab-labels-automatically",{"title":4797,"description":4798,"ogTitle":4797,"ogDescription":4798,"noIndex":6,"ogImage":4799,"ogUrl":4800,"ogSiteName":671,"ogType":672,"canonicalUrls":4800,"schema":4801},"Applying GitLab Labels Automatically","Learn how to use GitLab Webhooks to apply labels automatically to MRs.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749672498/Blog/Hero%20Images/applying-gitlab-labels-automatically-cover.jpg","https://about.gitlab.com/blog/applying-gitlab-labels-automatically","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Applying GitLab Labels Automatically\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Brian O'Connell\"}],\n        \"datePublished\": \"2016-08-19\",\n      }",{"title":4797,"description":4798,"authors":4803,"heroImage":4799,"date":4805,"body":4806,"category":14},[4804],"Brian O'Connell","2016-08-19","\nThis is a customer story on how Brian uses [GitLab Webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html)\nto apply **labels** automatically to his projects' merge requests.\n\nThis article follows up his previous post, on how [using GitLab Labels](https://about.gitlab.com/blog/using-gitlab-labels/)\nhelps him to direct focus and improve his workflow.\n\n\u003C!-- more -->\n\n## Automatic application of GitLab Labels\n\nIn my previous post I described how to use [GitLab Labels](https://docs.gitlab.com/ee/user/project/labels.html)\nto easily triage. @shochdoerfer asked me:\n\n> _@boc_tothefuture how can @GitLab labels be applied automatically\nfor issues or merge requests?_\n\n### A quick webhook server\n\nWe use [GitLab webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) to automatically apply labels\nto incoming merge requests (MRs). To process the webhooks, we wrote a\nsimple webrick server whose process is supervised by runit and the\nincredibly well-written runit cookbook.\n\n### Adding labels automatically\n\nUsing the Webrick as a base it’s fairly easy to get labels added to your\nMRs when they are opened. When the request comes in to your webrick server,\nlook at the GitLab `object_kind` to see if it's a MR.\n\n```ruby\ndef merge_request?(request_body)\n  body['object_kind'] == 'merge_request'\nend\n```\n\nIf the code is a merge request, the next step is calculate the labels that\nshould be applied to the MR. In our case that is a ‘Needs Review’ label\nif the MR is just being opened. Then because we use Semver and\nthor-scmversion we just scan all the commit messages for `#patch`, `#minor`\nand `#major` to apply the appropriate Semver tag to the MR.\n\nYou will need a valid [GitLab API](https://docs.gitlab.com/ee/api/) key to modify and or request data about a MR.\n\n```ruby\ndef update_labels(gitlab_server, api_key, request_body )\n  project_id = request_body['object_attributes']['target_project_id']\n  request_id = ['object_attributes']['id']\n  labels = ['Needs Review'] if request_body['object_attributes']['action']\n  semver_increment = semver_increment(gitlab_server, api_key,request_body )\n  labels += semver_increment if semver_increment\n\n  merge_data = {id: hook_id(hook), project_id: project_id(hook), labels: labels.to_a.sort.join(',')}\n  url = \"#{gitlab_server}/api/v3/projects/#{project_id}/merge_requests/#{request_id}?private_token=#{api_key}\"\n  RestClient::Request.execute(:method => :put, :payload => merge_data, :url => url)\nend\n\ndef semver_increment(gitlab_server, api_key, request_body)\n  from_branch = request_body['object_attributes']['target_branch']\n  to_branch = request_body['object_attributes']['source_branch']\n  project_id = request_body['object_attributes']['target_project_id']\n\n  params = { private_token: api_key, from: from_branch, to: to_branch }\n  url = \"#{gitlab_server}/api/v3/projects/#{project_id}/repository/compare\"\n  changelog = JSON.parse(RestClient::Request.execute(:method => :get, :url => url, :headers => { params: params }))\n  changelog = (changelog['commits'] || []).map { |commit| commit['message'] }\n  return 'Major' if changelog.any? { |msg| msg.include? '#major' }\n  return 'Minor' if changelog.any? { |msg| msg.include? '#minor' }\n  return 'Patch' if changelog.any? { |msg| msg.include? '#patch' }\nend\n```\n\n## Pro tips\n\nYou will need to do some extra work to make this work on updates.\nFor updates you will need pull the current labels and merge them\nwhere appropriate. This is necessary to update the labels when a\nsubsequent commit to the MR takes it from a `#patch` to a `#minor`\nor `#major`.\n\nYou should thread your webrick server so the processing of the updating\nof incoming requests is in an different thread than the accepting of\nwebhooks from GitLab. If you don’t do multi-thread you may run into\nissues where GitLab resends the webhooks because of a timeout. The\ndefault timeout in GitLab is 10 seconds. Simple threading with rubythread and a queue should be sufficient.\n\nThanks to my colleague Cameron McAvoy, who added the label processing\nto the original webhook server I wrote.\n",{"slug":4808,"featured":6,"template":683},"applying-gitlab-labels-automatically","content:en-us:blog:applying-gitlab-labels-automatically.yml","Applying Gitlab Labels Automatically","en-us/blog/applying-gitlab-labels-automatically.yml","en-us/blog/applying-gitlab-labels-automatically",{"_path":4814,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4815,"content":4821,"config":4825,"_id":4827,"_type":17,"title":4828,"_source":18,"_file":4829,"_stem":4830,"_extension":21},"/en-us/blog/feature-highlight-set-dates-for-issues",{"title":4816,"description":4817,"ogTitle":4816,"ogDescription":4817,"noIndex":6,"ogImage":4818,"ogUrl":4819,"ogSiteName":671,"ogType":672,"canonicalUrls":4819,"schema":4820},"Feature Highlight: Set Due Dates for Issues and Create Milestones","Feature Highlight: Learn how you can leverage issue due dates and milestones to help manage your projects with GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683857/Blog/Hero%20Images/gitlab-milestones-cover.png","https://about.gitlab.com/blog/feature-highlight-set-dates-for-issues","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Feature Highlight: Set Due Dates for Issues and Create Milestones\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Amanda Folson\"}],\n        \"datePublished\": \"2016-08-05\",\n      }",{"title":4816,"description":4817,"authors":4822,"heroImage":4818,"date":4823,"body":4824,"category":14},[4095],"2016-08-05","\n\nGitLab has a powerful issue tracker that completely integrates into the GitLab workflow. Our team uses our issue tracker for almost everything, including projects that contain no code. We believe that if anything is significant enough to work on then [it deserves an issue](/handbook/communication/#gitlab-workflow). Before GitLab 8.7, there was no way to communicate that you needed a specific issue to be completed by a specified time. While we had the ability to add milestones to issues and merge requests, there was no way to say \"I am working on X and I need to have it completed by Y date.\" So in GitLab 8.7 we added the ability to set due dates on an issue.\n\n\u003C!-- more -->\n\n## Due Dates for Issues\n\nIf you have a hard deadline, it makes sense to make sure the rest of your team \nhas insight into when things are due. It can be hard to manage projects where multiple teams are working on different facets of an application, but as of GitLab 8.7 we've made it easy to set due dates for issues and create milestones that incorporate multiple projects.\n\nSetting due dates for issues is a straightforward process -- simply navigate \nto an issue and assign it a due date from the sidebar.\n\n![Due date for issues in GitLab 8.7](https://about.gitlab.com/images/blogimages/feature-highlight-set-dates-for-issues/gitlab-issue-due-date.png){: .shadow}\n\nNow, when you view your open issues you'll see the due date of each specific \nissue at a glance.\n\n![Due date for issues in GitLab 8.7](https://about.gitlab.com/images/blogimages/feature-highlight-set-dates-for-issues/gitlab-issue-overview-with-due-dates.png){: .shadow}\n\nPlease note that this change only applies to individual issues and not\nmilestones.\n\n## Milestones\n\nMilestones are markers for specific points in a project's timeline. For example, \"Launching Version 1\" or \"MVP\" could be milestones for your particular project. Each milestone can be made up of multiple parts or tasks. If you were launching version 1 of your application, you might have several tasks such as \"Create website copy\" or \"Develop page layout.\" These tasks can be anything you think is valuable for a version 1 launch, but it's likely that several tasks would be involved in your version 1 launch.\n\nBut what happens if you have multiple teams working on multiple parts of your app as part of your version 1 launch? How do you track what work is related to which milestone within your group?\n\nUsing milestones across multiple projects can help you manage all of the work your team and other teams are doing. Once you've created a group, creating milestones across your project is as simple as navigating to your group's \"Milestones\" page and adding projects to the list.\n\n![Create a milestone for projects under a group](https://about.gitlab.com/images/blogimages/feature-highlight-set-dates-for-issues/gitlab-create-milestone.png){: .shadow}\n\nOnce the milestone is created, you can add issues to it from any project. The milestone will also appear under each project's \"Milestones\" tab as if it were specific to that project. You can then view all issues across projects that are tied to that milestone.\n\n![Create a milestone for projects under a group](https://about.gitlab.com/images/blogimages/feature-highlight-set-dates-for-issues/gitlab-issues-for-milestone.png){: .shadow}\n\nAt any time, you may also get an overview of a milestone's progress. This overview will show you how many issues are open, how many merge requests are open, and the percent of completion based off of completed tasks.\n\n![Create a milestone for projects under a group](https://about.gitlab.com/images/blogimages/feature-highlight-set-dates-for-issues/gitlab-ce-milestones.png){: .shadow}\n\n## At GitLab\n\nInternally, we use issue due dates and milestones in a few different ways. Some teams, such as the Dev and Core teams, use milestones to keep track of issues for upcoming releases. Since we release on the 22nd of every month, all issues that pertain to a release milestone [need to be done by the 11th of the month](https://gitlab.com/gitlab-org/gitlab-ce/issues/20497) so that we have enough time to do quality assurance testing and fix problems.\n\nThis makes sense for code-related projects, but what about projects that contain no code? The Marketing team here at GitLab uses issue due dates and milestones to keep track of long-term and short-term projects. For example, when we want to launch a new feature, we know that we need to work backwards from the dev team's due date of the 22nd of the month. We can create a milestone for the feature launch and add issues to it for things like creating ad copy, creating one-pagers, creating landing pages, and so on. Milestones help keep the team working towards the goal of launching the feature, while issue due dates help ensure we have everything we need with plenty of time to spare for last-minute changes.\n\nWith these features, you and your team will be able to add more visibility into when projects will be completed and can easily break your scope of work down into more manageable chunks. Enjoy!\n\n## What's coming next?\n\nIf you're curious what is coming next in GitLab, you can always visit our\n[Direction](/direction/) page for insight into our\nroadmap. We always love your feedback.\n",{"slug":4826,"featured":6,"template":683},"feature-highlight-set-dates-for-issues","content:en-us:blog:feature-highlight-set-dates-for-issues.yml","Feature Highlight Set Dates For Issues","en-us/blog/feature-highlight-set-dates-for-issues.yml","en-us/blog/feature-highlight-set-dates-for-issues",{"_path":4832,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4833,"content":4839,"config":4843,"_id":4845,"_type":17,"title":4846,"_source":18,"_file":4847,"_stem":4848,"_extension":21},"/en-us/blog/koding-and-gitlab-integrated",{"title":4834,"description":4835,"ogTitle":4834,"ogDescription":4835,"noIndex":6,"ogImage":4836,"ogUrl":4837,"ogSiteName":671,"ogType":672,"canonicalUrls":4837,"schema":4838},"Koding + GitLab: Contribute code faster","Koding and GitLab are integrated to make contributing code faster!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683769/Blog/Hero%20Images/koding-and-gitlab-integrated-cover.png","https://about.gitlab.com/blog/koding-and-gitlab-integrated","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Koding + GitLab: Contribute code faster\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2016-07-26\",\n      }",{"title":4834,"description":4835,"authors":4840,"heroImage":4836,"date":4841,"body":4842,"category":14},[676],"2016-07-26","\n\nToday, developers spend hours creating dev environments before they can write a single line of code. \nWe think that's backwards. Development is collaborative and most developers work across a variety of environments \nso the time spent building unique dev environments builds up pretty quickly. With [Koding] and GitLab, developers \nnever have to waste time on this again.\n\n\u003C!-- more -->\n\n## Our vision\n\nOur vision is that developers should be able to contribute code faster with one-click to build \nevery project, issue, and merge request in a complete IDE. Koding makes it so much easier to get started.\nIf you see an issue you want to work on, it only takes one-click to build an environment where you \nand your team can work together. You don’t have to configure anything locally, you can just start coding.\nWith Koding and GitLab, teams will be able to work together seamlessly by having every GitLab repo buildable \non any cloud. You can get started as a contributor, check out merge requests, and inspect failing tests faster \nand easier than ever. Our hope is that removing the burden of building dev environments will help developers\ncollaborate on more projects and focus on writing code that will improve their products.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/7rX_KzCMNtk\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## Faster from idea to production\n\nAt GitLab, we want to enable teams to go faster from idea to production by using one integrated set of tools for \nthe software development lifecycle. We see a world where you chat about something, turn that idea into an issue\nwithout leaving the chat interface, spin up an IDE to work on the issue,  commit your changes, run tests with GitLab\nCI, let peers review and edit your code, and once it’s ready you can deploy to the necessary environment. Then after\nyou’ve deployed to production, you’ll be able to review how your team progressed from idea to production. This final\nstep is important feedback to help you improve the development process by understanding the overall health of your\nproject as well as the time spent in each stage. We are working on an updated video to show you all of the steps I’ve\njust shared. In the meantime, watch our [current demo](https://youtu.be/pY4IbEXxxGY) and tell us what you think. \n\n## What's next \n\nBoth GitLab and [Koding] are excited about what we have coming with our integration. We hope to deliver the first\niteration in our next release on August 22nd. If you're interested in learning more or you want to share your ideas,\ncheck out [this issue](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4769) that details more of our plans.  \n\n[koding]: http://www.koding.com/\n",{"slug":4844,"featured":6,"template":683},"koding-and-gitlab-integrated","content:en-us:blog:koding-and-gitlab-integrated.yml","Koding And Gitlab Integrated","en-us/blog/koding-and-gitlab-integrated.yml","en-us/blog/koding-and-gitlab-integrated",{"_path":4850,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4851,"content":4857,"config":4861,"_id":4863,"_type":17,"title":4864,"_source":18,"_file":4865,"_stem":4866,"_extension":21},"/en-us/blog/gitlab-adds-support-for-u2f",{"title":4852,"description":4853,"ogTitle":4852,"ogDescription":4853,"noIndex":6,"ogImage":4854,"ogUrl":4855,"ogSiteName":671,"ogType":672,"canonicalUrls":4855,"schema":4856},"Support for Universal 2nd Factor Authentication","GitLab now supports the FIDO Universal 2nd Factor (U2F) protocol for user authentication with hardware security from YubiKey.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666581/Blog/Hero%20Images/fido-u2f-yubikey.jpg","https://about.gitlab.com/blog/gitlab-adds-support-for-u2f","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Support for Universal 2nd Factor Authentication\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Amara Nwaigwe\"}],\n        \"datePublished\": \"2016-06-22\",\n      }",{"title":4852,"description":4853,"authors":4858,"heroImage":4854,"date":4859,"body":4860,"category":14},[4407],"2016-06-22","\nWith the [release of GitLab 8.9](/releases/2016/06/22/gitlab-8-9-released/), GitLab now supports the FIDO Universal 2nd Factor (U2F) protocol for user authentication with\nthe added layer of hardware security from [YubiKey](https://www.yubico.com/products/yubikey4/). We're excited to expand our authentication\ncapabilities to include U2F devices. U2F changes the game for online authentication because\nit uses public key cryptography and has built-in support to prevent phishing. This higher\nlevel of authentication enables developers to maintain the security of\ntheir servers, code, sites, and more from a single source.\n\n\u003C!-- more -->\n\n## Importance of account security\n\nWith the steady rise of new devices and the growing capabilities of existing ones, the average\nuser logs into networks, applications, or platforms from a variety of different devices. While\ndevice flexibility is great from a user perspective, it represents significant security\nchallenges for organizations and developers. Each new access point makes it tougher to fend off\nmalicious attacks particularly phishing while maintaining the integrity of accounts and systems.\n\n## Support for U2F YubiKey\n\nYubiKeys reduce the number of steps you have to take to access your accounts,\nwhile still maintaining usability and providing secure authentication with just a touch of the\nYubiKey. With U2F, you can now authenticate by inserting their YubiKey into the\nUSB port when prompted. You'll activate your YubiKey by simply pressing the button on\nthe device.\n\nThe same U2F YubiKey that works with GitLab also works for logging into a growing number of\nother services, including Google, Dropbox, and Dashlane, without any personal data or\nencryption secrets shared between service providers. With YubiKeys, there are no drivers or\nclient software to install.\n\n## Enabling two-factor authentication via U2F\n\nGitLab has supported two-factor authentication since the release of [GitLab 7.11](/releases/2015/05/22/gitlab-7-11-released/), adding\ndevice-enabled 2nd factor authentication provides an additional layer of security.\nIf you're interested in enabling two-factor authentication with a U2F device, follow the\nsteps in our [documentation](https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html). Of course, you have the option to choose the\nauthentication method that is best for you.\n",{"slug":4862,"featured":6,"template":683},"gitlab-adds-support-for-u2f","content:en-us:blog:gitlab-adds-support-for-u2f.yml","Gitlab Adds Support For U2f","en-us/blog/gitlab-adds-support-for-u2f.yml","en-us/blog/gitlab-adds-support-for-u2f",{"_path":4868,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4869,"content":4875,"config":4880,"_id":4882,"_type":17,"title":4883,"_source":18,"_file":4884,"_stem":4885,"_extension":21},"/en-us/blog/navigation-redesign",{"title":4870,"description":4871,"ogTitle":4870,"ogDescription":4871,"noIndex":6,"ogImage":4872,"ogUrl":4873,"ogSiteName":671,"ogType":672,"canonicalUrls":4873,"schema":4874},"Navigation redesign","After GitLab 8.5 was released, we looked for a way to improve the current user interface for both new and experienced users.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684693/Blog/Hero%20Images/gitlab-blog-cover.png","https://about.gitlab.com/blog/navigation-redesign","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Navigation redesign\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Dmitriy Zaporozhets\"}],\n        \"datePublished\": \"2016-06-06\",\n      }",{"title":4870,"description":4871,"authors":4876,"heroImage":4872,"date":4878,"body":4879,"category":14},[4877],"Dmitriy Zaporozhets","2016-06-06","\n\nAfter GitLab 8.5 was released, we looked for a way to improve the current user\ninterface for both new and experienced users. One of our biggest concerns was\nthat it was easy to get lost in the navigation hierarchy with what we currently\nhad. New users were quite confused by how the left sidebar constantly changes\nwith new links to different pages. At the same time, as an experienced user, I was\nannoyed by the old navigation too.\n\nSo Andriy (our UX designer) and I decided to do something about it. It's been\nalmost 4 months now that we are working on it, and in this post I will guide you\nthrough our journey. Feedback is welcome!\n\n\u003C!--more-->\n\n## How it all started\n\nOne day, while on a call, Andriy and I both agreed that we were not satisfied\nwith the current UI. I even made a messy screenshot with the default project's\nnavigation to illustrate my confusion:\n\n![old project navigation](https://about.gitlab.com/images/navigation-redesign/old-pr-nav.png)\n\nThere were quite a few things we did not like:\n\n- The current navigation is not well organized. There are places where it does\n  not follow logic or best practices.\n- We cannot use muscle memory with the collapsed menu sidebar for fast click\n  on links because the menu has too many items with new ones added every once\n  in a while.\n- It's hard to navigate when you come to GitLab via a link from another app\n  (like chat, for example) because of the lack of a logical hierarchy in our UI\n  navigation.\n\nA few days later, Andriy came up with a prototype where the project's menu was\ndisplayed within the dashboard navigation. So when you visit the dashboard\npage you see one level of links, and when you visit a project or group page\nthe dashboard links get collapsed to icons and the next level of navigation\nis displayed.\n\n![failed navigation concept](https://about.gitlab.com/images/navigation-redesign/concept1.png)\n\n## UX is more important than you think\n\nWe were very excited with the new concept and proceeded with the implementation,\nwhich was pretty straightforward: we made a merge request, got feedback and review,\nand in the end we merged it. Then we waited for the next release candidate to\nbring the new navigation to our community.\n\nThen came the bad news. User testing and feedback during that release candidate\nwas far from what we expected. Instead of making things easier to understand and\nuse, we confused users even more! Our community feedback is invaluable to us,\nso we made the decision to rollback the change. At that point we gave up for a\nwhile...\n\nIt wasn't until a few weeks later that we decided to take a different path.\n\n## A different approach\n\nWe split GitLab's layout of different areas by color, and tried to follow the\nnavigation hierarchy as close as we could.\n\nGlobal navigation would now have a dark color in the left sidebar, and would be\nstatic. No matter which page should you visit, you can always find GitLab's logo,\nyour profile picture, and the main links for your projects, issues and profile\nsettings.\n\n![new navigation explained](https://about.gitlab.com/images/navigation-redesign/nav-exp.png)\n\nThe whole page, except for the left sidebar, is a dynamic area with its\ncorresponding navigation and content. If you visit a project's page, the context\nmenu will be on the top, and the content just below it. The same happens for\ngroup and profile pages. So, when you visit any page from within GitLab or\nfrom an external application, you'll always know that the left sidebar is the\nsame, and the header describes exactly where you are via name and navigation\nlinks.\n\nWhen you visit a GitLab page several times a day, you scan the page from top to\nbottom starting with page/group/project name, followed by the navigation, then\nthe content just below it.\n\nYou mostly ignore the left sidebar until you need to return to one of the main\npages, like \"Projects\" or \"Groups\". So after some time using the new UI, you\nmight consider collapsing the left sidebar as it's easier now to remember the\nicons related to the links there.\n\nFirst we tried it on the profile pages and later on the group ones. The feedback\nwe received was mostly positive, it passed the release candidate and got in the\n8.8 release!\n\nHere's how the group page with the new navigation layout looks like:\n\n![group navigation](https://about.gitlab.com/images/navigation-redesign/group-nav.png)\n\n## Mobile improvements\n\nThanks to these changes, we were able to improve the mobile UI as well. We now\nhide the left sidebar by default when on mobile and you can toggle it by clicking\nthe link on the top-left corner. This allowed us to save a lot of horizontal\nspace which is really valuable on mobile screens.\n\n![mobile navigation](https://about.gitlab.com/images/navigation-redesign/mobile.png)\n\n## What's coming with GitLab 8.9\n\nOur next milestone is GitLab 8.9 where we will strive to finish the navigation\nredesign by touching the most-used page type: Projects. Probably this change\nwill bring a lot of feedback from the user's side. We have too many menu items\nthere, which is not good for the user experience.\n\nSo, besides actually applying the new navigation style, we also need to re-group\nlogically connected pages under fewer tabs. The old project navigation had up\nto 15 menu items (!) which is too much for most screen sizes.\n\nHere is a preview for 8.9:\n\n![new project navigation](https://about.gitlab.com/images/navigation-redesign/project.png)\n\n## Resources\n\nThe [Google design guide][gdesign] was good for inspiration and you can read\nthe [issue for new navigation][issue] where a lot of discussion took place.\n\nWe would love your feedback so don't hesitate to comment here or in the above\nissue! Hopefully you'll find GitLab 8.9 much more easier to navigate.\n\n[gdesign]: https://www.google.com/design/spec/components/tabs.html#tabs-types-of-tabs\n[issue]: https://gitlab.com/gitlab-org/gitlab-ce/issues/14838\n",{"slug":4881,"featured":6,"template":683},"navigation-redesign","content:en-us:blog:navigation-redesign.yml","Navigation Redesign","en-us/blog/navigation-redesign.yml","en-us/blog/navigation-redesign",{"_path":4887,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4888,"content":4894,"config":4898,"_id":4900,"_type":17,"title":4901,"_source":18,"_file":4902,"_stem":4903,"_extension":21},"/en-us/blog/june-events",{"title":4889,"description":4890,"ogTitle":4889,"ogDescription":4890,"noIndex":6,"ogImage":4891,"ogUrl":4892,"ogSiteName":671,"ogType":672,"canonicalUrls":4892,"schema":4893},"Meet GitLab - June Events","If you have been following along last month the entire GitLab team met, many for the first time, in Austin, TX.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684686/Blog/Hero%20Images/SHU_4933.jpg","https://about.gitlab.com/blog/june-events","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Meet GitLab - June Events\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emily Kyle\"}],\n        \"datePublished\": \"2016-06-01\",\n      }",{"title":4889,"description":4890,"authors":4895,"heroImage":4891,"date":4896,"body":4897,"category":14},[1688],"2016-06-01","\n\nIf you have been following along last month the entire GitLab team met, many for the first time, in Austin, TX. The trip was a great success. We were able to fit in work, OSCON, fun, and lots of BBQ.\n\n\u003C!-- more -->\n\n![GitLab Team](https://about.gitlab.com/images/blogimages/IMG_1592.PNG)\n\nSo lets start with OSCON: Having the entire GitLab team in Austin for the week allowed around half of our team members to participate in OSCON. Conference attendees had fun playing Jenga in our booth trying desperately to win an ever-coveted pair of tanuki socks. We met some great people at both the booth and the conference events. We love meeting with other open source enthusiasts so much that we signed up for OSCON Austin 2017 and OSCON London in the fall. We hope to see you there!\n\n![OSCON Booth](https://about.gitlab.com/images/blogimages/osconbooth.JPG)\n\nLet's move on to some of the work, fun, and food: The team started the week off right with some of the most silly games of bubble soccer ever played, and a back yard pig roast. The fun continued with some team excursions, kayaking, tubing, and mini golf. We managed to mix in some meetings, strategy sessions, security 101 talks, as well as pushing our regular monthly release. All in all the trip was very productive. We love being a remote-first company but we definitely cherish the time we get to spend face to face.\n\n![Pig Roast](https://about.gitlab.com/images/blogimages/pigroast.PNG)\n\nSo now let's move on to where you can meet us this coming month. If you'll be attending these events, please say hello in the comments.\nWe'd love to meet you.\n\n## North America\n\n- [South East Linux Fest](http://www.southeastlinuxfest.org/), June 10th - 12th in Charlotte, NC: [Amanda] is speaking.\n- [Lean Poker SF](http://www.meetup.com/Lean-Poker-San-Francisco/events/230150034/), June 11th in San Francisco, CA. We are helping sponsor the event and GitLab team-members will be in attendance.\n- [Docker Con](http://2016.dockercon.com/), June 19th - 21st in Seattle, WA. Come meet [Emily], [Haydn], [Amanda], and [John] at our booth.\n- [Red Hat Summit](https://www.redhat.com/en/summit), June 27th - 30th in San Francisco, CA. Our very own CEO, [Sid] will be stopping by as well as [Eliran], [Amanda], [Haydn], [Mark], and [Emily].\n\n## South America\n\n- [Ruby on Rails Bootcamp](http://rails.softwarelibrechile.cl) - Universidad de Santiago de Chile, Santiago, Chile. June 4, 11, 18. Ruby, Rails & Git [Felipe]\n\n## Europe\n\n- [Shift Split](http://shiftsplit.com/), June 2nd -3rd in Split, Croatia:  -- [Ivan] will be speaking on, \"Why diploma is not enough as a programmer, and what to do about it...\"\n- [Rails Girls Warsaw](http://railsgirls.com/warsaw), June 11th - 12th in Warsaw, Poland:  -- We are sponsoring and it's still not too late to register for the event.\n\n[team]: /company/team/\n[Amanda]: https://twitter.com/AmbassadorAwsum\n[Sid]: https://twitter.com/sytses\n[Felipe]: https://twitter.com/juanpintoduran\n[Emily]: https://twitter.com/emilylucie\n[Ivan]: https://twitter.com/inemation\n[Haydn]: https://twitter.com/haydnmackay\n[John]: https://twitter.com/northrup\n[Eliran]: https://twitter.com/eliran_mesika\n[Mark]: https://twitter.com/MarkPundsack\n",{"slug":4899,"featured":6,"template":683},"june-events","content:en-us:blog:june-events.yml","June Events","en-us/blog/june-events.yml","en-us/blog/june-events",{"_path":4905,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4906,"content":4912,"config":4916,"_id":4918,"_type":17,"title":4919,"_source":18,"_file":4920,"_stem":4921,"_extension":21},"/en-us/blog/1k-contributors",{"title":4907,"description":4908,"ogTitle":4907,"ogDescription":4908,"noIndex":6,"ogImage":4909,"ogUrl":4910,"ogSiteName":671,"ogType":672,"canonicalUrls":4910,"schema":4911},"Celebrating 1000 Contributors","We are very excited to announce that we recently welcomed our 1,000th contributor!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684731/Blog/Hero%20Images/1K_contributors_cards.jpg","https://about.gitlab.com/blog/1k-contributors","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Celebrating 1000 Contributors\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2016-05-24\",\n      }",{"title":4907,"description":4908,"authors":4913,"heroImage":4909,"date":4914,"body":4915,"category":14},[699],"2016-05-24","\n\nWe are very excited to announce that we recently welcomed our 1,000th contributor!\nAnd, the list keeps growing. Since we released [the first open source version of GitLab in 2011](/company/history/#2011-start-of-gitlab)\nour community of contributors has been absolutely essential to growing and improving GitLab.\n\nIt’s no secret that the 1,000+ contributors have made GitLab what it is today. We have over\n100,000 organizations using our product. We have gone from a company with just eight\nemployees at the start of 2015, to a company with 80 employees. This past week, at the\nGitLab Summit in Austin, we wanted to take a second to recognize our contributors with a\nheartfelt and handwritten thank you!\n\n![](https://about.gitlab.com/images/blogimages/1k-contributors-images/1K_contributors_writing.jpg)\n\nAs a community we’ve developed and released features like GitLab Runner, which was an idea\nthat was proposed by our current GitLab team-member, Kamil. However, when Kamil\nproposed the idea he was not a GitLab employee, he was a\ncontributor. Our most recent example of the strength of our contributors comes from Matt\nOakes, who contributed a great new feature to the [GitLab 8.8 release](/releases/2016/05/22/gitlab-8-8-released/). Matt’s contribution\nnow makes it possible to suppress text file diffs by marking a file as non-diffable in your\n`.gitattributes` file. Matt and many contributors like him are proof that the open core\nmodel can work, when there’s a talented community and dedicated team working together.\n\nContributors, you are awesome! As a thank you, we will be sending you a letter and\na special sticker that we’ve designed just for our contributors. Our community means a lot to us\nand we hope that this shows a small token of our appreciation!\n\nIf you’re thinking about contributing, please do! Here’s where you can [find out more about contributing to GitLab](/community/contribute/).\nNo problem if you’re new to Ruby -- we welcome learners, and\nthere are multiple checks in place to help you improve your skills and to help us make sure\neverything’s up to scratch by the time it goes out.\n\nAnd because we are only successful by working together, we have to send a special thanks\nto Rémy Coutable who has been helping MRs over the finish line, by coaching authors and\nreviewing work, as well as making sure everything is [really actually done](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#definition-of-done).\n\nMuch respect to all of our contributors and happy stickering,\n\nThe GitLab Team\n",{"slug":4917,"featured":6,"template":683},"1k-contributors","content:en-us:blog:1k-contributors.yml","1k Contributors","en-us/blog/1k-contributors.yml","en-us/blog/1k-contributors",{"_path":4923,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4924,"content":4930,"config":4934,"_id":4936,"_type":17,"title":4937,"_source":18,"_file":4938,"_stem":4939,"_extension":21},"/en-us/blog/git-repository-pricing",{"title":4925,"description":4926,"ogTitle":4925,"ogDescription":4926,"noIndex":6,"ogImage":4927,"ogUrl":4928,"ogSiteName":671,"ogType":672,"canonicalUrls":4928,"schema":4929},"The future of SaaS hosted Git repository pricing","At GitLab, we think per-user pricing is the best pricing model because it is more predictable, less restrictive on code, and aligned with value the organization gets.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683732/Blog/Hero%20Images/stars.png","https://about.gitlab.com/blog/git-repository-pricing","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"The future of SaaS hosted Git repository pricing\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2016-05-11\",\n      }",{"title":4925,"description":4926,"authors":4931,"heroImage":4927,"date":4932,"body":4933,"category":14},[676],"2016-05-11","\nToday [GitHub announced pricing changes to all of their paid plans on GitHub.com](https://github.com/blog/2164-introducing-unlimited-private-repositories). With these\nchanges, paid plans on GitHub.com will now include unlimited private repositories. At GitLab,\nwe were not surprised to hear about these pricing changes. We believe they are inline with\nhow pricing will move in the future. At GitLab, we think per-user pricing is the best pricing\nmodel because it is more predictable, less restrictive on code, and aligned with value the\norganization gets.\n\n\u003C!-- more -->\n\n## Microservices\n\nThe rise of [microservices](/topics/microservices/), an approach to development in which you structure your software\ninto smaller individual service-oriented units. Each microservice then runs its own process\nand they communicate with each other through APIs. This software development approach is known\nto have four primary benefits: agility, efficiency, resiliency, and revenue. With such tangible\nbusiness benefits, it is no wonder why Google, Amazon, and Facebook have been using microservice\ndevelopment practices for over a decade. Matt Miller details the significance of microservices\nin his article, [‘Innovate or Die: The Rise of Microservices’](https://www.sequoiacap.com/article/build-us-microservices/) published in January 2016 on Sequoia\nCapital’s blog.\n\n## Unlimited repos is table stakes\n\nAs more and more developers, teams, and organizations seek out the advantages of microservices,\nthey’ll need more repositories to support this new code structure. Basically, the more microservices\nyou have the more repositories you’ll need. That is why it is not surprising that GitHub has announced\nfree private repositories. With their announcement today, now GitHub.com, Bitbucket.org, and GitLab.com all offer\nunlimited private repositories. It does not cost companies much more to host additional repositories for a given user.\nYou can think of hosting additional repositories like you think about your email. Once you have an\nemail account, you are usually not asked to pay more to store more. Unlimited repositories have become table stakes for a Git hosting SaaS service.\n\n## Pricing overview\n\nPrice for Git repository hosting per month in popular cloud solutions\n\n| \t   | GitHub.com old | GitHub.com new| Bitbucket.org | GitLab.com |\n| :--- | :---------: | :---------: | :-----------: | :--------: |\n| **Personal usage**\t| | | |\n| 1 private repo    | $7\t| $7\t| $0\t| $0\n| 100 private repos\t| $200\t| $7\t| $0\t| $0\n| **For organizations**\t| | | |\n| 5 collaborators  | depended on repos | $25 | $0 | $0\n| 10 collaborators | depended on repos | $90 | $10 | $0\n| 11 collaborators | depended on repos | $99 |$25\t| $0\n| 100 collaborators | depended on repos | $900 |$100\t| $0\n| Unlimited\tcollaborators | | N/A\t| $200 | $0\n\n## Unlimited is great\n\nIt’s awesome that repositories have become table stakes across the market.\nWe truly believe it will\nlead to better development practices since developers will no longer be constrained with physical\nstorage or with financial limitations. However, with more repositories, we assume developers will\nwrite more code and seek out more contributors to collaborate on your projects.\n\n## For some this is a price increase\n\nWhile the news of\nGitHub’s pricing is great if you have a lot of repos, it is not so helpful to people who have a lot\nof contributors. At GitLab, we strongly believe that\n“everyone can contribute.” This message is exemplified not only in how we build our own products but\nalso in how we price them. On GitLab.com, our free SaaS version, we offer unlimited private repositories,\nunlimited contributors, and unlimited CI runners, all for free.\n\nHere are some examples and quote's we've read about how these pricing changes will affect GitHub users.\n\n* For small teams, this announcement is a positive change. Their bill will most likely decrease, similar to [this person](https://news.ycombinator.com/item?id=11674148) who will see a 4X decline in their monthly bill.\n* If you are part of a larger team, your price will likely increase. In the case of [the Open edX non-profit](https://news.ycombinator.com/item?id=11674530), their price could potentially increase 10X due to the fact that they have a lot of contributors.\n* [This comment on HackerNews](https://news.ycombinator.com/item?id=11674507) sums it up best: \"there is an entire category of companies (agencies / software house) where the price is going up dramatically (5x, 10x or more). One example is Ruby on Rails core alumni Thomas Fuchs that will go [from $100 to $1296 per month](https://twitter.com/thomasfuchs/status/730415066399518720) because he has to pay for no longer active users.\n\n## Business models\n\nWhen it comes to SaaS hosted Git repository pricing models, it seems GitHub is pursuing more of a network\npricing model where users are asked to pay for 3rd party services. Atlassian is leveraging their\nexpansive product suite to get users to get additional paid services from them, like JIRA and Bamboo. At\nGitLab, we offer a free product with free services, for example [unlimited CI Runners](/blog/gitlab-partners-with-digitalocean-to-make-continuous-integration-faster-safer-and-more-affordable/).\nOur goal is to make our solution include everything you need to go [frictionless from idea to production](/direction/#scope) at a price where [everyone can contribute](/company/strategy/).\n\n## Why is GitLab.com free\n\nTypically, when we are out introducing GitLab at events, or even to friends, they ask, [how is\nit all free?](https://news.ycombinator.com/item?id=11673281). We currently have the following offerings:\n\n* GitLab.com: Free SaaS version featuring private repos, contributors, and CI runners (powered by Digital Ocean).\n* GitLab Community Edition: Free on-premises version featuring unlimited users and CI.\n* GitLab Enterprise Edition: $39/user/year offering an on-premises version with additional enterprise-specific features, security, and support.\n* GitHost.io: Paid depending on the server size you want us to host for you.\n\nWe detailed our thinking about [why GitLab will be free now and free forever](/pricing/) in [2015](https://gitlab.com/gitlab-com/www-gitlab-com/commit/e7e2faec2eca5d35629504b4435358615147fbec).\nOur goal has always been two-fold: to build an integrated solution that supports the full software\ndevelopment lifecycle and to make our products accessible so that everyone can contribute. Within our\nbusiness model, we make money through our on-premises solution. This is what allows us to offer\ncompletely free products. As more and more people see the benefit of a free solution that supports\ncoding, testing, and deployment, we are seeing more users on GitLab.com. Due to the rapid\ngrowth, GitLab.com's performance slowed down. We recognize this and we have been working really hard to [make GitLab.com faster](https://gitlab.com/gitlab-com/operations/issues/42). As you explore what solutions are best for you, your team, or your company, we hope\nthat you’ll consider us. As always, if you have any questions or comments feel free to ask them here or\non [our Twitter](https://twitter.com/gitlab).\n",{"slug":4935,"featured":6,"template":683},"git-repository-pricing","content:en-us:blog:git-repository-pricing.yml","Git Repository Pricing","en-us/blog/git-repository-pricing.yml","en-us/blog/git-repository-pricing",{"_path":4941,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4942,"content":4948,"config":4953,"_id":4955,"_type":17,"title":4956,"_source":18,"_file":4957,"_stem":4958,"_extension":21},"/en-us/blog/gitlab-partners-with-digitalocean-to-make-continuous-integration-faster-safer-and-more-affordable",{"title":4943,"description":4944,"ogTitle":4943,"ogDescription":4944,"noIndex":6,"ogImage":4945,"ogUrl":4946,"ogSiteName":671,"ogType":672,"canonicalUrls":4946,"schema":4947},"GitLab & DigitalOcean: Faster, safer & affordable CI","We are excited to announce our partnership with DigitalOcean, the world’s simplest cloud infrastructure provider.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684195/Blog/Hero%20Images/ios-development.jpg","https://about.gitlab.com/blog/gitlab-partners-with-digitalocean-to-make-continuous-integration-faster-safer-and-more-affordable","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Partners with DigitalOcean to make Continuous Integration faster, safer, and more affordable\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Amara Nwaigwe\"}],\n        \"datePublished\": \"2016-04-19\",\n      }",{"title":4949,"description":4944,"authors":4950,"heroImage":4945,"date":4951,"body":4952,"category":14},"GitLab Partners with DigitalOcean to make Continuous Integration faster, safer, and more affordable",[4407],"2016-04-19","\n\nToday, we are excited to announce our partnership with DigitalOcean, the world’s simplest\ncloud infrastructure provider. Together, GitLab and DigitalOcean want to help developers\neliminate the scaling challenges that come with Continuous Integration (CI), such as speed,\nsecurity, and cost. To help alleviate these challenges, GitLab partnered with DigitalOcean to\nprovide free Runners to all projects on GitLab.com as well as discount codes for GitLab\nCommunity Edition and Enterprise Edition users.\n\n\u003C!-- more -->\n\n![GitLab + DigitalOcean](https://about.gitlab.com/images/blogimages/gitlab-do.jpg)\n\n## Eliminating Scaling Challenges with DigitalOcean\n\nAt GitLab, we have a new release every month on the 22nd, so we respect the importance of\nagile development and timely testing. That is why we [built Continuous Integration](/solutions/continuous-integration/) directly into\nour platform. Our continuous integration allows you to run a number of tests as you prepare to\ndeploy your software. Naturally, we are heavy users of our own software. We run about 16 tests\nin parallel. While the benefits of testing are undeniable, we realized that running several\nparallel tests requires a lot of CPU. The need to scale servers up to meet testing demands often\nforces developers to sacrifice speed, security, and/or money.\n\nWe want to help solve the challenges arising from agile development processes and growing code\nbases. “Together with DigitalOcean, we’ve taken the challenges of expensive and slow build\nprocesses head on—changing the way developers approach the build process,” said Sid Sijbrandij,\nour CEO and co-founder. “Complementing our collaborative platform, DigitalOcean is uniquely\nsuited to help us solve these problems as it can spin up new, provisioned servers in\nunder a minute, an industry record. Developers can have the needed resources simply and\nimmediately for testing and launching their code.”\n\nTo further support the needs of developers, in late March we introduced a new autoscaling\nfeature to our existing GitLab Runner. GitLab Runner is a hosted application that processes\nbuilds. This new feature, called [GitLab Runner Autoscale](/releases/2016/03/29/gitlab-runner-1-1-released/), enables you to automatically spin up\nnew instances (and wind them down) as needed. This dynamic availability makes it faster, safer\nand more affordable for you to run your builds in parallel. While instances can be hosted at all\nthe major cloud providers, DigitalOcean is uniquely suited to support this autoscaling feature.\nWith the fastest start in the industry, DigitalOcean can make new instances available in under a\nminute versus up to eight minutes on a leading cloud platform.\n\n## Benefits to Developers\n\nDigitalOcean has made tremendous strides in supporting the development community with a simple\nand scalable cloud computing solution. DigitalOcean’s dedication to simplicity and scale\nperfectly aligns with GitLab’s focus on delivering a code collaboration tool that makes it\neasier for developers to code, test, and deploy together. Our goal in partnering with\nDigitalOcean was to make continuous integration fast, secure, and cost-effective. We hope that\nthis partnership will offer the following benefits:\n\n* Speed: You no longer have to wait to test your code. Running tests can take multiple hours,\n  especially if it’s the end of the sprint and your tests are the last one in the queue.\n  Now, you can scale your Runners up to test in parallel.\n* Security: Test your code in a controlled and safe environment. After the machine\n  runs the test, it’s discarded to ensure security.\n* Affordability: Save money by only paying for servers when you use them.\n\nBen Uretsky, CEO and co-founder of DigitalOcean, is equally excited about the benefits this\npartnership brings to developers. “We want to make it easier for teams building and scaling\ndistributed applications in the cloud,” he said. “This partnership with GitLab enhances the open-\nsource, collaborative approach to development.”\n\n## Start using GitLab + DigitalOcean Today\n\nIf you’re not a GitLab.com customer, simply [create a GitLab.com account](https://gitlab.com/users/sign_in) to get free Runners\nfor your public and private repositories.\n\nFor existing GitLab.com users, great news, [your Runners are powered by DigitalOcean][rundo] and are\ncompletely free.\n\nFor GitLab Community Edition users, use the promotional code `GitLab10` to receive a $10\ncredit*, when creating a new DigitalOcean account.\n\nFor GitLab Enterprise Edition users, you'll receive an email with a unique promo for\na $250 credit* to use to host your own Runners on DigitalOcean.\n\n**Note: Promotion code available for new DigitalOcean customers only.*\n\n[rundo]: /blog/shared-runners/\n\n## Need help setting up your Runners?\n\nFor help setting up your GitLab Runners, read the tutorial documentation,\n[How to set up GitLab Runner on DigitalOcean](/blog/how-to-set-up-gitlab-runner-on-digitalocean/).\n",{"slug":4954,"featured":6,"template":683},"gitlab-partners-with-digitalocean-to-make-continuous-integration-faster-safer-and-more-affordable","content:en-us:blog:gitlab-partners-with-digitalocean-to-make-continuous-integration-faster-safer-and-more-affordable.yml","Gitlab Partners With Digitalocean To Make Continuous Integration Faster Safer And More Affordable","en-us/blog/gitlab-partners-with-digitalocean-to-make-continuous-integration-faster-safer-and-more-affordable.yml","en-us/blog/gitlab-partners-with-digitalocean-to-make-continuous-integration-faster-safer-and-more-affordable",{"_path":4960,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4961,"content":4966,"config":4971,"_id":4973,"_type":17,"title":4974,"_source":18,"_file":4975,"_stem":4976,"_extension":21},"/en-us/blog/webcast-continuous-integration",{"title":4962,"description":4963,"ogTitle":4962,"ogDescription":4963,"noIndex":6,"ogImage":4927,"ogUrl":4964,"ogSiteName":671,"ogType":672,"canonicalUrls":4964,"schema":4965},"Join us for a live tutorial about GitLab CI","Join the GitLab CI team to ask questions and find out how to get the most out of the built-in continuous integration with GitLab.","https://about.gitlab.com/blog/webcast-continuous-integration","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Join us for a live tutorial about GitLab CI\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Heather McNamee\"}],\n        \"datePublished\": \"2016-03-28\",\n      }",{"title":4962,"description":4963,"authors":4967,"heroImage":4927,"date":4969,"body":4970,"category":14},[4968],"Heather McNamee","2016-03-28","\n\nSince GitLab 8.0, GitLab CI is an integrated part of GitLab. This web application\nmanages projects/builds and provides a nice user interface.\n\nIn our next webcast on April 14th, we'll take a look using continuous\nintegration in GitLab. Join the GitLab CI team to ask questions and find out\nhow to get the most out of the built-in continuous integration with GitLab.\n\n- Date: Thursday, April 14, 2016\n- Time: 9am PDT; 12pm EST; 5pm BST (British Standard time); (16:00 UTC)\n- [Register here][webcast]\n\nCan't make it? Register anyway, and we'll send you a link to watch it later.\n\n\u003C!-- more -->\n\n## Common questions about GitLab CI\n\nI have recently presented at meetups about GitLab, and CI generates lots of questions.\nThis is literally a list of questions I was asked at a recent Ruby meet-up:\n\n- Is it included in both CE (Community Edition) and EE (Enterprise Edition)? Yes!\n- Is GitLab CI free both on-premises and on GitLab.com? Yes!\n- Connecting Runners is free and I can use as many as I like? Yes!\n- Is it easy to set up and configure the Runners? Yes!\n- Are there Shared Runners I can use on GitLab.com? Yes!\n- Are you sure it's really free? Yes!\n\nI think mostly people were quite surprised and also delighted to see\nhow easy it was to configure GitLab CI. And of course a little incredulous that\nit's actually all built-in and free.\nNow you're probably wondering how to get started with it. Do join us\nfor the webcast, we'd love to hear your questions.\n\n## Find out more about GitLab CI\n\nVisit the [documentation to find out how to get started][ci-docs].\n\nWe've posted some great tutorials recently, check them out if you've missed them:\n\n- [Setting up GitLab Runner For Continuous Integration][blog-ios]\n- [Setting up GitLab CI for iOS projects][blog-runner]\n\nBenefits of [GitLab CI][benefits]\n\n- **Multi-platform:** You can execute builds on Unix, Windows and macOS.\n- **Multi-language:** Build scripts are command line driven and work with Java, PHP, Ruby, C, and any other language.\n- **Stable:** Your builds run on a different machine than GitLab.\n- **Parallel builds:** GitLab CI splits builds over multiple machines, for fast execution.\n- **Realtime logging:** A link in the merge request takes you to the current build log that updates dynamically.\n- **Versioned tests:** A [.gitlab-ci.yml file](http://doc.gitlab.com/ce/ci/yaml/README.html) that contains your tests, allowing everyone to contribute changes and ensuring every branch gets the tests it needs.\n- **Continuous Delivery (CD):** Continuous delivery and deployment are easy with multiple types of jobs, environmental variables and the [dpl gem](http://doc.gitlab.com/ci/deployment/README.html).\n\nWe can't wait to help you get started. Do you have any burning questions or\ndemos you'd like to see? Please share them in the comments!\nWe can cover them in our live webcast.\n\nSee you there!\n\n[benefits]: /solutions/continuous-integration/ [blog-ios]: /blog/setting-up-gitlab-ci-for-ios-projects/\n[blog-runner]: /blog/gitlab-runner-with-docker/\n[ci-docs]: http://doc.gitlab.com/ce/ci/\n[newsletter]: /company/contact/#newsletter\n[webcast]: http://page.gitlab.com/apr-2016-gitlab-intro-ci-webcast.html\n",{"slug":4972,"featured":6,"template":683},"webcast-continuous-integration","content:en-us:blog:webcast-continuous-integration.yml","Webcast Continuous Integration","en-us/blog/webcast-continuous-integration.yml","en-us/blog/webcast-continuous-integration",{"_path":4978,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4979,"content":4984,"config":4989,"_id":4991,"_type":17,"title":4992,"_source":18,"_file":4993,"_stem":4994,"_extension":21},"/en-us/blog/gitlab-look-at-the-fair-source-license",{"title":4980,"description":4981,"ogTitle":4980,"ogDescription":4981,"noIndex":6,"ogImage":4927,"ogUrl":4982,"ogSiteName":671,"ogType":672,"canonicalUrls":4982,"schema":4983},"GitLab Looked at the Fair Source License","At GitLab we have taken a close look at the Fair Source license to determine if it could apply to our situation.","https://about.gitlab.com/blog/gitlab-look-at-the-fair-source-license","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Looked at the Fair Source License\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Paul Machle\"}],\n        \"datePublished\": \"2016-03-24\",\n      }",{"title":4980,"description":4981,"authors":4985,"heroImage":4927,"date":4987,"body":4988,"category":14},[4986],"Paul Machle","2016-03-24","\n\nFunding an open source project and maintaining an organization to sustain that\nproject is a challenge. We've chosen an open-core model which means we have an\nMIT licensed open core, GitLab Community Edition (CE), and an extended GitLab\nEnterprise Edition (EE) for which we sell a license key to use. In this post\nwe will look at the Fair Source license.\n\n\u003C!--more-->\n\nOne of the key issues with commercializing open source software is licensing.\nThere are great examples of open source licenses which allow code to be viewable\nand modifiable. There are many examples of proprietary licenses which protect\nintellectual property and don't even allow users to view the source code.\nHowever, what license is appropriate for a project like GitLab in which users can view\nthe EE code, but pay to use it?\n\nThe Fair Source license aims to address that. On [Fair.io](https://fair.io/)\nthe license is summarized:\n\n> \"The Fair Source License allows everyone to see the source code and makes the\nsoftware free to use for a limited number of users in your organization.\nIt offers some of the benefits of open source while preserving the ability to\ncharge for the software.\"\n\nRecently my colleague, [Sytse](https://twitter.com/sytses) met Quinn Slack,\nco-founder and CEO of Sourcegraph which pioneered the Fair Source license. He\nsuggested we should review this.\n\nAt GitLab we have taken a close look at the [Fair Source license](https://fair.io/)\nto determine if it could apply to our situation.  We are very supportive of the\nFair Source license and business model and believe that it will have broad acceptance\ninto the market.\n\nWe evaluated the Fair Source license for use with our Enterprise offering.  In this\ncase there could be an application of the Fair Use license - i.e. allow up to a\ncertain number of users to use the product for free and then charging users once\nthey exceed a threshold. We already have a CE version that is used by more than\n100,000 organizations, in many cases with thousands of users. Given that we already\nhave a CE product, a free evaluation period and a free GitLab.com offering we felt\nthat introducing yet another model for using GitLab would create too much confusion\nin the market.  \n\nIn other aspects of licensing we have embraced the principles of the Fair Source\nlicense through allowing users to modify and publish patch releases both as fully\nlicensed customers which includes those users covered by an evaluation license.\nWe are open to suggestions on how we can do better on our\n[Enterprise Edition Source License](https://gitlab.com/gitlab-org/gitlab-ee/blob/master/LICENSE).\n",{"slug":4990,"featured":6,"template":683},"gitlab-look-at-the-fair-source-license","content:en-us:blog:gitlab-look-at-the-fair-source-license.yml","Gitlab Look At The Fair Source License","en-us/blog/gitlab-look-at-the-fair-source-license.yml","en-us/blog/gitlab-look-at-the-fair-source-license",{"_path":4996,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":4997,"content":5002,"config":5007,"_id":5009,"_type":17,"title":5010,"_source":18,"_file":5011,"_stem":5012,"_extension":21},"/en-us/blog/gitlab-enterprise-edition-price-change",{"title":4998,"description":4999,"ogTitle":4998,"ogDescription":4999,"noIndex":6,"ogImage":967,"ogUrl":5000,"ogSiteName":671,"ogType":672,"canonicalUrls":5000,"schema":5001},"GitLab Enterprise Edition price change","We are announcing an update to pricing for GitLab Enterprise Edition. We have replaced the three subscription plans with one simplified plan.","https://about.gitlab.com/blog/gitlab-enterprise-edition-price-change","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Enterprise Edition price change\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Chad Malchow\"}],\n        \"datePublished\": \"2016-03-21\",\n      }",{"title":4998,"description":4999,"authors":5003,"heroImage":967,"date":5005,"body":5006,"category":14},[5004],"Chad Malchow","2016-03-21","\n\nToday we are announcing an update to pricing for GitLab Enterprise Edition. We have replaced the three subscription plans (Basic, Standard, and Plus) with one simplified plan.\nPlease visit our [Pricing page](/pricing/) for more information, or read on for a summary.\n\n\u003C!--more-->\n\n### What has changed?\n\nPreviously, we had a minimum seat purchase, which required you to buy\n10 seats for the Basic package and 100 seats for Standard and Plus.\nNow we've removed the seat minimums so you can purchase a [GitLab Enterprise Edition](/enterprise/) (EE) license per-seat.\n\nThe price per seat will remain the same, $39 per year per seat.\nThis is the same price as the Basic Plan.\n\nWe will now offer Premium Support; which includes 24x7 emergency support, two training workshops,\nupgrade assistance, support for High Availability and direct access to GitLab's internal chat channel for support, as add-on Products to a\nGitLab Enterprise Edition license. Premium Support was previously part of our Standard Subscription and did not include training workshops or direct access to support team.\nThe cost for Premium Support will be $9,900/year and $99 per seat over 100 seats,\nwith a maximum charge of $50,000.\n\n### Why we are changing pricing now?\n\nWe're doing this for a number of reasons:\n\n- We want to enable people to order individual licenses. Now, if you need 2 licenses\nyou don't need to buy a pack of 10 or if you need 104 you don’t need to buy two licenses of 100.\n- We want to avoid raising the price of our basic package.\n- We will also be offering additional Products for organizations to purchase with their EE subscription. Products will be specific features which certain organizations will find valuable. We want to charge only the people that use these Products instead of raising the price for everyone. An example of an additional Product, is [GitLab Geo](http://doc.gitlab.com/ee/gitlab-geo/README.html) for $99/year/user.\n- We want to charge more for 24/7 support.\n- Our plus package wasn't customizable enough for what our customers were requesting.\n\n### What does this mean for our current clients?\n\n- We will honor all current contracts, until their renewal, providing them the support they signed up for.\n- Existing clients can renew their subscription early and lock in old\npricing by [contacting our sales team](/sales/).\nDeadline for early renewals is April 30, 2016.\n- Existing customers get 50% discount for first year of premium support.\n- Current Plus subscribers get all future Products that work with an Enterprise Edition license for FREE while they are on the Plus plan.\n\n### Examples of how this pricing might affect you\n\n- Currently on Basic with 3 users? Your cost decreases from $390 to $117.\n- Currently on Basic with 10 users? Your cost stays the same, $390.\n- Currently on Standard with 100 users with Premium Support? Your cost increases from $4900 to $8850 (with the 50% discount)\n- Currently on Standard with 110 users with Premium Support? Your cost decreases from $9800 to $9735 (with the 50% discount)\n- Currently on Standard with 150 users with no support? Your cost decreases from $9800 to $5850\n\n[pricing]: /pricing/\n",{"slug":5008,"featured":6,"template":683},"gitlab-enterprise-edition-price-change","content:en-us:blog:gitlab-enterprise-edition-price-change.yml","Gitlab Enterprise Edition Price Change","en-us/blog/gitlab-enterprise-edition-price-change.yml","en-us/blog/gitlab-enterprise-edition-price-change",{"_path":5014,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5015,"content":5021,"config":5025,"_id":5027,"_type":17,"title":5028,"_source":18,"_file":5029,"_stem":5030,"_extension":21},"/en-us/blog/gitlab-todos-feature-highlight",{"title":5016,"description":5017,"ogTitle":5016,"ogDescription":5017,"noIndex":6,"ogImage":5018,"ogUrl":5019,"ogSiteName":671,"ogType":672,"canonicalUrls":5019,"schema":5020},"Feature Highlight: Todos","In this blog post I'll guide you through the Todos feature we introduced in GitLab 8.5 and also tell you how this feature came to life.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684608/Blog/Hero%20Images/taking-notes.jpg","https://about.gitlab.com/blog/gitlab-todos-feature-highlight","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Feature Highlight: Todos\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Douglas Alexandre\"}],\n        \"datePublished\": \"2016-03-02\",\n      }",{"title":5016,"description":5017,"authors":5022,"heroImage":5018,"date":5023,"body":5024,"category":14},[908],"2016-03-02","\n\nIn this blog post I'll guide you through the \"Todos\" feature we introduced in\n[GitLab 8.5](/releases/2016/02/22/gitlab-8-5-released/)\nand also tell you how this feature came to life.\nWe'll also talk about how you can contribute to GitLab.\n\n\u003C!-- more -->\n\n### First let’s look at this feature\n\nWhen you log into GitLab, you'll want to see where you should spend your time,\nwhere your team members need help, where you need to take some action, or what\nyou need to keep an eye on. All without the mess of a huge pile of e-mail\nnotifications.\n\nWhen an issue or merge request is assigned to you, or when you are `@mentioned`\nin a comment, this triggers a notification and you may get an e-mail, depending\non your notification settings. Starting from GitLab 8.5, these actions will\nalso add a notice in your Todos list, which you can access by clicking the\nround gray icon next to the search bar in the upper right corner.\n\n![Todos screenshot showing a list of items to check on](https://about.gitlab.com/images/blogimages/todos-screenshot.jpg)\n\nYou can then respond to the todo by performing an action to the corresponding\nissue or merge request. This action can include changing the milestone, adding\na label, commenting on the issue and pretty much everything that adds extra\ninformation to the issue/merge request.\n\nIn case where you think no action is needed, you can manually mark the todo as\n**Done** and it will disappear from your Todos list.\n\nIn order for a todo to be marked as done, the action must be coming from you.\nSo, if you close/merge the related issue or merge request yourself, and you had\na todo for that, it will automatically get marked as done. On the other hand,if\nsomeone else closes, merges or takes action on the issue or merge request, your\ntodo will remain pending. This makes sense because you may need to give\nattention to an issue even if it has been resolved.\n\nAnother thing is that you won't have a gazillion Todos about the same issue or\nmerge request. There is just one todo per issue or merge request, you won’t be\nannoyed repeatedly.\n\nNext, let’s see how this feature came to life.\n\n### How we developed this feature\n\nIt was just a few weeks before the 8.5 release when\n[Dmitry](https://twitter.com/dzaporozhets) asked me to work on this feature.\nIn fact, that was a lot of work to be done in such a short time and I actually\ndelivered this task on the last release candidate before our release day.\nAs it turned out, people were quite surprised and happy to have this feature in\n8.5.\n\nThere had been a long discussion about this feature, but no one had touched it\nyet. The original proposal was very complicated, there were a lot of comments\non the issue too, with a more active discussion in the last two months.\n\nFinally, after considering all the options,\n[Dmitry commented on the issue][comment] and greatly simplified it.\n\nI was excited about taking on the challenge. Not only because I knew it would\nbe an important feature, but it would also be a feature that most people will\nuse every day. This is the second major feature I've worked on since I started\nat GitLab in December. Previously, I had worked on the GitHub import project\nwhich came out in GitLab 8.4.\n\nI needed to learn quite a lot of the GitLab codebase in order to create this\nfeature. And then, while I was reading the code, I was surprised to discover it\nwas going to be much easier than I thought. My epiphany was that we already had\nthe Activity feed system in place which I could reuse. As it turned out, it was\ngoing to be very easy to implement this feature.\n\nAt the beginning, I spent the first week reading the code, understanding how\nthe system worked, discovering the points that we needed to trigger a todo. I\nwrote some guidelines about what I needed to achieve and then I started writing\nthe actual code by the end of the week. Yep, most of the coding was done in one\nweek.\n\nAt first, I needed to investigate how the Activity feed system works.\n\n![Screenshot of activity feed](https://about.gitlab.com/images/blogimages/activity-feed-screenshot.jpg)\n\nThen, I plugged in another service to trigger the todo when an issue or merge\nrequest is assigned to someone, or when someone is `@mentioned` in a comment or\nthe issue description. After this, I just needed to make sure that when someone\ncompleted whatever they thought is needed on the issue or merge request, the\ntodo will be marked as **Done**.\n\nDepending on the action that someone made on the issue or merge request, we\nneed to know exactly what attributes were changed. This is specially important\nto know when Todos are automatically marked as **Done**.\n\nTo know what changed inside a issue or merge request, we used the\n[Rails ActiveModel::Dirty API][dirty] that allows us to quick track what\nattributes on a model have changed, even after the model was saved.\n\nThe `ActiveModel::Dirty` works very well, except that it doesn't track changes\non associations. So how we determine what changed inside the association? For\nexample, how to check if a label was added, or removed from an issue or merge\nrequest? To accomplish this, we came with a boring solution, where we receive\nthe old items of the association through a parameter, and compare it with\nthe current association to check if something has changed.\n\nThe method that checks if at least one valid attribute has changed, is the\nfollowing:\n\n```ruby\ndef has_changes?(issuable, options = {})\n  valid_attrs = [:title, :description, :assignee_id, :milestone_id, :target_branch]\n\n  attrs_changed = valid_attrs.any? do |attr|\n    issuable.previous_changes.include?(attr.to_s)\n  end\n\n  old_labels = options[:old_labels]\n  labels_changed = old_labels && issuable.labels != old_labels\n\n  attrs_changed || labels_changed\nend\n```\n\nA quick note about this code snippet is that it will run _after_ the model was\nsaved, so `previous_changes` is the method that we need to call, and it returns\na hash with the attributes that were changed before the model was saved.\n\nWe can see on the following snippet that other GitLab features, like\nthe system note and the notification service, also use this API to trigger an\naction after certain attributes have changed:\n\n```ruby\nif issue.previous_changes.include?('assignee_id')\n  create_assignee_note(issue)\n  notification_service.reassigned_issue(issue, current_user)\n  todo_service.reassigned_issue(issue, current_user)\nend\n```\n\nTo get an idea about the points that trigger an action related to Todos,\nyou can take a look at the source code of the [TodoService] class, that\ndescribes the expected behavior for each of these points.\n\nMy colleague, [Douwe](https://twitter.com/DouweM), guided me through some of\nthese edge cases and helped me a lot with daily code reviews. Together we\nconsidered the aspects of the functionality. I had to make many changes during\nthe review period, but that worked out well in the end.\n\nSome people asked for changes which we thought didn't fit for what we were\ntrying to achieve. There was for example a request to be notified of Todos on\ncommits. We ultimately decided against this request since there are no clear\nactions to take on a commit, except for replying to a comment. Most of the time\nyou’re actually working on an issue or a merge request, this is where the action\nhappens.\n\n### About that name\n\nThere was a long discussion about naming the feature. In the beginning this\nfeature was called 'Notification System'. Then 'Action Center'. Then 'Todos'.\nThen 'Tasks', and finally 'Task Queue' was chosen.\n\nBut Douwe and Sytse discussed the naming for the umpteenth time, and concluded\nthat 'Todos' would be the best name since 'Tasks' is already used (by us and\nGitHub) for the Markdown checklist.\n\nTodo makes more sense to me than a Task, you just need to take a look at it.\nTasks are obligations. A Todo is just a reminder, and as such, maybe it is\nrelevant for you and you'll take a look or maybe you'll just mark it as done.\n\n### Conclusion\n\nI'm really happy to have worked on a feature that people will use every day!\nIt's a simple feature and even though we've only been using it a few days,\nwe can't imagine how we managed to work without it.\n\nThis Tweet from a user pretty much sums it up.\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">.\u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a>&#39;s new ToDos feature is simply amazing. Simple feature but something you cannot live without once you tried it.\u003C/p>&mdash; Tero Tasanen (@ttasanen) \u003Ca href=\"https://twitter.com/ttasanen/status/702249244950974464\">February 23, 2016\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\nFor more information you can [read our documentation][doc].\n\n",{"slug":5026,"featured":6,"template":683},"gitlab-todos-feature-highlight","content:en-us:blog:gitlab-todos-feature-highlight.yml","Gitlab Todos Feature Highlight","en-us/blog/gitlab-todos-feature-highlight.yml","en-us/blog/gitlab-todos-feature-highlight",{"_path":5032,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5033,"content":5039,"config":5043,"_id":5045,"_type":17,"title":5046,"_source":18,"_file":5047,"_stem":5048,"_extension":21},"/en-us/blog/gitlab-swag-shop-opened",{"title":5034,"description":5035,"ogTitle":5034,"ogDescription":5035,"noIndex":6,"ogImage":5036,"ogUrl":5037,"ogSiteName":671,"ogType":672,"canonicalUrls":5037,"schema":5038},"GitLab Swag Shop is Open!","We're delighted to announce GitLab Swag Shop is now opened! We're starting with essentials: Some nifty t-shirts and stickers.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684601/Blog/Hero%20Images/tshirts.jpg","https://about.gitlab.com/blog/gitlab-swag-shop-opened","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Swag Shop is Open!\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Heather McNamee\"}],\n        \"datePublished\": \"2016-02-29\",\n      }",{"title":5034,"description":5035,"authors":5040,"heroImage":5036,"date":5041,"body":5042,"category":14},[4968],"2016-02-29","\n\nWe're delighted to announce [GitLab Swag Shop](https://gitlab.myshopify.com/) is now opened!\nWe're starting with essentials: Some nifty t-shirts and stickers.\n\nUp-to-date information about GitLab Swag\ncan be found in our [Field Marketing Handbook](/handbook/marketing/field-marketing/).\n\nFollow [@GitLab](https://twitter.com/gitlab/) on Twitter to stay tunned for updates and promotions!\n\n\u003C!-- more -->\n\nWe know there's lots of love for GitLab, and we're delighted to hear\nso many of you want to share your enthusiasm.\n\n## Swag Portrait Contest Winners\n\nWe ran a contest over the holiday time to get a peek at how people\nwere using their stickers on laptops.\nThanks so much for sharing photos!\n\nAfter looking at the entries, we decided that *everyone* should win a\nprize for participating, so all participants will be getting GitLab stickers!\nPlease email us at community@ our domain and verify your ID by @mentioning us and\nlinking to this  blog post via twitter.\n\nThere's two lucky prize winners who each won a t-shirt.\nContact us at community@ our domain name to claim your prize!\n\nFabio wins for his incredible layering technique! Congrats!\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">This is my notebook lid \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash\">#swagportrait\u003C/a> \u003Ca href=\"https://t.co/LRkfpDZdyR\">pic.twitter.com/LRkfpDZdyR\u003C/a>\u003C/p>&mdash; Fabio Beneditto (@FabioBeneditto) \u003Ca href=\"https://twitter.com/FabioBeneditto/status/684023062065475584\">January 4, 2016\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\nAnd we also did a random draw, and Vincent won! Congrats!\n\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Still got some room left. \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash\">#swagportrait\u003C/a> \u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a> \u003Ca href=\"https://t.co/9DkteSyKzT\">pic.twitter.com/9DkteSyKzT\u003C/a>\u003C/p>&mdash; Vincent V.d Kussen (@vincentvdk) \u003Ca href=\"https://twitter.com/vincentvdk/status/690879663183380480\">January 23, 2016\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\nAlso, our [GitLab MVPs](/community/mvp/) will be receiving a special present soon.\n\n## Swag Portrait contest entries - everyone's a winner!\n\nLooking at these laptops reminds me of seeing skateboards plastered in stickers.\nIt's cool to see how many different communities and projects people\nare fans of! Thanks so much!\n\n{::options parse_block_html=\"false\" /}\n\n\u003Cdiv class=\"center\">\n\n\u003C!-- first tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">New laptop... :-( \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> \u003Ca href=\"https://t.co/QFC4F3h6K2\">pic.twitter.com/QFC4F3h6K2\u003C/a>\u003C/p>&mdash; Patrik Votoček (@PatrikVotocek) \u003Ca href=\"https://twitter.com/PatrikVotocek/status/682678739604508676?ref_src=twsrc%5Etfw\">December 31, 2015\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\n\u003C!-- second tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">So happy nowadays with \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> that I would cover github&#39;s sticker if I had github&#39;s sticker  =) \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> \u003Ca href=\"https://t.co/n7Z7jguffc\">pic.twitter.com/n7Z7jguffc\u003C/a>\u003C/p>&mdash; Alvaro Gonzalez (@lvarin) \u003Ca href=\"https://twitter.com/lvarin/status/682677582970630144?ref_src=twsrc%5Etfw\">December 31, 2015\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- third tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">My humble \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> with  \u003Ca href=\"https://twitter.com/golang?ref_src=twsrc%5Etfw\">@golang\u003C/a> \u003Ca href=\"https://twitter.com/Ionicframework?ref_src=twsrc%5Etfw\">@Ionicframework\u003C/a> \u003Ca href=\"https://twitter.com/gulpjs?ref_src=twsrc%5Etfw\">@gulpjs\u003C/a> \u003Ca href=\"https://twitter.com/angularjs?ref_src=twsrc%5Etfw\">@angularjs\u003C/a> 🎉🎉🎉 \u003Ca href=\"https://t.co/iOGqgH7bl2\">pic.twitter.com/iOGqgH7bl2\u003C/a>\u003C/p>&mdash; Alvaro Viebrantz (@alvaroviebrantz) \u003Ca href=\"https://twitter.com/alvaroviebrantz/status/682622189896642560?ref_src=twsrc%5Etfw\">December 31, 2015\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- fourth tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">There is a bit spare room left on my \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> for some \u003Ca href=\"https://twitter.com/hashtag/32c3?src=hash&amp;ref_src=twsrc%5Etfw\">#32c3\u003C/a> goodies. \\o/ \u003Ca href=\"https://t.co/Ph9g39XN8M\">pic.twitter.com/Ph9g39XN8M\u003C/a>\u003C/p>&mdash; Krawall-Ossi (@0x663030623472) \u003Ca href=\"https://twitter.com/0x663030623472/status/682552501745381376?ref_src=twsrc%5Etfw\">December 31, 2015\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- fifth tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">\u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> with the great \u003Ca href=\"https://twitter.com/java_hipster?ref_src=twsrc%5Etfw\">@java_hipster\u003C/a> sticker \u003Ca href=\"https://t.co/KdZAtXAlBM\">pic.twitter.com/KdZAtXAlBM\u003C/a>\u003C/p>&mdash; Frederik Hahne (@atomfrede) \u003Ca href=\"https://twitter.com/atomfrede/status/682551020036173825?ref_src=twsrc%5Etfw\">December 31, 2015\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- sixth tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-conversation=\"none\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">.\u003Ca href=\"https://twitter.com/nearlythere?ref_src=twsrc%5Etfw\">@nearlythere\u003C/a> Happy new year Heather!  \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> \u003Ca href=\"https://t.co/rAYvGeFWdq\">pic.twitter.com/rAYvGeFWdq\u003C/a>\u003C/p>&mdash; David Corbacho (@dcorbacho) \u003Ca href=\"https://twitter.com/dcorbacho/status/682540677314555904?ref_src=twsrc%5Etfw\">December 31, 2015\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- seventh tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">My \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> on my laptop :-) \u003Ca href=\"https://t.co/DjhTgRAAfB\">pic.twitter.com/DjhTgRAAfB\u003C/a>\u003C/p>&mdash; Iván López (@ilopmar) \u003Ca href=\"https://twitter.com/ilopmar/status/682537139796611076?ref_src=twsrc%5Etfw\">December 31, 2015\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- eighth tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-conversation=\"none\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">\u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> Lacking the tech sticker here \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> \u003Ca href=\"https://t.co/LqnuiNdEsk\">pic.twitter.com/LqnuiNdEsk\u003C/a>\u003C/p>&mdash; Daniel Groves 📷👻 (@danielsgroves) \u003Ca href=\"https://twitter.com/danielsgroves/status/682534134489714688?ref_src=twsrc%5Etfw\">December 31, 2015\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- ninth tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Hey \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a>, I need some new swag for my \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a>. \u003Ca href=\"https://twitter.com/thinkgeek?ref_src=twsrc%5Etfw\">@thinkgeek\u003C/a> \u003Ca href=\"https://t.co/XuhhGrBtP0\">pic.twitter.com/XuhhGrBtP0\u003C/a>\u003C/p>&mdash; :-/ (@venturewised) \u003Ca href=\"https://twitter.com/venturewised/status/691051215224967169?ref_src=twsrc%5Etfw\">January 24, 2016\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- tenth tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-conversation=\"none\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">\u003Ca href=\"https://twitter.com/vincentvdk?ref_src=twsrc%5Etfw\">@vincentvdk\u003C/a> \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> I keep mine clean \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> \u003Ca href=\"https://t.co/vQZCeul23F\">pic.twitter.com/vQZCeul23F\u003C/a>\u003C/p>&mdash; Serge van Ginderachter (@svg) \u003Ca href=\"https://twitter.com/svg/status/691004212856094720?ref_src=twsrc%5Etfw\">January 23, 2016\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- eleventh tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-conversation=\"none\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">\u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> here is my \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> \u003Ca href=\"https://t.co/NxOrGPJwhR\">pic.twitter.com/NxOrGPJwhR\u003C/a>\u003C/p>&mdash; jubianchi (@jubianchi) \u003Ca href=\"https://twitter.com/jubianchi/status/690980139740577792?ref_src=twsrc%5Etfw\">January 23, 2016\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- twelfth tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">This is my notebook lid \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> \u003Ca href=\"https://t.co/LRkfpDZdyR\">pic.twitter.com/LRkfpDZdyR\u003C/a>\u003C/p>&mdash; Fabio Beneditto (@FabioBeneditto) \u003Ca href=\"https://twitter.com/FabioBeneditto/status/684023062065475584?ref_src=twsrc%5Etfw\">January 4, 2016\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- thirteenth tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-conversation=\"none\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">\u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> I need replace this octocat 😀 \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> \u003Ca href=\"https://t.co/QBQGrKBP63\">pic.twitter.com/QBQGrKBP63\u003C/a>\u003C/p>&mdash; Rodrigo de Avila (@RodrigoAvila) \u003Ca href=\"https://twitter.com/RodrigoAvila/status/682716661665890305?ref_src=twsrc%5Etfw\">January 1, 2016\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- fourteenth tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Still got some room left. \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> \u003Ca href=\"https://t.co/9DkteSyKzT\">pic.twitter.com/9DkteSyKzT\u003C/a>\u003C/p>&mdash; Vincent Van der Kussen (@vincentvdk) \u003Ca href=\"https://twitter.com/vincentvdk/status/690879663183380480?ref_src=twsrc%5Etfw\">January 23, 2016\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- fifteenth tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">Hey \u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a>! Here&#39;s a \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> for you! \u003Ca href=\"https://t.co/ek389itXHB\">pic.twitter.com/ek389itXHB\u003C/a>\u003C/p>&mdash; Mathew Peterson (@mathewpeterson) \u003Ca href=\"https://twitter.com/mathewpeterson/status/684130486629740544?ref_src=twsrc%5Etfw\">January 4, 2016\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C!-- sixteenth tweet -->\n\u003Cblockquote class=\"twitter-tweet\" data-lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">.\u003Ca href=\"https://twitter.com/gitlab?ref_src=twsrc%5Etfw\">@gitlab\u003C/a> here&#39;s the \u003Ca href=\"https://twitter.com/hashtag/swagportrait?src=hash&amp;ref_src=twsrc%5Etfw\">#swagportrait\u003C/a> of my new laptop that has still a lot of room for new stickers \u003Ca href=\"https://t.co/pySR0r79sh\">pic.twitter.com/pySR0r79sh\u003C/a>\u003C/p>&mdash; Riccardo Padovani (@rpadovani93) \u003Ca href=\"https://twitter.com/rpadovani93/status/683301646353436672?ref_src=twsrc%5Etfw\">January 2, 2016\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\n\u003C/div>\n\nThanks for playing!\n",{"slug":5044,"featured":6,"template":683},"gitlab-swag-shop-opened","content:en-us:blog:gitlab-swag-shop-opened.yml","Gitlab Swag Shop Opened","en-us/blog/gitlab-swag-shop-opened.yml","en-us/blog/gitlab-swag-shop-opened",{"_path":5050,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5051,"content":5056,"config":5060,"_id":5062,"_type":17,"title":5063,"_source":18,"_file":5064,"_stem":5065,"_extension":21},"/en-us/blog/webcast-wrapup",{"title":5052,"description":5053,"ogTitle":5052,"ogDescription":5053,"noIndex":6,"ogImage":4927,"ogUrl":5054,"ogSiteName":671,"ogType":672,"canonicalUrls":5054,"schema":5055},"GitLab 8.5 Release Webcast and step-by-step GitLab workflow","In our latest webcast, we highlighted the new features in GitLab 8.5. This was a really feature-packed release.","https://about.gitlab.com/blog/webcast-wrapup","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab 8.5 Release Webcast and step-by-step GitLab workflow\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Heather McNamee\"}],\n        \"datePublished\": \"2016-02-26\",\n      }",{"title":5052,"description":5053,"authors":5057,"heroImage":4927,"date":5058,"body":5059,"category":14},[4968],"2016-02-26","\n\nIn our latest webcast, we highlighted the new features in [GitLab 8.5](/releases/2016/02/22/gitlab-8-5-released/).\nThis was a really feature-packed release.\n\n[Job van der Voort] gave a step-by-step tutorial of a workflow with GitLab.\nThis highlighted some of the new features in the context of collaboration.\nIf you're brand new to GitLab this is a quick introduction to how it works.\n\nSign up to our [newsletter](/company/contact/#newsletter)\nto find out about the next screencast!\n\n\u003C!-- more -->\n\nIn this webcast:\n\n- Walk-through: [GitLab 8.5 features](/releases/2016/02/22/gitlab-8-5-released)\n- Sidebar UI improvements\n- Todos list\n- Revert any Commit\n- GitLab Geo Alpha (EE)\n- Step by step: GitLab workflow in practice and GitLab Flow ([skip ahead](https://youtu.be/MGH7TdZA9Rg?t=1225))\n- Community news! ([skip ahead](https://youtu.be/MGH7TdZA9Rg?t=2643))\n- Q&A: Questions from webcast attendees answered live\n\n## Webcast Recording\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/MGH7TdZA9Rg\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n\n## Webcast Slides\n\n\u003Cscript async class=\"speakerdeck-embed\" data-id=\"4e2cf464498d4e8cbd1def66de6d450c\" data-ratio=\"1.77777777777778\" src=\"//speakerdeck.com/assets/embed.js\">\u003C/script>\n\n## Love webcasts? Wondering how to make the most of Git at your organization?\n\n[Sign up for our webcast](http://ow.ly/YMvsM) in partnership with Perforce!\n\n[Job van der Voort], VP of Product will be presenting with Matt Attaway, VP of\nCommunity from Perforce. They will discuss managing Git teams/projects; issue tracking & wikis;\nintegrating CI into dev; integration testing and advantages of the mono repo.\n\nThere are two timeslots, but [sign up anyway](http://ow.ly/YMvsM), and you can get the on-demand link to watch anytime.\n\n- Wed, March 2nd, 3 pm GMT | 7am PT\n- Wed, March 2nd 10 am PT | 1pm ET\n\n## Feedback welcome!\n\nThere were lots of feature proposals in the Q+A this time.\nWe couldn't address them all, but if you do have a feature proposal,\nplease check out the project tracker for\n[GitLab CE](https://gitlab.com/gitlab-org/gitlab-ce/issues) or\n[GitLab EE](https://gitlab.com/gitlab-org/gitlab-ee/issues), and see if someone\nhas already posted a similar idea.\nYou can vote on feature proposals which you like, and that helps us prioritize.\nIf you don't find an existing proposal, please add one!\n\nWe develop completely in the open so if you want to know how to find out what\nwe're working on and planning, check out my post about [locating issues and finding the roadmap](/blog/future-direction-gitlab/) of development at GitLab.\n\nYou can of course leave comments, attendees of the webcast will receive a survey form via email.\n\n[Job van der Voort]: https://twitter.com/Jobvo\n",{"slug":5061,"featured":6,"template":683},"webcast-wrapup","content:en-us:blog:webcast-wrapup.yml","Webcast Wrapup","en-us/blog/webcast-wrapup.yml","en-us/blog/webcast-wrapup",{"_path":5067,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5068,"content":5074,"config":5079,"_id":5081,"_type":17,"title":5082,"_source":18,"_file":5083,"_stem":5084,"_extension":21},"/en-us/blog/rails-girls-summer-of-code-2016",{"title":5069,"description":5070,"ogTitle":5069,"ogDescription":5070,"noIndex":6,"ogImage":5071,"ogUrl":5072,"ogSiteName":671,"ogType":672,"canonicalUrls":5072,"schema":5073},"Rails Girls Summer of Code 2016","We're delighted to announce that GitLab Community Edition has been accepted as a project for the upcoming Rails Girls Summer of Code.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684595/Blog/Hero%20Images/programmer1.jpg","https://about.gitlab.com/blog/rails-girls-summer-of-code-2016","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Rails Girls Summer of Code 2016\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Yorick Peterse\"}],\n        \"datePublished\": \"2016-02-23\",\n      }",{"title":5069,"description":5070,"authors":5075,"heroImage":5071,"date":5077,"body":5078,"category":14},[5076],"Yorick Peterse","2016-02-23","\n\nWe're delighted to announce that GitLab Community Edition has been accepted as a\nproject for the upcoming Rails Girls Summer of Code. Students will be working on\nimproving GitLab not only for [GitLab.com](https://gitlab.com) but for all GitLab users, be it\nindividuals or large corporations such as SpaceX, NASA, CERN, and IBM. A regular\nrelease interval means changes made by students will be available quickly,\ninstead of waiting in a queue for months.\n\n\u003C!--more-->\n\nTo make it easier for beginners to start certain issues are tagged with the\n[\"up-for-grabs\"][up-for-grabs] label. This label is used whenever an issue is\neasy enough for a beginner to work on. Other tasks may be worked on as well\ndepending on the amount of work, time, and experience of the students.\n\nTo ensure enough coaches are available we're aiming to have at least 2 coaches\nper student, ideally as close to the students as possible. However, the\nlogistics surrounding this won't be finalized until we know more about the\nlocation of the students. I myself have coached Rails Girls teams in the past\nand will be helping out this year as well.\n\nStudents are expected to have basic knowledge of both Ruby and Git. Coaches will\nhelp students with GitLab specifics such as setting up GitLab Community Edition.\n\nThe preferred location for students would be either the Americas or Europe as\nthe coaches involved are based in these continents. Students based in (or close\nto) Amsterdam, The Netherlands will also have the ability to meet with coaches\nin person if needed.\n\nStudents interested in working on GitLab should take a look at the\n[Rails Girls Summer of Code project page][project-page] as well as the\n[\"Application Guide\"][team-application-guide]. Those interested in helping\nout as a coach can take a look at the [\"Becoming a Coach\" guide][coach-guide].\n\n## Support Rails Girls Summer of Code\n\nWe're also proud to be [sponsors][sponsors] of this year's Summer of Code. Those\ninterested in sponsoring this year's Summer of code as well should take a look\nat the [crowdfunding campaign][campaign] which is now open!\n\nThe money raised by this campaign is used to help support teams and\nparticipants with full time scholarships.\n\n![Rails Girls Summer of Code](https://about.gitlab.com/images/blogimages/rgsoc_logo.png)\n\n[up-for-grabs]: https://gitlab.com/gitlab-org/gitlab-ce/issues?scope=all&sort=id_desc&state=opened&utf8=%E2%9C%93&label_name=up-for-grabs\n[project-page]: https://teams.railsgirlssummerofcode.org/projects/99-gitlab-community-edition\n[team-application-guide]: http://railsgirlssummerofcode.org/students/application/\n[coach-guide]: http://railsgirlssummerofcode.org/guide/coaching/\n[sponsors]: http://railsgirlssummerofcode.org/sponsors/\n[campaign]: http://railsgirlssummerofcode.org/blog/2016-02-23-crowdfunding-campaign-is-open\n",{"slug":5080,"featured":6,"template":683},"rails-girls-summer-of-code-2016","content:en-us:blog:rails-girls-summer-of-code-2016.yml","Rails Girls Summer Of Code 2016","en-us/blog/rails-girls-summer-of-code-2016.yml","en-us/blog/rails-girls-summer-of-code-2016",{"_path":5086,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5087,"content":5093,"config":5097,"_id":5099,"_type":17,"title":5100,"_source":18,"_file":5101,"_stem":5102,"_extension":21},"/en-us/blog/gitlab-diversity-sponsorship",{"title":5088,"description":5089,"ogTitle":5088,"ogDescription":5089,"noIndex":6,"ogImage":5090,"ogUrl":5091,"ogSiteName":671,"ogType":672,"canonicalUrls":5091,"schema":5092},"GitLab Offer Sponsorship of $500 for Diversity Events","In order to help to expand these initiatives, we’re offering $500 to any diversity in tech event globally.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665885/Blog/Hero%20Images/love-the-sun-gitlab.jpg","https://about.gitlab.com/blog/gitlab-diversity-sponsorship","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Offer Sponsorship of $500 for Diversity Events\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Ashley Smith\"}],\n        \"datePublished\": \"2016-02-02\",\n      }",{"title":5088,"description":5089,"authors":5094,"heroImage":5090,"date":5095,"body":5096,"category":14},[4730],"2016-02-02","\nNote: An earlier version of this post opened this sponsorship to anyone outside of New York and the Bay Area but we've removed that restriction.   \n\nImproving diversity in tech has become an important issue in the last few years.\nOrganizations and events tailored specifically for underrepresented groups\nare getting increasingly popular and it has been amazing to watch the progress\nin the tech world. While we aren’t completely on equal footing yet,\nthere are many people making great strides.\nI’ve attended and helped organize many of these events and would like to\nhelp broaden that reach to beyond the major tech centers of the U.S.\n\n\u003C!--more-->\n\nIn order to help to expand these initiatives, we’re offering $500 to any\ndiversity in tech event globally.\nIn order to gain sponsorship, please email us at community@gitlab.com with\nthe subject line “Diversity in tech” and include details about your event with a link to registration and any supporting documentation.\nYou can also review our [community sponsorship program and complete the form there](/community/sponsorship/).\n\nIf your event is in a city where we have a GitLab team-member, we’ll be happy\nto help coach or give a talk if possible.\nCheck out our [team map](/company/team/) to see where we are.\nJust let us know where you are and we’ll see how we can help.\n\nWe’ve already sponsored [RailsGirls](http://railsgirls.com/) events\nand [MeHackIt](http://mehackit.org/) and can’t wait to work with\neven more organizations globally.\n\nHappy hacking!\n",{"slug":5098,"featured":6,"template":683},"gitlab-diversity-sponsorship","content:en-us:blog:gitlab-diversity-sponsorship.yml","Gitlab Diversity Sponsorship","en-us/blog/gitlab-diversity-sponsorship.yml","en-us/blog/gitlab-diversity-sponsorship",{"_path":5104,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5105,"content":5110,"config":5114,"_id":5115,"_type":17,"title":5116,"_source":18,"_file":5117,"_stem":5118,"_extension":21},"/en-us/blog/webcast",{"title":5106,"description":5107,"ogTitle":5106,"ogDescription":5107,"noIndex":6,"ogImage":4421,"ogUrl":5108,"ogSiteName":671,"ogType":672,"canonicalUrls":5108,"schema":5109},"Our first webcast and our 50th release","On January 22nd we'll release our 50th monthly release. We want to take this time to celebrate this milestone with GitLab users.","https://about.gitlab.com/blog/webcast","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Our first webcast and our 50th release\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Heather McNamee\"}],\n        \"datePublished\": \"2016-01-13\",\n      }",{"title":5106,"description":5107,"authors":5111,"heroImage":4421,"date":5112,"body":5113,"category":14},[4968],"2016-01-13","\n\nOn January 22nd we'll release our 50th monthly release. We want to take this time to celebrate this milestone with GitLab users. You can join us for a [webcast](http://page.gitlab.com/Jan282016Webcast.html) the following week, Thursday, Jan 28th, 5pm (17:00) UTC; 12pm EST; 9am PS.\n\n\u003C!-- more -->\n\n\n## A walk-through tour\n\nJob van der Voort, our VP of Product, will give us a guided tour of the features of GitLab 8.4. These features include enhanced search capabilities and\nimproved importing from GitHub and GitLab.\n\nThere are also upgrades coming for popular features, such as GitLab CI and others. There are  improvements to artifact support, and the ability to add computing power with runner auto-queue. We're also working on CNAME support\nfor GitLab Pages, a feature in GitLab EE and available on GitLab.com.\n\n## A sneak peek!\n\nOK, it's hard to entice you with a \"sneak peek\" when [all of our development is in the open](/blog/future-direction-gitlab/).\nHowever, you will get an overview of the direction of GitLab, and where the project is heading.\n\nWe'll finish with a live Q+A with Job and Dmitriy Zaporozhets, the project founder and our CTO. They will also talk about how we manage the release process at GitLab, and what we've learned managing this project.\n\n\n## See you on the webcast\n\nWe hope to see you there, Thursday, January 28 at 5pm (17:00) UTC; 12pm EST; 9am PS.\n\n\u003Ca class=\"btn btn-primary\" href=\"http://page.gitlab.com/Jan282016Webcast.html\" role=\"button\">Register Now\u003C/a>\n",{"slug":4021,"featured":6,"template":683},"content:en-us:blog:webcast.yml","Webcast","en-us/blog/webcast.yml","en-us/blog/webcast",{"_path":5120,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5121,"content":5126,"config":5131,"_id":5133,"_type":17,"title":5134,"_source":18,"_file":5135,"_stem":5136,"_extension":21},"/en-us/blog/feature-highlight-wip",{"title":5122,"description":5123,"ogTitle":5122,"ogDescription":5123,"noIndex":6,"ogImage":967,"ogUrl":5124,"ogSiteName":671,"ogType":672,"canonicalUrls":5124,"schema":5125},"Feature Highlight: WIP","At GitLab we'll tell you to make small merge requests, review and merge often. But in the real world, you have to build a complex feature that requires weeks and thousands of changes.","https://about.gitlab.com/blog/feature-highlight-wip","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Feature Highlight: WIP\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Job van der Voort\"}],\n        \"datePublished\": \"2016-01-08\",\n      }",{"title":5122,"description":5123,"authors":5127,"heroImage":967,"date":5129,"body":5130,"category":14},[5128],"Job van der Voort","2016-01-08","\n\nAt GitLab we'll tell you to make small merge requests, review and merge\noften. But in the real world, you have to build a complex feature that\nrequires weeks and thousands of changes.\n\nHow can you still have all the advantages of code review, without actually\nmerging a half-baked feature? You make it WIP.\n\n\u003C!-- more -->\n\n## WIP First\n\nWIP, short for Work In Progress, is what you prepend to a merge request in\nGitLab, preventing your work from being merged.\nNext time you're working on a big feature, create a merge request after the\nvery first commit and give it a title starting with either `WIP` or `[WIP]`.\n\n![WIP merge request in GitLab 8.3](https://about.gitlab.com/images/8_3/wip.png)\n\nMention your colleague for a first review, while you keep on working.\nYou have all the power of a merge request, including GitLab CI that checks your code\nwhile you work, and no risk of an accidental merge.\n\n## WIP mentality\n\nBy opening a merge request at the earliest chance, you use one of\nopen source's most powerful tools: the opportunity for feedback.\n\nYour colleagues might not be bothered to do a deep review of unfinished code,\nbut even a glance can catch potential mistakes. Having a second set of eyes\nthinking about the problems you're solving always pays off.\n\nI encourage you to extend this mentality to your other work,\nprojects and pushes. Push something out *early* to receive feedback and\nto be steered in the right direction early on.\n\n## At GitLab Inc\n\nAt GitLab we prefer people to push things out quickly. We work with WIP merge\nrequests for complex features, like the [upcoming Elastic Search implementation](https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/109).\n\nMeanwhile, we encourage everyone to make decisions and changes as they think\nis appropriate. By sharing early on, collaboration is almost automatic.\n",{"slug":5132,"featured":6,"template":683},"feature-highlight-wip","content:en-us:blog:feature-highlight-wip.yml","Feature Highlight Wip","en-us/blog/feature-highlight-wip.yml","en-us/blog/feature-highlight-wip",{"_path":5138,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5139,"content":5145,"config":5149,"_id":5151,"_type":17,"title":5152,"_source":18,"_file":5153,"_stem":5154,"_extension":21},"/en-us/blog/future-direction-gitlab",{"title":5140,"description":5141,"ogTitle":5140,"ogDescription":5141,"noIndex":6,"ogImage":5142,"ogUrl":5143,"ogSiteName":671,"ogType":672,"canonicalUrls":5143,"schema":5144},"How to see into the future at GitLab","In this post we'll look at how you can find out about the direction of the project.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684561/Blog/Hero%20Images/road.png","https://about.gitlab.com/blog/future-direction-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"How to see into the future at GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Heather McNamee\"}],\n        \"datePublished\": \"2016-01-05\",\n      }",{"title":5140,"description":5141,"authors":5146,"heroImage":5142,"date":5147,"body":5148,"category":14},[4968],"2016-01-05","\n\nHappy new year, it's a fresh start! Are you making any resolutions? Any plans? Wouldn't it be great if you could see into the future? With GitLab, you can. Well, okay, you can see into the future of _development_ at GitLab, if nothing else. The plans and progress of feature proposals are developed in the open at GitLab. In this post we'll look at how you can find out about the direction of the project.\n\n\u003C!-- more -->\n\n## About GitLab’s Direction page\n\nGitLab’s [Direction page](/direction/) page has its own fans.\n\n\u003Cblockquote class=\"twitter-tweet\" lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">\u003Ca href=\"https://twitter.com/hashtag/OpenSource?src=hash\">#OpenSource\u003C/a> at its finest. Thank you \u003Ca href=\"https://twitter.com/gitlab\">@gitlab\u003C/a>. &#10;\u003Ca href=\"https://t.co/Zkl9Q4gWP0\">https://t.co/Zkl9Q4gWP0\u003C/a>\u003C/p>&mdash; Vasil Sarafov (@v45k0) \u003Ca href=\"https://twitter.com/v45k0/status/677139532215689219\">December 16, 2015\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\nPeople admire the transparency.\n\n\u003Cblockquote class=\"twitter-tweet\" lang=\"en\">\u003Cp lang=\"en\" dir=\"ltr\">GitLab keeps impressing me lately. Seems like they get community &amp; transparency in ways others have forgotten-\u003Ca href=\"https://t.co/k8YVLhQCEx\">https://t.co/k8YVLhQCEx\u003C/a>\u003C/p>&mdash; Kelly Watkins (@_kcwatkins) \u003Ca href=\"https://twitter.com/_kcwatkins/status/676917197709680640\">December 16, 2015\u003C/a>\u003C/blockquote>\n\u003Cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\">\u003C/script>\n\nGitLab’s Direction page is managed by the project leads who define the milestones and objectives which are a priority in each release. The developers on the team focus on these priority tasks, after they have addressed any urgent and important tasks such as security vulnerabilities.\n\nDmitriy [gave a detailed overview of the release process](/blog/gitlab-release-process/), which explains where the objectives fit in. On the Directions page, you see an overview of the current plans; and in the [repository itself](https://gitlab.com/gitlab-org/gitlab-ce/issues), you can see the actual objectives being worked on by the developers.\n\nWhat’s so radical about this?\n\nMost product companies do their feature development in secret, carefully protecting their plans. People are not used to this level of transparency in a software product. In closed-source projects, new changes might come in and blindside users. Even in the case of open source projects, suspicions can be raised as to the motivations behind certain features. Was this for a client? Was it right for the project?\n\nMeanwhile, the company managing the project, whether developing an open source product or not, is working hard to gain technical competitive advantage by keeping their development roadmaps a secret.\n\nWe hold no such storehouse of secret plans. It’s all right out there on the [Directions page](/direction/) and [the repository itself](https://gitlab.com/gitlab-org/gitlab-ce/issues).\n\nFor users this has a huge positive effect of allowing them to know what is planned and when they can expect it. For contributors it’s easy for them to see where to spend their effort for maximum effect.\n\nHere are some tips on finding out what is coming next at GitLab.\n\n## How to find out what's coming in future features\n\nIf you want to know what is coming up in future releases, check the [Directions page](/direction/).\n\nSome highlights for upcoming releases include:\n\n- More options for importing, exporting and migrating\n- The capability to search through all repositories on the instance\n- A notification center\n\nHighlighted issues are grouped by the release. Links to CE and EE next to the release numbers (example: 8.4 \u003Ca href=\"https://gitlab.com/gitlab-org/gitlab-ce/milestones/19\">CE\u003C/a>, \u003Ca href=\"https://gitlab.com/gitlab-org/gitlab-ee/milestones/6\">EE\u003C/a>) will take you to the related milestone so you can see all issues related to that release.\n\nThat is a great place to start to see into the future.\n\n## What is the status of a particular issue?\n\nBesides the list on the Direction page, you can see what is coming in future releases right from within GitLab.\n\nIssues that are planned for a specific release are assigned to a milestone, such as 8.5. These assignments are subject to change, however this gives you an idea of priority and plans.\n\n![GitLab issue queue showing milestone](https://about.gitlab.com/images/blogimages/blog-future-releases.jpg)\n\n## What’s being included in the upcoming release?\n\nIf you want to see what has been happening during the development of the next release, look at the CHANGELOG for a particular project, such as [GitLab CE](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG.md).\n\nThe CHANGELOG gets updated throughout the month as new merge requests get merged and new features become available in that release. From a few days before the 22nd, you'll have a more clear idea of what the next release will include.\n\n## Transparency\n\nSome software projects must be private for many legitimate reasons. Of course that is why many of our customers choose GitLab, so they can have full control of their on-premises installations.\n\nFor our project, there is no such requirement. In fact it's more important that GitLab demonstrates transparency in all we do. We do this by improving access to our development and continuing to work in a spirit of openness.\n\nI know I've personally had the experience of sending in feature requests to other projects or services, and I'm left feeling like they are going into a black hole. I want something more than an automated reply.\n\nSince we've moved in [feature proposals into the GitLab issue queue itself](/blog/improving-open-development-for-everyone/), it's easier for you to find out the status of feature proposals. It's also easier to see where the ideas originate all across the board.\n\nFor open source projects, suspicions might be raised about the direction of the project being too swayed by customers. It's a delicate balance we're trying to strike.\n\nEspecially as we navigate making GitLab into a viable, self-sustaining project, it means we do have requests coming from customers using our software. In the GitLab project you will come across issues marked \"[customer](https://gitlab.com/gitlab-org/gitlab-ce/issues?label_name=customer)\" to indicate requests by customers. The identity of the customer is always obscured.\n\nOverall this means it's easier to find out where issues arose from, and later on it is also easier for us to follow up with customers who originated the request.\nPeople are free to comment in the issues to help shape the issue.\nPeople are very welcome to contribute features to ensure everyone has them more quickly.\nWe believe this level of transparency is helpful for users, and also for encouraging contribution and collaboration.\n\n## Conclusion\n\nHopefully you've got a better idea of what is coming up in future releases at GitLab and how you can find out what is coming next. Okay, so it’s not a crystal ball, but we think it's pretty fantastic.\n",{"slug":5150,"featured":6,"template":683},"future-direction-gitlab","content:en-us:blog:future-direction-gitlab.yml","Future Direction Gitlab","en-us/blog/future-direction-gitlab.yml","en-us/blog/future-direction-gitlab",{"_path":5156,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5157,"content":5163,"config":5168,"_id":5170,"_type":17,"title":5171,"_source":18,"_file":5172,"_stem":5173,"_extension":21},"/en-us/blog/changes-to-githost",{"title":5158,"description":5159,"ogTitle":5158,"ogDescription":5159,"noIndex":6,"ogImage":5160,"ogUrl":5161,"ogSiteName":671,"ogType":672,"canonicalUrls":5161,"schema":5162},"Big changes coming to GitHost","Today we are announcing two big changes to the GitHost platform and to its plans and pricing.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684552/Blog/Hero%20Images/fireworks.jpg","https://about.gitlab.com/blog/changes-to-githost","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Big changes coming to GitHost\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Patricio Cano\"}],\n        \"datePublished\": \"2015-12-30\",\n      }",{"title":5158,"description":5159,"authors":5164,"heroImage":5160,"date":5166,"body":5167,"category":14},[5165],"Patricio Cano","2015-12-30","\n\nToday we are announcing two big changes to the GitHost platform and to its plans and pricing. The changes are intended\nto offer a better product with greater features and easier to use configuration options, to better reflect the storage\nand memory needs organizations have for a hosted instance of GitLab, and to make it sustainable for us to offer a service\nlike GitHost. Please read on for all the details.\n\n\u003C!-- more -->\n\n## Pricing changes\n\nAs of today, December 30th, 2015, the following changes will take effect:\n\n### New GitHost plans with greater capacity\n\nWe have added three new plans: Business (80GB SSD), Business Pro (160GB SSD), and Corporate (320GB SSD) to provide\norganizations greater storage and memory capacity. We have also replaced two of our smaller plans (Starter and\nDeveloper) with one plan: Developer (30GB SSD) to meet the needs of smaller teams.\n\nWe also still have the Startup plan (60GB SSD) which offers a suitable mid-range for medium-sized teams.\n\n![Plans](https://about.gitlab.com/images/githost/plans.png)\n\nWe wanted to increase the choices available, and to raise the price compared to our older plans in order to make GitHost\nsustainable. We plan on offering this service for a long time to come, and the old prices did not cover our cost to\nkeep the platform running.\n\n**What does this mean if you’re an existing subscriber?**\n\nFor current GitHost subscribers, you will be grandfathered for 2 years on your current plan and price. We also will\nextend a 40% discount off current prices, if you should choose to upgrade your plan at anytime within this 2 year period.\n\nAs of January, 2018 the new pricing for GitHost will apply to existing subscribers.\n\nIf you have questions about the changes or about pricing in general, please [contact us](/sales/).\n\n## New Features\n\n### GitLab Enterprise Edition is now available\n\nWe are making GitLab Enterprise Edition available within GitHost. Organizations needing deeper authentication and\nauthorization integration, fine-grained workflow management, extra server management options, and integration with their\ntool stack can now easily deploy an EE instance in minutes. Use of the Enterprise Edition requires you to have a valid\nlicense. If you would like to purchase GitLab Enterprise Edition, you may do so by going to\n[/pricing/](/pricing/).\n\n![CE & EE](https://about.gitlab.com/images/githost/ce-ee.png)\n\n### Omniauth Providers\n\nWith today's upgrade we are releasing a feature that will allow all users to configure any Omniauth provider supported\nby GitLab in the easiest way possible. Simply click on the icon of the provider you want to activate, fill in the\ndetails required and save your changes. You no longer need to edit the `gitlab.rb` file manually.\n\nAfter editing these details, a reconfigure of your instance will be required. To do this, simply click on the **Reconfigure**\nbutton on your instance view and all the configuration changes you made will be applied.\n\n![Omniauth Provider](https://about.gitlab.com/images/githost/omniauth.png)\n\n### LDAP\n\nEasy LDAP configuration has also been added to GitHost. The configuration is pretty similar to the Omniauth configuration,\nand if you have an Enterprise Edition instance, you can add more than one.\n\nLike with Omniauth, changes will not be automatically applied. You will need to run a manual reconfigure for changes to\ntake effect. This can be done in the main instance view.\n\n![LDAP Server](https://about.gitlab.com/images/githost/ldap.png)\n\n### Redesign\n\nAs you can see from the screenshots above, the overall look and feel of [GitHost.io](https://githost.io) has also been\nimproved, making it cleaner, sleeker and easier on the eyes. All the changes we are announcing today will help us grow,\nimprove our platform and ultimately offer all our customers a better service. Thank you for your continued support!\n",{"slug":5169,"featured":6,"template":683},"changes-to-githost","content:en-us:blog:changes-to-githost.yml","Changes To Githost","en-us/blog/changes-to-githost.yml","en-us/blog/changes-to-githost",{"_path":5175,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5176,"content":5182,"config":5187,"_id":5189,"_type":17,"title":5190,"_source":18,"_file":5191,"_stem":5192,"_extension":21},"/en-us/blog/supporting-ruby-together",{"title":5177,"description":5178,"ogTitle":5177,"ogDescription":5178,"noIndex":6,"ogImage":5179,"ogUrl":5180,"ogSiteName":671,"ogType":672,"canonicalUrls":5180,"schema":5181},"GitLab \u003C3 Ruby Together","GitLab has joined Ruby Together as an Emerald member, helping to ensure that everyone who uses Ruby will be able to depend on Bundler, RubyGems.org, and other Ruby infrastructure.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683665/Blog/Hero%20Images/love-the-sun.jpg","https://about.gitlab.com/blog/supporting-ruby-together","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab \u003C3 Ruby Together\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Guest author André Arko of Ruby Together\"}],\n        \"datePublished\": \"2015-12-21\",\n      }",{"title":5177,"description":5178,"authors":5183,"heroImage":5179,"date":5185,"body":5186,"category":14},[5184],"Guest author André Arko of Ruby Together","2015-12-21","\n\nCompanies and developers who use Ruby depend on a lot of infrastructure to get their work done. GitLab provides a solution for hosting code and collaborating on that code, but shipping code and using code shipped by others also relies on Bundler, RubyGems, and the RubyGems.org servers. For many years, all of that Ruby infrastructure has been maintained entirely by volunteers, in their spare time. That worked well when the Ruby community was small, but today volunteer work just isn’t enough to keep everything working.\n\n\u003C!-- more -->\n\n[Ruby Together](https://rubytogether.org) was founded to bring together Ruby developers and companies that use Ruby to create a cooperative solution to this problem. Members provide funds, and we use those funds to ensure that developers are paid fairly to do on-call rotations, maintenance work, and make improvements to code and services used by the entire Ruby community. \n\nMembers also have the opportunity to connect with one another and with the Ruby Together team via a members-only Slack group chat. As membership increases,  we plan to fund additional projects that benefit the entire Ruby community, including work to turn [RubyBench.org](https://rubybench.org/) into a fully-fledged community performance benchmarking resource and creating new projects to solve other problems that Ruby developers struggle with today.\n\nGitLab has joined Ruby Together as an Emerald member, helping to ensure that everyone who uses Ruby will be able to depend on Bundler, [RubyGems.org](http://RubyGems.org), and other Ruby infrastructure. Become a member alongside GitLab, Basecamp, Stripe, Airbnb, and others, improving things for everyone who uses Ruby. The community that has grown up around Ruby is amazing, and provides many fantastic (and fantastically useful) tools that any developer can use. \n\nLet's work together to make sure those tools (and the community) are the best that they can be, for everyone. Membership dues directly fund work that benefits everyone using Ruby, and are usually tax-deductible. Both individual and corporate memberships are available. [Join us today!](https://rubytogether.org).\n\nArticle by André Arko, who maintains and develops Bundler, as well as contributing to RubyGems and RubyGems.org. Find out more about the [Ruby Together team](https://rubytogether.org/team)",{"slug":5188,"featured":6,"template":683},"supporting-ruby-together","content:en-us:blog:supporting-ruby-together.yml","Supporting Ruby Together","en-us/blog/supporting-ruby-together.yml","en-us/blog/supporting-ruby-together",{"_path":5194,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5195,"content":5200,"config":5204,"_id":5206,"_type":17,"title":5207,"_source":18,"_file":5208,"_stem":5209,"_extension":21},"/en-us/blog/improving-open-development-for-everyone",{"title":5196,"description":5197,"ogTitle":5196,"ogDescription":5197,"noIndex":6,"ogImage":967,"ogUrl":5198,"ogSiteName":671,"ogType":672,"canonicalUrls":5198,"schema":5199},"Improving Open Development for Everyone","We want to give everyone that loves GitLab the opportunity to help shape its progress and be empowered to do this effortlessly.","https://about.gitlab.com/blog/improving-open-development-for-everyone","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Improving Open Development for Everyone\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Job van der Voort\"}],\n        \"datePublished\": \"2015-12-16\",\n      }",{"title":5196,"description":5197,"authors":5201,"heroImage":967,"date":5202,"body":5203,"category":14},[5128],"2015-12-16","\n\nWe want to make it super easy for anyone to contribute to GitLab.\n\nThat's why we've changed two things:\n\n1. Feature proposals are now handled in the GitLab projects on GitLab.com.\n1. We've assigned weights to relatively simple `Accepting merge requests`\nissues, to make it clear where new contributors can start.\n\n\u003C!-- more -->\n\n## Feature Proposals\n\nIn the past we've used Uservoice on feedback.gitlab.com to handle\nfeature proposals and voting. This has served us well, but we always felt that\nwe could bring the discussion even closer to the development of GitLab.\n\nAs we've introduced [Award Emoji with GitLab 8.2](/releases/2015/11/22/gitlab-8-2-released/)\nand are extending this to allow\nfor [sorting, filtering](https://gitlab.com/gitlab-org/gitlab-ce/issues/3672)\nbased on these, we feel now is the time to start migrating\nthe feature proposals to GitLab.com.\n\nThis means that if you want to propose a feature for GitLab CE or EE,\nyou can now simply create an issue in their respective projects`.\nThis will allow anyone to vote, comment and discuss this.\n\nThis system is even more useful because anyone that has shown interest in the issue will be automatically updated\nwith the status of the issue once someone starts working on it. In time this will also\nreveal areas where we might want to improve GitLab's issue tracker.\n\n- [GitLab CE issues](https://gitlab.com/gitlab-org/gitlab-ce/issues)\n- [GitLab EE issues](https://gitlab.com/gitlab-org/gitlab-ee/issues)\n\n## Accepting merge requests with weight\n\n> **Updated Feb 6, 2017:** `up-for-grabs` was changed to\n`Accepting merge requests` with weight\n\nWe started using\n[issue weight](https://docs.gitlab.com/ee/user/project/issues/issue_weight.html)\nfor issues with `Accepting merge requests` label to make finding\nlow-hanging fruits much easier. Now anyone can help make GitLab better for\neveryone.\n\nWe will assign weight smaller than five to issues that are not too hard or too\nbig to work on.\nWhether you're a first-time contributor, someone that wants to improve their\nRuby / Javascript / Go or someone that wants to contribute, but doesn't have time\nfor a big bug fix or feature, these are issues that you should be able to work on.\nIf you're already good at the languages GitLab uses, but you are new\nto the project, these issues are perfect for you as well.\n\nHave a look at the [Accepting merge requests issues for GitLab on GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/issues?label_name%5B%5D=Accepting+merge+requests&sort=weight_asc)\nright now. We will add more over time.\n\nPlease follow our [the contribution guidelines](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md) to help you get started.\n\n## How can we make it easier?\n\nWe want to give everyone that loves GitLab the opportunity to help shape its progress and be empowered to do this effortlessly.\n\nHow can we make this easier for you? We'd love to hear it in the comments.\n",{"slug":5205,"featured":6,"template":683},"improving-open-development-for-everyone","content:en-us:blog:improving-open-development-for-everyone.yml","Improving Open Development For Everyone","en-us/blog/improving-open-development-for-everyone.yml","en-us/blog/improving-open-development-for-everyone",{"_path":5211,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5212,"content":5217,"config":5221,"_id":5223,"_type":17,"title":5224,"_source":18,"_file":5225,"_stem":5226,"_extension":21},"/en-us/blog/announcing-git-lfs-support-in-gitlab",{"title":5213,"description":5214,"ogTitle":5213,"ogDescription":5214,"noIndex":6,"ogImage":967,"ogUrl":5215,"ogSiteName":671,"ogType":672,"canonicalUrls":5215,"schema":5216},"Announcing Git LFS Support in GitLab","Support for Git Large File Storage is now included in GitLab.com, GitLab Community Edition and Enterprise Edition.","https://about.gitlab.com/blog/announcing-git-lfs-support-in-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Announcing Git LFS Support in GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2015-11-23\",\n      }",{"title":5213,"description":5214,"authors":5218,"heroImage":967,"date":5219,"body":5220,"category":14},[699],"2015-11-23","\n\nAs the use of Git and GitLab becomes increasingly popular in the development world, we’re seeing people in other industries use GitLab as well. Versioning video files, images, and even microchip designs, teams need to be able to work collaboratively to version any type of large file efficiently and reliably.\n\nIn order to better serve our community with a need to version large files, support for Git Large File Storage (LFS) is now included in GitLab.com, GitLab Community Edition, and GitLab Enterprise Edition. Now game developers, graphic designers, mobile app developers, and anyone else building software requiring large files can use GitLab to version all of their assets.\n\n\u003C!-- more -->\n\nCompanies using [GitLab EE](/pricing/feature-comparison/) still have the option to use [git-annex](/blog/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git/), released in February 2015, to version large files or to switch to Git LFS.\n\n## What is Git LFS?\n\nGit LFS uses reference pointers within small text files to point to large files stored on the GitLab servers for GitLab.com, or on your own servers for our on-premises offerings, GitLab CE and EE. Large files such as high resolution images and videos, audio files, and assets can be called from a remote server.\n\nThis allows for Git users to bypass the size restrictions previously given for repositories. The general recommendation has been to not allow Git repositories larger than 1GB to preserve performance and decrease the chances of performance issues.\n\n## How do I get started using Git LFS?\n\nGit LFS is already running on GitLab.com. To update your on-premises version of GitLab EE or CE, simply update your [installation to 8.2](/install/). To learn more about Git LFS, take a look at our [documentation](http://doc.gitlab.com/ce/workflow/lfs/manage_large_binaries_with_git_lfs.html).\n\nDon’t miss the other great features from [yesterday’s release](/releases/2015/11/22/gitlab-8-2-released/) like repository mirroring, award emoji, and more. As always, thanks everyone in the community, both inside the company and out, for helping with this release. If you have any comments or questions, please feel free to comment directly on this post.\n\n## Update\n\nRead the blog post \"[Getting Started with Git LFS](/blog/getting-started-with-git-lfs-tutorial/)\".\n",{"slug":5222,"featured":6,"template":683},"announcing-git-lfs-support-in-gitlab","content:en-us:blog:announcing-git-lfs-support-in-gitlab.yml","Announcing Git Lfs Support In Gitlab","en-us/blog/announcing-git-lfs-support-in-gitlab.yml","en-us/blog/announcing-git-lfs-support-in-gitlab",{"_path":5228,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5229,"content":5235,"config":5239,"_id":5241,"_type":17,"title":5242,"_source":18,"_file":5243,"_stem":5244,"_extension":21},"/en-us/blog/pivotal-cloud-foundry-tile-for-gitlab-ee",{"title":5230,"description":5231,"ogTitle":5230,"ogDescription":5231,"noIndex":6,"ogImage":5232,"ogUrl":5233,"ogSiteName":671,"ogType":672,"canonicalUrls":5233,"schema":5234},"Pivotal Cloud Foundry Tile for GitLab EE","Today we're excited to announce the Pivotal Cloud Foundry tile for GitLab Enterprise Edition.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684505/Blog/Hero%20Images/fall.jpg","https://about.gitlab.com/blog/pivotal-cloud-foundry-tile-for-gitlab-ee","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Pivotal Cloud Foundry Tile for GitLab EE\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2015-11-03\",\n      }",{"title":5230,"description":5231,"authors":5236,"heroImage":5232,"date":5237,"body":5238,"category":14},[699],"2015-11-03","\n\nToday we're excited to announce the [Pivotal Cloud Foundry](https://pivotal.io/platform/press-release/go-from-idea-to-production-in-less-than-a-day) tile for GitLab Enterprise Edition.\nWith this partnership, developers will be able to easily deploy GitLab as a pre-configured\nappliance using Ops Manager (BOSH) for Pivotal Cloud Foundry.\n\n\u003C!-- more -->\n\n## About the tile\n\nWith the GitLab tile for Pivotal Cloud Foundry,\ndeploying GitLab is a matter of clicking 'Install'.\n\n![GitLab Tile in Pivotal Cloud Foundry](https://about.gitlab.com/images/pcf/pcf.png)\n\nGitLab on PCF will run highly available by default and can be scaled up\neasily by changing a single value.\n\n![Scale up GitLab by changing a single value](https://about.gitlab.com/images/pcf/ha.png)\n\nFurther configuration of GitLab can be done fully within the Pivotal Cloud\nFoundry environment.\n\n![Configure GitLab in Pivotal Cloud Foundry](https://about.gitlab.com/images/pcf/configure1.png)\n\n![Configure GitLab's Redis in Pivotal Cloud Foundry](https://about.gitlab.com/images/pcf/configure3.png)\n\nAs enterprise developers seek more control of their development toolkit, this partnership\nwill allow their development to be more customizable, more integrated, and more secure.\n",{"slug":5240,"featured":6,"template":683},"pivotal-cloud-foundry-tile-for-gitlab-ee","content:en-us:blog:pivotal-cloud-foundry-tile-for-gitlab-ee.yml","Pivotal Cloud Foundry Tile For Gitlab Ee","en-us/blog/pivotal-cloud-foundry-tile-for-gitlab-ee.yml","en-us/blog/pivotal-cloud-foundry-tile-for-gitlab-ee",{"_path":5246,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5247,"content":5253,"config":5257,"_id":5259,"_type":17,"title":5260,"_source":18,"_file":5261,"_stem":5262,"_extension":21},"/en-us/blog/one-million-downloads-of-gitlab",{"title":5248,"description":5249,"ogTitle":5248,"ogDescription":5249,"noIndex":6,"ogImage":5250,"ogUrl":5251,"ogSiteName":671,"ogType":672,"canonicalUrls":5251,"schema":5252},"One Million Downloads of GitLab","Today we announced that we have over one million downloads between Gitlab CE and GitLab EE.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683656/Blog/Hero%20Images/million_downloads.jpg","https://about.gitlab.com/blog/one-million-downloads-of-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"One Million Downloads of GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2015-10-29\",\n      }",{"title":5248,"description":5249,"authors":5254,"heroImage":5250,"date":5255,"body":5256,"category":14},[676],"2015-10-29","\n\nIt has been a great week at OSCON in Amsterdam meeting with people from the open source community. We’re humbled by the enthusiasm shown by everyone for GitLab.\n\nToday we announced that we have over one million downloads between [Gitlab CE](/pricing/feature-comparison/) and [GitLab EE](/pricing/feature-comparison/). We started in 2011 as an open source project and have seen great growth, particularly over the last year.\n\n### Taking a trip down memory lane:\n\n**2011:** GitLab is created as an open source project. [This commit](https://gitlab.com/gitlab-org/gitlab-ce/commit/0f43e98ef8c2da8908b1107f75b67cda2572c2c4) was the very start of GitLab.\n\n\u003C!-- more -->\n\n**2013:** GitLab becomes a bootstrapped company with full-time employees.\n\n**February 2015:** GitLab participates in Y Combinator’s Winter 2015 class\n\n**March 2015:** Hailed by Techcrunch as [\"YC-Backed GitLab Is Like GitHub But For Enterprise”](http://techcrunch.com/2015/03/03/the-great-git-debate)\n\n**August 2015:** [GitLab Raises $4M Series A Round From Khosla Ventures](http://techcrunch.com/2015/09/17/gitlab-raises-4m-series-a-round-from-khosla-ventures-for-its-open-source-collaboration-platform/) with Vinod Khosla commenting at the time, \"there is a very large market demand for a more open solution that enables engineers to create, review, collaborate, and accelerate the iterative process by deploying code that brings products to market faster.”\n\n**September 2015:** Since 2011, we’ve been releasing new updates to GitLab on the 22nd of every month. September’s launch of [GitLab 8.0](/releases/2015/09/22/gitlab-8-0-released/) was our largest release yet with product improvements, integrating GitLab CI into the core product, and an all-new design.\n\n**October 2015:** We hit 1 million downloads of GitLab CE and GitLab EE. More than 100,000 organizations currently use GitLab on premises including CERN, Alibaba, SpaceX, O’Reilly, IBM and Expedia. GitLab's Enterprise Edition is now being used by a large percentage of the Fortune 500.\n\nWe’d like to say thank you to everyone that has helped along the way. We have such a loyal, vocal community of more than 800 contributors that have helped us roll out new features and countless people helping others to get started with GitLab. We look forward to the next million!\n",{"slug":5258,"featured":6,"template":683},"one-million-downloads-of-gitlab","content:en-us:blog:one-million-downloads-of-gitlab.yml","One Million Downloads Of Gitlab","en-us/blog/one-million-downloads-of-gitlab.yml","en-us/blog/one-million-downloads-of-gitlab",{"_path":5264,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5265,"content":5271,"config":5276,"_id":5278,"_type":17,"title":5279,"_source":18,"_file":5280,"_stem":5281,"_extension":21},"/en-us/blog/gitlab-oscon-challenge-2015",{"title":5266,"description":5267,"ogTitle":5266,"ogDescription":5267,"noIndex":6,"ogImage":5268,"ogUrl":5269,"ogSiteName":671,"ogType":672,"canonicalUrls":5269,"schema":5270},"GitLab OSCON Challenge 2015","GitLab will be sponsoring OSCON in Amsterdam from October 26th to October 28th, 2015. Would you like to join us?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684497/Blog/Hero%20Images/oscon.png","https://about.gitlab.com/blog/gitlab-oscon-challenge-2015","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab OSCON Challenge 2015\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab Team\"}],\n        \"datePublished\": \"2015-10-14\",\n      }",{"title":5266,"description":5267,"authors":5272,"heroImage":5268,"date":5274,"body":5275,"category":14},[5273],"GitLab Team","2015-10-14","\n\nOnce considered a radical upstart, open source has moved from disruption to default. Its methods and culture\ncommoditized the technologies that drove the Internet revolution and transformed the practice of software\ndevelopment.\n\nSince 1999, O’Reilly Media has organized OSCON, an annual convention for the discussion of free and open source\nsoftware.\n\nOSCON is where all of the pieces come together: developers, innovators, business people, and investors. At OSCON,\nyou'll find everything open source: languages, communities, best practices, products and services. Rather than focus\non a single language or aspect, such as cloud computing, OSCON allows you to learn about and practice the entire\nrange of open source technologies.\n\nGitLab will be sponsoring OSCON in Amsterdam from October 26th to October 28th, 2015. Would you like to join us? \n\n\u003C!-- more -->\n\nWe have one special pass to give to one of our users. This pass is worth 1,545 Euros and\nit will give you access to all sessions, keynotes and tutorials, 2 months of Safari Pro, access to all on-site\nnetworking events and lunch from Monday to Wednesday.\n\nSounds interesting?\n\n## The Details\n\nCreate a page like the [OSCON speakers page](http://conferences.oreilly.com/oscon/open-source-eu-2015/public/schedule/speaker/206462) and include why you\nuse and love GitLab and why you’d like to attend OSCON. We love creativity, so don’t be shy!\n\nYou must submit a Merge Request in [OSCON 2015 Repository](https://gitlab.com/gitlab-com/oscon2015) with your name in\nthe namespace.\n\nTweet, mentioning @GitLab and sharing a link to your Merge Request. This tweet should also have #OSCON included.\n\nTweet your MR by midnight PDT on **October 22nd, 2015**.\n\nAfter the submission deadline on October 22nd, GitLab employees will review and vote on all entries to pick the top\nwinner. We'll send out notifications to the winner by midnight PDT, October 23rd through Twitter.\n\n## The prize\nThe winning entry will receive a gold pass to OSCON Amsterdam 2015. This pass includes:\n\nAll sessions (Mon-Tue)\nAll keynotes (Mon-Tue)\nAll tutorials (Wed)\nVideo Compilation\n(All tutorials, keynotes, and sessions)\n3 months of Safari Pro\nSponsor Pavilion (Mon-Tue)\nAll on-site networking events\nLunch (Mon-Wed)\n\nFor more information regarding OSCON Amsterdam 2015, visit [OSCON 2015 website](http://conferences.oreilly.com/oscon/open-source-eu-2015).\n",{"slug":5277,"featured":6,"template":683},"gitlab-oscon-challenge-2015","content:en-us:blog:gitlab-oscon-challenge-2015.yml","Gitlab Oscon Challenge 2015","en-us/blog/gitlab-oscon-challenge-2015.yml","en-us/blog/gitlab-oscon-challenge-2015",{"_path":5283,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5284,"content":5289,"config":5293,"_id":5295,"_type":17,"title":5296,"_source":18,"_file":5297,"_stem":5298,"_extension":21},"/en-us/blog/perforce-launches-gitswarm-based-on-gitlab",{"title":5285,"description":5286,"ogTitle":5285,"ogDescription":5286,"noIndex":6,"ogImage":967,"ogUrl":5287,"ogSiteName":671,"ogType":672,"canonicalUrls":5287,"schema":5288},"Perforce launches GitSwarm based on GitLab","Today Perforce launched Helix GitSwarm built on top of GitLab.","https://about.gitlab.com/blog/perforce-launches-gitswarm-based-on-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Perforce launches GitSwarm based on GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2015-10-06\",\n      }",{"title":5285,"description":5286,"authors":5290,"heroImage":967,"date":5291,"body":5292,"category":14},[699],"2015-10-06","\n\nToday Perforce launched [Helix GitSwarm](http://techcrunch.com/2015/10/06/new-perforce-tool-gives-developers-what-they-love-and-it-what-it-needs/) built on top of [GitLab](). GitSwarm combines Perforce and GitLab to enable easy project and team management while allowing developers to collaboratively code using their preferred version control system, Git. \n\nWe’re happy that Perforce chose GitLab to help their customers create, code, and deploy together. To learn more, have a look at the [GitSwarm overview](http://www.perforce.com/gitswarm).",{"slug":5294,"featured":6,"template":683},"perforce-launches-gitswarm-based-on-gitlab","content:en-us:blog:perforce-launches-gitswarm-based-on-gitlab.yml","Perforce Launches Gitswarm Based On Gitlab","en-us/blog/perforce-launches-gitswarm-based-on-gitlab.yml","en-us/blog/perforce-launches-gitswarm-based-on-gitlab",{"_path":5300,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5301,"content":5307,"config":5311,"_id":5313,"_type":17,"title":5314,"_source":18,"_file":5315,"_stem":5316,"_extension":21},"/en-us/blog/gitlab-announces-4m-series-a-funding-from-khosla-ventures",{"title":5302,"description":5303,"ogTitle":5302,"ogDescription":5303,"noIndex":6,"ogImage":5304,"ogUrl":5305,"ogSiteName":671,"ogType":672,"canonicalUrls":5305,"schema":5306},"GitLab announces $4M series A funding from Khosla Ventures","Today we are proud to announce our $4 million Series A funding from Khosla Ventures.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684454/Blog/Hero%20Images/gitlab-funded.jpg","https://about.gitlab.com/blog/gitlab-announces-4m-series-a-funding-from-khosla-ventures","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab announces $4M series A funding from Khosla Ventures\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2015-09-17\",\n      }",{"title":5302,"description":5303,"authors":5308,"heroImage":5304,"date":5309,"body":5310,"category":14},[699],"2015-09-17","\n\nToday we are proud to announce our $4 million Series A funding from Khosla Ventures.\nThis follows our [seed round in July](/blog/1-5m-raised-in-seed-funding-for-gitlab-to-accelerate-growth-and-expand-operations/).\n\nGitLab will leverage the new funding to accelerate growth and scale its global\noperations including development, marketing, and sales. Additionally, GitLab\nannounced the upcoming release of GitLab 8.0, which is scheduled for release on\nSeptember 22.  GitLab 8.0 will include 50 percent less disk usage, faster\nmerging, Continuous Integration (CI) built into GitLab itself, improved\ninterface and navigation, and \"Reply by email\" functionality that allows users\nto quickly comment on an issue or merge request from their mobile devices.\n\n![Activity View](https://about.gitlab.com/images/screenshots_8.0/activity_view.png)\n\nMore than 100,000 companies and organizations currently use GitLab on-premises\nincluding NASA, CERN, Alibaba, SpaceX, O’Reilly, IBM, and Expedia. These\norganizations and many individual contributors hack on, contribute to, and help\nGitLab become better every single day.\n\nIt is our goal to become the default solution for anyone building software and\nworking together. The excitement and passion of our community has convinced us\nthat open-source is the way forward. We want to accelerate our growth and expand\noperations so we can reach more people and build an even better GitLab.\n\n\u003C!--more-->\n\n## GitLab, an Open-Source Company\n\nOur three product offerings — a free, open source Community Edition, a free SaaS\nGitLab.com version, and our Enterprise version – provide accessibility, full\ntransparency, and stand as a serious challenger to other Git platforms. GitLab\nfeatures include:\n\n  - Zero-touch installation and upgrades\n  - GitHub, Bitbucket, Google Code, Gitorious importers\n  - Two-factor authentication\n  - SAML and Kerberos authentication\n  - Merge request approvers\n  - Audit logging\n\n![Milestones](https://about.gitlab.com/images/screenshots_8.0/milestones.png)\n\nWith this new round of funding, we hope to provide more features, support, and expand to more companies and\norganizations as the most popular and most trusted open source code collaboration platform.\n\nAfter our Y Combinator experience and successful seed round funding, we knew we wanted to go above and beyond what we\nhad done so far and make GitLab bigger and better for everyone, which is why we are working\nwith some amazing investors.\n\nVinod Khosla, founder and partner of Khosla Ventures said this about us:\n\n> “Investing in GitLab was an obvious choice. Open source solutions are the future,\nand GitLab is leading the way as the most popular open source code collaboration platform\non the market.”\n\n> “GitLab’s reach in over 100K organizations validates that there is a very large market\ndemand for a more open solution that enables engineers to create, review, collaborate, and\naccelerate the iterative process by deploying code that brings products to market faster.”\n\nWe're all very excited with this opportunity our investors have given us.\nIt means we can accelerate growth and scale our US operations, which\nincludes the recent opening of a new Experience Center in San Francisco (don't worry,\nwe're [still remote](/blog/the-remote-manifesto/)!).\n\nSytse \"Sid\" Sijbrandij, our CEO said:\n\n> “GitLab differentiates itself from other collaborative Git platforms because\n> we are open source - [and always have been](/blog/letter-from-shareholders/).\n> Open source helps users to reach their goals faster with the transparency and\n> control they expect from their tools.”\n\n> “Our users choose GitLab because they can run it on their own servers, the\n> source code is open and adaptable, and organizations can build on top of\n> GitLab. We also have a loyal, vocal community of more than 800 contributors\n> whose constant improvements help us roll out new features faster than anyone\n> else on the market.”\n\n![Project](https://about.gitlab.com/images/screenshots_8.0/project.png)\n\n## Thank you for believing in us\n\nWe'd like to thank our amazing community that has contributed major features,\nbug fixes, documentation updates and more than we can ever return. We owe\nGitLab's existence to your enthusiasm, drive, and hard work. Without our contributors'\nbelief in open source software, GitLab would be nowhere near where it is today.\n\nThank you to our team that has been working hard every single day and feels more\nlike a highly distributed, international family than a company.  We especially\nthank the [core team](/community/core-team/) members that are not paid\nby GitLab Inc: Robert Schilling, Hannes Rosenögger, Achilleas Pipinellis, Stan\nHu, James Newton and Jeroen van Baarsen.\n\n_Want to help GitLab grow? [We're looking for people to work with us!](/jobs/)_\n",{"slug":5312,"featured":6,"template":683},"gitlab-announces-4m-series-a-funding-from-khosla-ventures","content:en-us:blog:gitlab-announces-4m-series-a-funding-from-khosla-ventures.yml","Gitlab Announces 4m Series A Funding From Khosla Ventures","en-us/blog/gitlab-announces-4m-series-a-funding-from-khosla-ventures.yml","en-us/blog/gitlab-announces-4m-series-a-funding-from-khosla-ventures",{"_path":5318,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5319,"content":5325,"config":5329,"_id":5331,"_type":17,"title":5332,"_source":18,"_file":5333,"_stem":5334,"_extension":21},"/en-us/blog/a-grant-to-help-us-integrate-gitlab-with-open-source-osf",{"title":5320,"description":5321,"ogTitle":5320,"ogDescription":5321,"noIndex":6,"ogImage":5322,"ogUrl":5323,"ogSiteName":671,"ogType":672,"canonicalUrls":5323,"schema":5324},"A grant to help us integrate GitLab with open source OSF","We would like to facilitate researchers' efforts by integrating GitLab with the Open Science Framework (OSF).","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684475/Blog/Hero%20Images/osf-integration.jpg","https://about.gitlab.com/blog/a-grant-to-help-us-integrate-gitlab-with-open-source-osf","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"A grant to help us integrate GitLab with open source OSF\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab Team\"}],\n        \"datePublished\": \"2015-09-03\",\n      }",{"title":5320,"description":5321,"authors":5326,"heroImage":5322,"date":5327,"body":5328,"category":14},[5273],"2015-09-03","\n\nAs the GitLab community keeps growing, we believe it's vital to integrate with other services and support the open source\nmovement. We would like to facilitate researchers' efforts by integrating GitLab with the [Open Science Framework (OSF)](https://osf.io/). We will jointly sponsor a USD 8,000 - 10,000 grant through the [Center for Open Science (COS)](http://centerforopenscience.org/) for the developer (or team of developers) who helps us integrate GitLab with OSF.\n\n\u003C!-- more -->\n\n## What is OSF?\n\nThe Open Science Framework (OSF) is a free open source cloud based platform which connects services across the entire\nresearch lifecycle to promote research efficiency and reproducibility. OSF facilitates open collaboration in science\nresearch. Today, they are integrated with storage providers Box.com, Dropbox, Amazon S3, figshare, GitHub, Google\nDrive, and Dataverse, and citation management tools Zotero and Mendeley. We believe that GitLab is a useful storage\noption that researchers should also have.\n\nThe Center for Open Science supports and maintains the OSF and has [grants available](http://centerforopenscience.org/integrationgrants/) to connect OSF with many tools and\nservices that researchers use. There is a USD 8,000 - 10,000 grant to help GitLab and OSF integration. Would you like to help us?\n\n## What should the proposals include?\n\nProposals should include the following information:\n\n1. Vitals of the individual or team that will do the work\n\n1. Why this is the right team for the job\n\n1. An assessment of the APIs for the selected tool(s)/service(s) and the v2 Open Science Framework API, and how these\nwould interact\n\n1. Description of project plan and milestones over approximately 3 months development cycle\n\nProposers must commit to making all code available as open source with an Apache 2.0 license. Applicants may propose\nworking on multiple integrations.\n\nProposals will be accepted on a rolling basis. Decisions will be made quickly so that teams can receive funding and\ninitiate their work.\n\nPlease send your proposal through the [Grants to Connect Tools and Services for an Open Science application form](\nhttps://docs.google.com/forms/d/1h2T_So_f52nGpA8SH2RnywgztoOyca533O9sf9K42HQ/viewform).\n",{"slug":5330,"featured":6,"template":683},"a-grant-to-help-us-integrate-gitlab-with-open-source-osf","content:en-us:blog:a-grant-to-help-us-integrate-gitlab-with-open-source-osf.yml","A Grant To Help Us Integrate Gitlab With Open Source Osf","en-us/blog/a-grant-to-help-us-integrate-gitlab-with-open-source-osf.yml","en-us/blog/a-grant-to-help-us-integrate-gitlab-with-open-source-osf",{"_path":5336,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5337,"content":5342,"config":5347,"_id":5349,"_type":17,"title":5350,"_source":18,"_file":5351,"_stem":5352,"_extension":21},"/en-us/blog/gitlab-dot-com-outage-on-2015-09-01",{"title":5338,"description":5339,"ogTitle":5338,"ogDescription":5339,"noIndex":6,"ogImage":967,"ogUrl":5340,"ogSiteName":671,"ogType":672,"canonicalUrls":5340,"schema":5341},"GitLab.com outage on 2015-09-01","This morning GitLab.com was offline for one hour while we were investigating what seemed to be a filesystem corruption issue.","https://about.gitlab.com/blog/gitlab-dot-com-outage-on-2015-09-01","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab.com outage on 2015-09-01\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jacob Vosmaer\"}],\n        \"datePublished\": \"2015-09-01\",\n      }",{"title":5338,"description":5339,"authors":5343,"heroImage":967,"date":5345,"body":5346,"category":14},[5344],"Jacob Vosmaer","2015-09-01","\n\nThis morning GitLab.com was offline for one hour while we were\ninvestigating what seemed to be a filesystem corruption issue.  With\nthis blog post we want to tell you more about what was going on and\nwhat we discovered.\n\n\u003C!-- more -->\n\nThis morning around 7:00 UTC the NFS server that holds the Git\nrepositories hosted on GitLab.com became very slow. This made\nGitLab.com also very slow. While investigating this issue on the\nNFS server, we saw the following error messages in the output of\n`dmesg`:\n\n```\n[870355.932072] EXT4-fs (dm-0): error count since last fsck: 2\n[870355.932076] EXT4-fs (dm-0): initial error at time 1439995223: ext4_mb_generate_buddy:756\n[870355.932079] EXT4-fs (dm-0): last error at time 1439995223: ext4_mb_generate_buddy:756\n[956863.452065] EXT4-fs (dm-0): error count since last fsck: 2\n[956863.452070] EXT4-fs (dm-0): initial error at time 1439995223: ext4_mb_generate_buddy:756\n[956863.452072] EXT4-fs (dm-0): last error at time 1439995223: ext4_mb_generate_buddy:756\n[1043370.972077] EXT4-fs (dm-0): error count since last fsck: 2\n[1043370.972081] EXT4-fs (dm-0): initial error at time 1439995223: ext4_mb_generate_buddy:756\n[1043370.972084] EXT4-fs (dm-0): last error at time 1439995223: ext4_mb_generate_buddy:756\n[1129878.492074] EXT4-fs (dm-0): error count since last fsck: 2\n[1129878.492108] EXT4-fs (dm-0): initial error at time 1439995223: ext4_mb_generate_buddy:756\n[1129878.492111] EXT4-fs (dm-0): last error at time 1439995223: ext4_mb_generate_buddy:756\n[1216386.012085] EXT4-fs (dm-0): error count since last fsck: 2\n[1216386.012135] EXT4-fs (dm-0): initial error at time 1439995223: ext4_mb_generate_buddy:756\n[1216386.012139] EXT4-fs (dm-0): last error at time 1439995223: ext4_mb_generate_buddy:756\n[1302893.532065] EXT4-fs (dm-0): error count since last fsck: 2\n```\n\nThis made us worry that something was really wrong with the filesystem\nthat holds all GitLab.com data, and we decided that we should take\nthe filesystem (and hence GitLab.com) offline to run `fsck` on it.\nThis was at [7:54\nUTC](https://twitter.com/gitlabstatus/status/638621030060290048).\nWith fsck under way we started thinking about other, faster ways\nto bring GitLab.com back online. We considered restoring a backup,\nbut that would have set back the clock 6-7 hours (we make backups\nonce a day) and because the backups use block device snapshots,\nthere was a good chance that whatever file system corruption we\nwere seeing would be present in the backup too.\n\nAt some point we went back to the dmesg output to try and better\nunderstand the errors. What was it really saying? What were those\ntime stamps at the start of each line? It turns out dmesg can show\nhuman-readable timestamps if you pass the `-T` option. Now things\nsuddenly looked very different:\n\n```\n[Wed Aug 26 14:52:55 2015] EXT4-fs (dm-0): error count since last fsck: 2\n[Wed Aug 26 14:52:55 2015] EXT4-fs (dm-0): initial error at time 1439995223: ext4_mb_generate_buddy:756\n[Wed Aug 26 14:52:55 2015] EXT4-fs (dm-0): last error at time 1439995223: ext4_mb_generate_buddy:756\n[Thu Aug 27 14:54:43 2015] EXT4-fs (dm-0): error count since last fsck: 2\n[Thu Aug 27 14:54:43 2015] EXT4-fs (dm-0): initial error at time 1439995223: ext4_mb_generate_buddy:756\n[Thu Aug 27 14:54:43 2015] EXT4-fs (dm-0): last error at time 1439995223: ext4_mb_generate_buddy:756\n[Fri Aug 28 14:56:31 2015] EXT4-fs (dm-0): error count since last fsck: 2\n[Fri Aug 28 14:56:31 2015] EXT4-fs (dm-0): initial error at time 1439995223: ext4_mb_generate_buddy:756\n[Fri Aug 28 14:56:31 2015] EXT4-fs (dm-0): last error at time 1439995223: ext4_mb_generate_buddy:756\n[Sat Aug 29 14:58:18 2015] EXT4-fs (dm-0): error count since last fsck: 2\n[Sat Aug 29 14:58:18 2015] EXT4-fs (dm-0): initial error at time 1439995223: ext4_mb_generate_buddy:756\n[Sat Aug 29 14:58:18 2015] EXT4-fs (dm-0): last error at time 1439995223: ext4_mb_generate_buddy:756\n[Sun Aug 30 15:00:06 2015] EXT4-fs (dm-0): error count since last fsck: 2\n[Sun Aug 30 15:00:06 2015] EXT4-fs (dm-0): initial error at time 1439995223: ext4_mb_generate_buddy:756\n[Sun Aug 30 15:00:06 2015] EXT4-fs (dm-0): last error at time 1439995223: ext4_mb_generate_buddy:756\n[Mon Aug 31 15:01:53 2015] EXT4-fs (dm-0): error count since last fsck: 2\n[Mon Aug 31 15:01:53 2015] EXT4-fs (dm-0): initial error at time 1439995223: ext4_mb_generate_buddy:756\n[Mon Aug 31 15:01:53 2015] EXT4-fs (dm-0): last error at time 1439995223: ext4_mb_generate_buddy:756\n[Tue Sep  1 07:53:11 2015] nfsd: last server has exited, flushing export cache\n```\n\nWhat we saw now was that we were getting the same error once a day,\ngoing back to the first day we mounted this filesystem on the server\n(after our migration from Germany to the US). The scary error message\nthat made us assume the worst and led us to take emergency measures\n(taking GitLab.com offline for fsck) turned out to have been repeating\nfor weeks, like clockwork, around 15:00 UTC every day. Moreover,\nwe saw no new errors appearing, just a regular repeat of the same\nerror. Although the message signals a problem that we should not\nignore, looking at it and understanding the pattern it no longer\nlooked like a likely cause for the load issues (NFFS server trouble)\nthat started all of this.\n\nAt this point we decided that the best course of action was to abort\nthe filesystem check and bring GitLab.com back online. This was\naround [8:52\nUTC](https://twitter.com/gitlabstatus/status/638635500274909184).\nAfter seeing more 502 errors than usual for a few minutes, GitLab.com\nwas operating normally again.\n\n## Next steps\n\nWe are in the process of moving all GitLab.com data off of the ext4\nfilesystem that scared us with its two errors. This is because three\nyears after we created it, we are outgrowing its built-in maximum\nsize of 16 TB. We will run `git fsck` (Git's built-in consistency\ncheck) on each repository once we are on the new filesystem.\n\nWe are still in the dark about the cause of the NFS slowdowns. We\nsee no spikes of any kind of web requests around the slowdowns. The\nbackend server only shows the ext4 errors mentioned above, which\ndo not coincide with the NFS trouble, and no NFS error messages.\nThe NFS clients show kernel messages about processes hanging during\nfilesystem operations, which really only tells us that here is an\nNFS problem.\n\nLast week, on 2015-08-27, we had a similar problem on GitLab.com,\nwhich we responded to by doubling the number of servers that handle\nuser traffic. That helped that time but it does not seem to have helped with this problem.\n\nWe will keep looking for potential causes and keep monitoring the\nsituation.\n\n## Lessons\n\nAs an operations team we still struggle with giving enough status\nupdates during a crisis. All people who were on this problem were\nfocused on the GitLab.com servers, and nobody was talking to the\nGitLab.com users, leading to an hour of radio silence from\n`@gitlabstatus` during the incident. We need to improve on this,\nbut like debugging NFS server meltdowns, it is a hard problem.",{"slug":5348,"featured":6,"template":683},"gitlab-dot-com-outage-on-2015-09-01","content:en-us:blog:gitlab-dot-com-outage-on-2015-09-01.yml","Gitlab Dot Com Outage On 2015 09 01","en-us/blog/gitlab-dot-com-outage-on-2015-09-01.yml","en-us/blog/gitlab-dot-com-outage-on-2015-09-01",{"_path":5354,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5355,"content":5360,"config":5364,"_id":5366,"_type":17,"title":5367,"_source":18,"_file":5368,"_stem":5369,"_extension":21},"/en-us/blog/gitlab-loves-mattermost",{"title":5356,"description":5357,"ogTitle":5356,"ogDescription":5357,"noIndex":6,"ogImage":5179,"ogUrl":5358,"ogSiteName":671,"ogType":672,"canonicalUrls":5358,"schema":5359},"GitLab Mattermost, an open source on-premises Slack alternative","We're very excited to announce that we'll ship GitLab Mattermost, an open source, on-premises messaging app (like Slack) along with GitLab.","https://about.gitlab.com/blog/gitlab-loves-mattermost","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Mattermost, an open source on-premises Slack alternative\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2015-08-18\",\n      }",{"title":5356,"description":5357,"authors":5361,"heroImage":5179,"date":5362,"body":5363,"category":14},[676],"2015-08-18","\n\nWe're very excited to announce that we'll ship GitLab Mattermost, an open source, on-premises messaging app (like Slack) along with GitLab.\nGitLab Mattermost will first be included with the Omnibus packages of GitLab 7.14 (due August 22nd).\nWe think GitLab Mattermost will be a great addition for GitLab users that need all software on-premises.\n\n\u003C!-- more -->\n\nLike many companies in the last year we've switched to using Slack to improve internal communication.\nWe are a [remote company](/blog/how-gitlab-works-remotely/) and great realtime asynchronous communication is very important.\nObviously we use GitLab issues and merge requests extensively, but for some things a chat room can't be beaten.\n\nThat is why GitLab used to include a chat feature called the 'wall' for each project.\nThe wall was a [loved feature in 2012](https://twitter.com/gitlab/status/274128115318550531), but in 2014 people [didn't use it](https://twitter.com/gitlab/status/478990520505888769).\nThe code had deteriorated and we removed the wall when we [released GitLab 7.0](/releases/2014/06/22/gitlab-7-dot-0-released/).\n\nMany larger organisations run all software on-premises, often because of security, scale and control.\nSince Slack doesn't offer an on-premises version, we searched for other options.\nWe found Mattermost to be the leading open source Slack-alternative and suggested a collaboration to the Mattermost team.\n\n![Mattermost screenshot](https://about.gitlab.com/images/mattermost/mattermost.png)\n\nIt turns out that [after the successful launch of Mattermost on Hacker News](https://news.ycombinator.com/item?id=9770322) there were a lot of requests for an easier way to install Mattermost and to add LDAP features to it.\nWith Omnibus GitLab we have a great way to install software in 2 minutes on many platforms and GitLab CE and EE contain many LDAP features.\nWe decided to collaborate and the Mattermost team quickly added PostgreSQL support and OAuth login to Mattermost so it could connect to the [GitLab OAuth provider](http://doc.gitlab.com/ce/integration/oauth_provider.html).\n\nIn version 7.14 GitLab Mattermost will be part of the Omnibus package, just like GitLab CI.\nJust like GitLab CI it will be disabled by default so it doesn't use any CPU or memory and doesn't enlarge the attack surface.\nAnd just like GitLab CI it takes a one line configuration change to enable it.\nRight now Mattermost 0.6 is in alpha state, its security has yet to be externally reviewed, and data migration to future versions might not always work.\nBut GitLab the company will pay for an external security audit and the Mattermost team is getting closer to a beta version.\n\nAdding the GitLab Mattermost code to the Omnibus packages makes them just 3% larger (from 337MB to 345MB right now) and offers a much easier setup because we can configure the OAuth integration automatically like we do for GitLab CI.\nIn gitlab.rb you'll configure the FQDN (mattermost.example.com) and the Omnibus package will take care of setting up OAuth credentials. In the future we'll also make it easier to post from GitLab and GitLab CI to GitLab Mattermost.\nReleasing it with 7.14 in alpha state will allow more eyes on the project in order to [report Mattermost bugs on GitLab.com](https://gitlab.com/gitlab-org/gitlab-mattermost), [responsibly disclose Mattermost security vulnerabilities](http://www.mattermost.org/responsible-disclosure-policy/) and [report Omnibus package bugs](https://gitlab.com/gitlab-org/omnibus-gitlab/issues).\nWe hope that with GitLab 8.0 (planned for September 22, following 7.14) we can ship GitLab Mattermost in beta state.\nThe progress of the work is discussed in [an issue for Omnibus GitLab](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/654).\n\nWe have not taken the decision to include an extra component in the Omnibus packages lightly.\nWe think GitLab Mattermost will be a great addition for GitLab users that need all software on-premises.\nWe hope that the rest of the community is as exited about this as we are.\nWe look forward to discussing your ideas and concerns in the comments.\n",{"slug":5365,"featured":6,"template":683},"gitlab-loves-mattermost","content:en-us:blog:gitlab-loves-mattermost.yml","Gitlab Loves Mattermost","en-us/blog/gitlab-loves-mattermost.yml","en-us/blog/gitlab-loves-mattermost",{"_path":5371,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5372,"content":5378,"config":5382,"_id":5384,"_type":17,"title":5385,"_source":18,"_file":5386,"_stem":5387,"_extension":21},"/en-us/blog/towards-a-production-quality-open-source-git-lfs-server",{"title":5373,"description":5374,"ogTitle":5373,"ogDescription":5374,"noIndex":6,"ogImage":5375,"ogUrl":5376,"ogSiteName":671,"ogType":672,"canonicalUrls":5376,"schema":5377},"Towards a production quality open source Git LFS server","At GitLab we would love to be compatible with Git Large File Support (LFS).","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683672/Blog/Hero%20Images/FILENAME.jpg","https://about.gitlab.com/blog/towards-a-production-quality-open-source-git-lfs-server","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Towards a production quality open source Git LFS server\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2015-08-13\",\n      }",{"title":5373,"description":5374,"authors":5379,"heroImage":5375,"date":5380,"body":5381,"category":14},[676],"2015-08-13","\n\n## Update\n\nSince GitLab 8.2 we [supports Git LFS](/blog/announcing-git-lfs-support-in-gitlab/) in GitLab CE and EE.\n\n## Original article\n\nAt GitLab we would love to be compatible with Git Large File Support (LFS).\nWe plan to base our implementation on a reference implementation that is currently not in a production ready state.\nBut we hope that over time we can get to production level support.\nWhat follows is some background how and why we are taking this path instead of reusing an existing solution.\n\n\u003C!-- more -->\n\nGit repositories can't get larger than a few gigabytes so if you want to use large binaries you need to extend it.\nThe most extensive open source project to do this is Git Annex, which [started in 2010](https://en.wikipedia.org/wiki/Git-annex).\nThere were many other projects similar to this such as [Git Media](https://github.com/alebedev/git-media).\nGitHub chose to start a new project in private called Git LFS [in September 2013 based on Git Media](https://github.com/github/git-lfs/commit/d8f780329b64e789553bc8ccccfb993ebc430325).\n\nIn February of 2015 we [released support for Git Annex](/blog/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git/) in our proprietary GitLab Enterprise Edition.\nAlmost all of the code to support this was included in the open source [GitLab Shell](https://gitlab.com/gitlab-org/gitlab-shell).\n\nIn April of 2015 GitHub [announced Git LFS](https://github.com/blog/1986-announcing-git-large-file-storage-lfs) and open sourced [the client](https://github.com/github/git-lfs) and a [reference implementation for the server](https://github.com/github/lfs-test-server).\nThe reference implementation is called 'lfs-test-server' and the [first section of the readme](https://github.com/github/lfs-test-server#lfs-test-server) mentions that \"It is intended to be used for testing the Git LFS client and is not in a production ready state.\"\nThe client implementation is really well done and many people request support for it [on our feature request tracker](http://feedback.gitlab.com/forums/176466-general/suggestions/7502608-git-large-file-storage-lfs-support).\n\nObviously we would like to support it properly and wondered [if the test server code is something we can use in production](https://twitter.com/gitlab/status/623089117983821824).\nWe did not get a response to the above tweet nor to an email we sent.\nOf course nobody owes us a response and GitHub is free to do as they please with their code.\n\nInterestingly a day later the twitter account [gitlabceohere](https://twitter.com/gitlabceohere) is also [in the market for something production-ready](https://twitter.com/gitlabceohere/status/623521722424295425).\nWe don't know who is behind the account (which has been pretty funny so far), we only know that the first 6 [followers of the account](https://twitter.com/gitlabceohere/followers) are all current or former GitHub employees.\n\nWe think that the best course of action is to use the Git LFS reference implementation and make it work for GitLab.\nUnfortunately we'll have to fork the project since we have to remove the [user management that is included in the project](https://github.com/github/lfs-test-server#running).\nOf course our fork will be open source and in addition we plan to add Git LFS support to both GitLab CE and EE.\nThe work on this has already started with https://github.com/gitlabhq/gitlab-shell/pull/230#issuecomment-116735181 that was contributed by Artem Navrotskiy.\nHopefully there will be more merge requests from the rest of the community and the people at GitLab the company will do their best to contribute too.\nCurrently our estimate is to release an alpha version of Git LFS with GitLab 8.1 and a beta in 8.2.\n",{"slug":5383,"featured":6,"template":683},"towards-a-production-quality-open-source-git-lfs-server","content:en-us:blog:towards-a-production-quality-open-source-git-lfs-server.yml","Towards A Production Quality Open Source Git Lfs Server","en-us/blog/towards-a-production-quality-open-source-git-lfs-server.yml","en-us/blog/towards-a-production-quality-open-source-git-lfs-server",{"_path":5389,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5390,"content":5395,"config":5400,"_id":5402,"_type":17,"title":5403,"_source":18,"_file":5404,"_stem":5405,"_extension":21},"/en-us/blog/1-5m-raised-in-seed-funding-for-gitlab-to-accelerate-growth-and-expand-operations",{"title":5391,"description":5392,"ogTitle":5391,"ogDescription":5392,"noIndex":6,"ogImage":5304,"ogUrl":5393,"ogSiteName":671,"ogType":672,"canonicalUrls":5393,"schema":5394},"$1.5M seed funding for GitLab to sccelerate growth","We are excited to announce that we have raised $1.5M in seed funding for GitLab to accelerate growth and expand operations.","https://about.gitlab.com/blog/1-5m-raised-in-seed-funding-for-gitlab-to-accelerate-growth-and-expand-operations","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"1.5M raised in seed funding for GitLab to accelerate growth and expand operations\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2015-07-09\",\n      }",{"title":5396,"description":5392,"authors":5397,"heroImage":5304,"date":5398,"body":5399,"category":14},"1.5M raised in seed funding for GitLab to accelerate growth and expand operations",[699],"2015-07-09","\n\nGitLab [started](https://gitlab.com/gitlab-org/gitlab-ce/commits/v0.9.4) as a\non-premises software where [Dmitriy](/company/team/)\ncould put his repositories.\nOpen-source; built by and for developers, our community grew quickly to\n[hundreds](http://contributors.gitlab.com/) of contributors world-wide.\n\nToday, over a hundred thousands organizations are using GitLab to build software\nthat puts people in space (NASA, SpaceX), helps discover new particles (CERN) and\nmove computing forward (IBM, Qualcomm), among many others.\nThese organizations and many individual contributors hack on,\ncontribute and help GitLab become better every single day.\n\nIt is our goal to become the default solution for anyone building software and\nworking together. The excitement and passion of our community has convinced us\nthat open-source is the way forward. We want to accelerate our growth and expand\noperations so we can reach more people and build an even better GitLab.\n\nIn the effort to reach our goal, we are excited to announce that we have raised\n$1.5M in seed funding led by Khosla Ventures, 500 Startups, Crunchfund,\nSound Ventures (Ashton Kutcher), and Liquid 2 Ventures (Joe Montana).\n\n\u003C!--more-->\n\n## Building an Open-Source Company\n\nThe popularity of GitLab as an open-source project made it possible to found a\ncompany. By selling support and later [GitLab Enterprise Edition](/pricing/)\nwe were able to grow a company that was able to support GitLab for large enterprises\nby [integrating with their own software](/pricing/feature-comparison/),\nwhile still giving back to the community new features in every release of GitLab CE\nand a completely free hosted service in the form of [GitLab.com](/pricing/) .\n\nThese moves made it possible for the majority of our team to nerd-out in Silicon Valley\nat [Y Combinator](/blog/gitlab-is-part-of-the-y-combinator-family/)\nat the start of this year, where we learned a lot about business and growth, and\ngot motivated by the enthusiasm and ambition of our batch-mates.\n\nBy now, we knew we wanted to go above and beyond what we had done so far\nand make GitLab bigger and better for everyone, which is why we've started\nworking together with some amazing investors.\n\nVinod Khosla, founder and partner of Khosla Ventures said this about us:\n\n> “There’s a big market demand for more open-source solutions that allow engineers\nto create, review, and deploy code enabling their teams to build better products faster.”\n\n> “We invested in GitLab because it meets this demand by allowing engineers to more\neasily review each other’s work, collaborate, and merge good input,\nthereby accelerating the iterative process behind creating products.”\n\nWe're all very excited with this opportunity our investors have given us.\nIt means we can accelerate growth and scale our US operations, which\nincludes the recent opening of a new Experience Center in San Francisco (don't worry,\nwe're [still remote](/blog/the-remote-manifesto/)!).\n\nSytse \"Sid\" Sijbrandij, our CEO said:\n\n> “The GitLab team is thrilled to have such an experienced and respected group of investors.\nWe started GitLab with a dream to become the default solution for developers to\ncreate better products together, faster.\"\n\n> \"Enterprise technology is being replaced by open-source technology,\nand this seed round of funding will help us accelerate our growth and\nbuild our sales and marketing team in San Francisco to work more closely with\ncurrent and new clients.”\n\n## Thank you for believing in us\n\nWe'd like to thank our amazing community that has contributed major features,\nbug fixes, documentation updates and more than we can ever return. We owe\nGitLab's existence to your enthusiasm, drive and hard work.\n\nThank you to our team, that has been working hard every single day and feels\nmore like a highly distributed, international family than a company.\nWe especially like to thank the [core team](/community/core-team/)\nmembers that are not with GitLab Inc: Nihad Abbasov, Robert Schilling,\nHannes Rosenögger, Achilleas Pipinellis, Stan Hu, Jeroen van Baarsen and Drew Blessing.\n\nAnd thank you to our investors for giving us trust and support in achieving our\ngoals and vision.\n\nIt was a little more than a year ago that we were only dreaming about being\na funded company. We're extremely excited and hopeful for the future of GitLab\nas an amazing tool to build products, as a community and as a company.\n\n_Want to help GitLab grow? [We're looking for people to work with us!](/jobs/)_\n\n",{"slug":5401,"featured":6,"template":683},"1-5m-raised-in-seed-funding-for-gitlab-to-accelerate-growth-and-expand-operations","content:en-us:blog:1-5m-raised-in-seed-funding-for-gitlab-to-accelerate-growth-and-expand-operations.yml","1 5m Raised In Seed Funding For Gitlab To Accelerate Growth And Expand Operations","en-us/blog/1-5m-raised-in-seed-funding-for-gitlab-to-accelerate-growth-and-expand-operations.yml","en-us/blog/1-5m-raised-in-seed-funding-for-gitlab-to-accelerate-growth-and-expand-operations",{"_path":5407,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5408,"content":5413,"config":5418,"_id":5420,"_type":17,"title":5421,"_source":18,"_file":5422,"_stem":5423,"_extension":21},"/en-us/blog/operating-as-gitlab-inc",{"title":5409,"description":5410,"ogTitle":5409,"ogDescription":5410,"noIndex":6,"ogImage":967,"ogUrl":5411,"ogSiteName":671,"ogType":672,"canonicalUrls":5411,"schema":5412},"GitLab now operating as US corporation","Today we will begin operating as GitLab, Inc. Read more about this here!","https://about.gitlab.com/blog/operating-as-gitlab-inc","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab now operating as US corporation\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Haydn Mackay\"}],\n        \"datePublished\": \"2015-07-01\",\n      }",{"title":5409,"description":5410,"authors":5414,"heroImage":967,"date":5416,"body":5417,"category":14},[5415],"Haydn Mackay","2015-07-01","\n\nAs an organization, GitLab is fully distributed where employees are free\nto work from wherever they feel most productive. Likewise, our customers hail\nfrom all corners of the globe but mostly North America. So today we will begin\noperating as GitLab, Inc.\n\n\u003C!-- more -->\n\nGitLab was started in the Ukraine by Dmitriy Zaporozhets, who serves as the\ncompany's CTO. Together with Sytse Sijbrandij (CEO) they founded a Dutch\ncompany (GitLab B.V.) to maintain the open source project and provide related\ngoods and services.\n\nAs the company grew, it made sense to have a presence close to Silicon Valley so\nthe company opened an Experience Center in San Francisco where employees can work from if\nthey choose.\n\nHowever, operating as a Dutch corporation posed some obstacles for certain\ncustomers and since the majority of them are headquartered in North America\nit was decided to incorporate in the US and begin trading as GitLab, Inc.\n\nPlease [contact our sales team](/sales/) if you'd like more information on our bank and\nbeneficiary informatiom.\n",{"slug":5419,"featured":6,"template":683},"operating-as-gitlab-inc","content:en-us:blog:operating-as-gitlab-inc.yml","Operating As Gitlab Inc","en-us/blog/operating-as-gitlab-inc.yml","en-us/blog/operating-as-gitlab-inc",{"_path":5425,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5426,"content":5431,"config":5436,"_id":5438,"_type":17,"title":5439,"_source":18,"_file":5440,"_stem":5441,"_extension":21},"/en-us/blog/gitlab-com-and-logjam",{"title":5427,"description":5428,"ogTitle":5427,"ogDescription":5428,"noIndex":6,"ogImage":967,"ogUrl":5429,"ogSiteName":671,"ogType":672,"canonicalUrls":5429,"schema":5430},"GitLab.com and Logjam","We've updated the default/recommended SSL ciphers for all GitLab installations and implemented new ciphers on GitLab.com. Read more!","https://about.gitlab.com/blog/gitlab-com-and-logjam","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab.com and Logjam\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Marin Jankovski\"}],\n        \"datePublished\": \"2015-06-17\",\n      }",{"title":5427,"description":5428,"authors":5432,"heroImage":967,"date":5434,"body":5435,"category":14},[5433],"Marin Jankovski","2015-06-17","\n\nWe've previously announced [security advisory for Logjam vulnerability](/blog/security-advisory-for-logjam-vulnerability/). In that announcement we've mentioned that GitLab.com is using 1024-bit DH groups to retain compatibility with older Java-based clients.\n\nWe've updated the default/recommended SSL ciphers for all GitLab installations and implemented new ciphers on GitLab.com.\n\n\u003C!--more-->\n\nAfter some research and testing we've decided to change the SSL cipher suite served by the web server/load balancer.\n\nThis decision was made after weighing on the trade-offs between having the stronger DH params and denying access to Java 6 based clients.\n\n\n#### Using 2048-bit DHE params\n\nGenerating the 2048-bit DHE params was advised to help against the Logjam vulnerability. While this is a way to go for most servers, with GitLab.com we have to keep in mind that we have users using older Java-based clients.\nAdopting the stronger params suites would prevent those users using GitLab.com completely.\nAlthough the number of these users is not high, denying them access does not seem like an option.\n\n#### Removing DHE suites\n\nDHE suites have a couple of issues:\n\n* [DHE is slow](https://community.qualys.com/blogs/securitylabs/2013/06/25/ssl-labs-deploying-forward-secrecy)\n* Not all browsers support all the necessary suites\n\nOne advantage of having DHE together with ECDHE suites is that this allows forward secrecy to all clients.\n\nWe then turned to investigating how others are handling this issue and we found out that, for example, Google sites mostly [do not have DHE suites in their configuration](https://www.ssllabs.com/ssltest/analyze.html?d=www.google.com).\n\nWith this in mind we've tried removing the DHE suites and the result was as follows:\n\n* All major browsers and clients retain forward secrecy using ECDHE\n* SSL labs score went from B to A\n* There is no forward secrecy for Android 2.3.7, Java 6 and OpenSSL 0.9.8\n\nAfter considering the trade-offs, we've decided to remove the DHE suites from our cipher suite on GitLab.com.\n\nForward secrecy is now denied for Android 2.3.7, Java 6 and OpenSSL 0.9.8 but we suspect that number of users affected will be extremely low.\n\nWe have also updated the recommended configurations for omnibus-gitlab packages and GitLab installation from source.\n\n",{"slug":5437,"featured":6,"template":683},"gitlab-com-and-logjam","content:en-us:blog:gitlab-com-and-logjam.yml","Gitlab Com And Logjam","en-us/blog/gitlab-com-and-logjam.yml","en-us/blog/gitlab-com-and-logjam",{"_path":5443,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5444,"content":5449,"config":5453,"_id":5455,"_type":17,"title":5456,"_source":18,"_file":5457,"_stem":5458,"_extension":21},"/en-us/blog/feature-highlight-approve-merge-request",{"title":5445,"description":5446,"ogTitle":5445,"ogDescription":5446,"noIndex":6,"ogImage":967,"ogUrl":5447,"ogSiteName":671,"ogType":672,"canonicalUrls":5447,"schema":5448},"Feature Highlight: Approve Merge Request","With less than a week until GitLab 7.12, we've got a nice preview for you today: Merge Request Approvals in GitLab EE. View more here!","https://about.gitlab.com/blog/feature-highlight-approve-merge-request","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Feature Highlight: Approve Merge Request\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Dmitriy Zaporozhets\"}],\n        \"datePublished\": \"2015-06-16\",\n      }",{"title":5445,"description":5446,"authors":5450,"heroImage":967,"date":5451,"body":5452,"category":14},[4877],"2015-06-16","\n\nWith less than a week until GitLab 7.12, we've got a nice preview for you today:\nMerge Request Approvals in GitLab EE.\n\nUsually you accept a merge request the moment it is ready and reviewed.\nBut in some cases you want to make sure that every merge request is reviewed\nand signed off by several people before merging it.\nWith GitLab Enterprise Edition 7.12, you can enforce such a workflow\nthat requires multiple reviewers with the new Merge Request Approval feature.\n\n![approve_merge_request](https://about.gitlab.com/images/feature_approval/mr.png)\n\n\u003C!-- more -->\n\nTo enable approvals, go to project settings page and set the\n\"Approvals required\" field to a numeric value. For example, if you set it to `3`\neach merge request has to receive 3 approvals from different people\nbefore it can be merged through the user interface.\n\n![approve_setting](https://about.gitlab.com/images/feature_approval/settings.png)\n\nAfter setting the approval, you will see an `Approve` button on merge requests,\nrather than an `Accept` button. Once the merge request has enough approvals,\nyou will be able to merge it as usual.\n\nWe'd love to hear what you think of this new feature in the comments below.\n",{"slug":5454,"featured":6,"template":683},"feature-highlight-approve-merge-request","content:en-us:blog:feature-highlight-approve-merge-request.yml","Feature Highlight Approve Merge Request","en-us/blog/feature-highlight-approve-merge-request.yml","en-us/blog/feature-highlight-approve-merge-request",{"_path":5460,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5461,"content":5466,"config":5470,"_id":5472,"_type":17,"title":5473,"_source":18,"_file":5474,"_stem":5475,"_extension":21},"/en-us/blog/did-you-install-gitlab-from-source-recently-check-your-git-version",{"title":5462,"description":5463,"ogTitle":5462,"ogDescription":5463,"noIndex":6,"ogImage":967,"ogUrl":5464,"ogSiteName":671,"ogType":672,"canonicalUrls":5464,"schema":5465},"Did you install GitLab from source? Check your Git version","Although the preferred way to install GitLab is to use our omnibus packages, you can also install GitLab Community Edition or Enterprise Edition 'from source'.","https://about.gitlab.com/blog/did-you-install-gitlab-from-source-recently-check-your-git-version","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Did you install GitLab from source? Check your Git version\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jacob Vosmaer\"}],\n        \"datePublished\": \"2015-06-12\",\n      }",{"title":5462,"description":5463,"authors":5467,"heroImage":967,"date":5468,"body":5469,"category":14},[5344],"2015-06-12","\n\nAlthough the preferred way to install GitLab is to use our [omnibus\npackages](/install/), you can also install GitLab Community Edition or\nEnterprise Edition 'from source'. If you used this installation method, and if\nyou compiled Git from source in the process then please check whether your Git\nversion defends against Git vulnerability CVE-2014-9390. This issue does not\napply to our Omnibus packages (DEB or RPM).\n\n\u003C!-- more -->\n\nAlthough [GitLab itself is not affected by\nCVE-2014-9390](/blog/gitlab-not-affected-by-cve-2014-9390-git-vulnerability/),\na GitLab server may be used to deliver 'poisoned' Git repositories to users on\nvulnerable systems. Upgrading Git on your GitLab server stops users from\npushing poisoned repositories to your GitLab server.\n\nDue to an oversight, the [guide for installing GitLab from\nsource](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md)\nstill contained instructions telling administrators to install Git 2.1.2 if the\nversion of Git provided by their Linux distribution was too old. Git 2.1.2 does\nnot defend against CVE-2014-9390.\n\nIf your GitLab server uses `/usr/local/bin/git` please check your Git version\nusing the instructions in this [upgrade\nguide](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/7.11-to-7.12.md#0-double-check-your-git-version).\n",{"slug":5471,"featured":6,"template":683},"did-you-install-gitlab-from-source-recently-check-your-git-version","content:en-us:blog:did-you-install-gitlab-from-source-recently-check-your-git-version.yml","Did You Install Gitlab From Source Recently Check Your Git Version","en-us/blog/did-you-install-gitlab-from-source-recently-check-your-git-version.yml","en-us/blog/did-you-install-gitlab-from-source-recently-check-your-git-version",{"_path":5477,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5478,"content":5483,"config":5486,"_id":5488,"_type":17,"title":5489,"_source":18,"_file":5490,"_stem":5491,"_extension":21},"/en-us/blog/price-changes",{"title":5479,"description":5480,"ogTitle":5479,"ogDescription":5480,"noIndex":6,"ogImage":967,"ogUrl":5481,"ogSiteName":671,"ogType":672,"canonicalUrls":5481,"schema":5482},"Changes to Enterprise Edition subscription pricing","Today we are announcing two changes to GitLab Enterprise Edition subscription pricing. You can learn more here!","https://about.gitlab.com/blog/price-changes","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Changes to Enterprise Edition subscription pricing\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Haydn Mackay\"}],\n        \"datePublished\": \"2015-06-12\",\n      }",{"title":5479,"description":5480,"authors":5484,"heroImage":967,"date":5468,"body":5485,"category":14},[5415],"\n\nToday we are announcing two changes to GitLab Enterprise Edition subscription pricing.\nThe changes are intended to better reflect the value of each offering and\nensure our subscription options cater to the needs of different organizations.\n\nIn short, our basic subscription is now $19,10 more expensive, but in 10-user packs.\nOur Plus subscription is now $100 more affordable. Standard and terms remain unchanged.\n\n\u003C!-- more -->\n\nAs of today (June 12, 2015) the following will take affect:\n\n* Basic Subscriptions will cost $390 per year for a 10-user pack ($39 per user / per year).\nCurrent Basic Subscribers will be offered a 25% discount on this new pricing at their next renewal.\nHowever, new pricing will apply to subsequent renewals and any additional user packs.\nBasic subscriptions are now available in 10-user packs, making it slightly more\naffordable for small teams.\n\n* Plus Subscriptions will cost $14,900 for a 100-user pack ($149 per user / per year).\nCurrent Plus subscribers will receive a prorated refund on the price difference.\n\nThere are no changes in the software features or service level of Basic or Plus subscriptions,\nwhich you can view on our [website here](/pricing/).\nStandard Subscription pricing will also remain unchanged at $4,900 per year for\neach 100-user pack ($49 per user / per year).\n\nAll current quotes will be honored until their expiration (60 days from issue date)\nbut the new pricing will apply to any subsequent orders, including renewals.\n\nOur goal is to keep GitLab the most affordable enterprise grade development platform available.\nThese changes should not have any significant effect on our ability to achieve that.\nWe felt our Basic plan was underpriced and Plus plan was overpriced.\nThese changes reduce the price difference between them.\n\nIf you have questions about the changes or about pricing in general,\nplease [contact our sales team](/sales/).\n\n## Update\n\nOriginally we had planned to extend a 25% discount off the new pricing toward existing Basic Subscibers next renewal. However, after careful consideration we decided to keep the old pricing ($398 for a pack of 20 users) in effect for existing Basic Subscribers through June 12, 2016. This also includes any additional subscription packs ordered between now and June 12, 2016.\n\nThe price of the Basic GitLab subscription for our existing customers is therefore still at $19.90 per user, cheaper than the $29.25 per user that we originally proposed above.\n\nAs of June 12, 2016 the new pricing of a Basic Subscription ($390 for a pack of 10 users) will apply to both new and existing subscribers.\n\nIf you have questions about pricing, please [contact our sales team](/sales/).\n",{"slug":5487,"featured":6,"template":683},"price-changes","content:en-us:blog:price-changes.yml","Price Changes","en-us/blog/price-changes.yml","en-us/blog/price-changes",{"_path":5493,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5494,"content":5499,"config":5503,"_id":5505,"_type":17,"title":5506,"_source":18,"_file":5507,"_stem":5508,"_extension":21},"/en-us/blog/security-advisory-for-logjam-vulnerability",{"title":5495,"description":5496,"ogTitle":5495,"ogDescription":5496,"noIndex":6,"ogImage":967,"ogUrl":5497,"ogSiteName":671,"ogType":672,"canonicalUrls":5497,"schema":5498},"Security advisory for Logjam vulnerability","Find information from GitLab relating to the recently announced Logjam vulnerability which allows an attacker to do a man-in-the-middle attack!","https://about.gitlab.com/blog/security-advisory-for-logjam-vulnerability","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Security advisory for Logjam vulnerability\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Marin Jankovski\"}],\n        \"datePublished\": \"2015-05-21\",\n      }",{"title":5495,"description":5496,"authors":5500,"heroImage":967,"date":5501,"body":5502,"category":14},[5433],"2015-05-21","\n\nA recently announced [Logjam vulnerability](https://weakdh.org/) allows an attacker to do a man-in-the-middle attack, allowing them to downgrade a TLS connection to 512-bit DH parameters. More details on what that is and means can be [found on openssl blog](https://www.openssl.org/blog/blog/logjam-freak-upcoming-changes/).\n\n\u003C!--more-->\n\n### Impact on GitLab\n\nGitLab is using, by default, up-to-date SSL ciphers:\n\n* `Export Cipher Suites` are not used.\n* `Elliptic-Curve Diffie-Hellman` ciphers are used\n* By default, 1024-bit DH groups are used\n\nThis means that GitLab is safe in principle. When using 1028-bit DH groups there is a small chance that an attacker with nation-state resources could be eavesdropping.\n\nIf you find this insufficient for your GitLab installation, you can generate 2048-bit DH groups and enable the `ssl_dhparam` option in NGINX config.\n\nParams can be generated with:\n\n```bash\nopenssl dhparam -out dhparams.pem 2048\n```\n\nAfter the `dhparams.pem` file has been generated you will need to tell Nginx where the file is located:\n\n#### GitLab installations using omnibus-gitlab packages\n\n*For packages version 7.11.0 and up.*\n\nPlace the `dhparams.pem` file in `/etc/gitlab/ssl/` directory.\n\nIn `/etc/gitlab/gitlab.rb`, enable the following setting:\n\n```ruby\nnginx['ssl_dhparam'] = \"/etc/gitlab/ssl/dhparams.pem\"\n```\n\nand do `sudo gitlab-ctl reconfigure`.\n\nMore information can be [found in the omnibus-gitlab nginx documentation](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/7-11-stable/doc/settings/nginx.md#using-custom-ssl-ciphers).\n\n*Workaround for packages prior to version 7.11.0*\n\nPlace the `dhparams.pem` file in `/etc/gitlab/ssl/` directory.\n\nIn `/etc/gitlab/gitlab.rb`, enable the following setting:\n\n```ruby\nnginx['custom_gitlab_server_config'] = \"ssl_dhparam /etc/gitlab/ssl/dhparams.pem;\\n\"\n```\nand run `sudo gitlab-ctl reconfigure`.\n\n#### GitLab installations from source\n\nPlace the generated `dhparams.pem` in a suitable location, for example `/etc/nginx/ssl/dhparams.pem`.\n\nIn GitLab nginx config find `ssl_dhparam` config and set it to `ssl_dhparam /etc/nginx/ssl/dhparams.pem;`.\n\nReload your nginx config.\n\n### Impact on GitLab.com\n\nGitLab.com is using 1028-bit DH groups. Due to incompatibilities with older Java-based clients we haven't enabled 2048-bit DH params yet as this would prevent some people from using GitLab.com. We are looking into ways to keep a good SSLlabs score and allowing users with older Java-base clients to use GitLab.com.\n\nWe are examining the impact of this and we will update this blog post once we have more information.\n",{"slug":5504,"featured":6,"template":683},"security-advisory-for-logjam-vulnerability","content:en-us:blog:security-advisory-for-logjam-vulnerability.yml","Security Advisory For Logjam Vulnerability","en-us/blog/security-advisory-for-logjam-vulnerability.yml","en-us/blog/security-advisory-for-logjam-vulnerability",{"_path":5510,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5511,"content":5516,"config":5521,"_id":5523,"_type":17,"title":5524,"_source":18,"_file":5525,"_stem":5526,"_extension":21},"/en-us/blog/gitlab-gitorious-free-software",{"title":5512,"description":5513,"ogTitle":5512,"ogDescription":5513,"noIndex":6,"ogImage":967,"ogUrl":5514,"ogSiteName":671,"ogType":672,"canonicalUrls":5514,"schema":5515},"GitLab, Gitorious, and Free Software","This is a guest post by Mike Gerwitz, a free software hacker and activist, and author of GNU ease.js on the free software ideology","https://about.gitlab.com/blog/gitlab-gitorious-free-software","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab, Gitorious, and Free Software\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Mike Gerwitz\"}],\n        \"datePublished\": \"2015-05-20\",\n      }",{"title":5512,"description":5513,"authors":5517,"heroImage":967,"date":5519,"body":5520,"category":14},[5518],"Mike Gerwitz","2015-05-20","\n\n*This is a guest post by [Mike Gerwitz][11], a [free software][2] hacker and\n activist, and author of [GNU ease.js][24].*\n\nIn early March of this year, it was announced that\n[GitLab would acquire Gitorious][0] and shut down `gitorious.org` by 1\nJune, 2015.  [Reactions from the community][1] were mixed, and\nunderstandably so: while GitLab itself is a formidable alternative to wholly\nproprietary services, its acquisition of Gitorious strikes a chord with the\nfree software community that gathered around Gitorious in the name of\n[software freedom][2].\n\n\u003C!-- more -->\n\nAfter hearing that announcement,\n[as a free software hacker and activist myself][11], I was naturally\nuneasy.  Discussions of alternatives to Gitorious and GitLab ensued on the\n[`libreplanet-discuss`][12] mailing list.  Sytse Sijbrandij (GitLab\nB.V. CEO) happened to be present on that list;\n[I approached him very sternly][13] with a number of concerns, just as I\nwould with anyone that I feel does not understand certain aspects of the\n[free software philosophy][2].  To my surprise, this was not the case at\nall.\n\nSytse has spent a lot of time accepting and considering community input for\nboth the Gitorious acquisition and GitLab itself.  He has also worked with\nme to address some of the issues that I had raised.  And while these issues\nwon't address everyone's concerns, they do strengthen GitLab's commitment to\n[software freedom][2], and are commendable.\n\nI wish to share some of these details here; but to do so, I first have to\nprovide some background to explain what the issues are, and why they are\nimportant.\n\n\n## Free Software Ideology\n[Gitorious][3] was (and still is) one of the most popular Git repository\nhosts, and largely dominated until the introduction of GitHub.  But even as\nusers flocked to [GitHub's proprietary services][28], users who value freedom\ncontinued to support Gitorious, both on `gitorious.org` and by installing\ntheir own instances on their own servers.  Since Gitorious is\n[free software][2], users are free to study, modify, and share it with\nothers.  But [software freedom does not apply to Services as a\nSoftware Substitute (SaaSS)][4] or remote services---you cannot apply the\n[four freedoms][2] to something that you do not yourself possess---so why do\nusers still insist on using `gitorious.org` despite this?\n\nThe matter boils down to supporting a philosophy:  The\n[GNU General Public License (GPL)][6] is a license that turns copyright on\nits head: rather than using copyright to restrict what users can do with a\nprogram, the GPL instead [ensures users' freedoms][8] to study, modify, and\nshare it.  But that isn't itself enough: to ensure that the software always\nremains free (as in freedom), the GPL ensures that all *derivatives* are\n*also* licensed under similar terms.  This is known as [copyleft][9], and it\nis vital to the free software movement.\n\nGitorious is licensed under the\n[GNU Affero General Public License Version 3 (AGPLv3)][5]---this takes the\n[GPL][6] and adds an additional requirement: if a modified version of the\nprogram is run on a sever, users communicating with the program on that\nserver must have access to the modified program's source code.  This ensures\nthat [modifications to the program are available to all users][7]; they\nwould otherwise be hidden in private behind the server, with others unable\nto incorporate, study, or share them.  The AGPLv3 is an ideal license for\nGitorious, since most of its users will only ever interact with it over a\nnetwork.\n\nGitLab is also free software: its [Expat license][10] (commonly referred to\nambiguously as the \"MIT license\") permits all of the same freedoms that\nare granted under the GNU GPL.  But it does so in a way that is highly\npermissive: it permits relicensing under *any* terms, free or not.  In other\nwords, one can fork GitLab and derive a proprietary version from it, making\nchanges that deny users [their freedoms][2] and cannot be incorporated back\ninto the original work.\n\nThis is the issue that the free software community surrounding Gitorious has\na problem with: any changes contributed to GitLab could in turn benefit a\nproprietary derivative.  This situation isn't unique to GitLab: it applies\nto all non-copyleft (\"permissive\") [free software licenses][26].  And this\nissue is realized by GitLab itself in the form of its GitLab Enterprise\nEdition (GitLab EE): a proprietary derivative that adds additional\nfeatures atop of GitLab's free Community Edition (CE).  For this reason,\nmany free software advocates are uncomfortable contributing to GitLab, and\nfeel that they should instead support other projects; this, in turn, means\nnot supporting GitLab by using and drawing attention to their hosting\nservices.\n\nThe copyleft vs. permissive licensing debate is one of the free software\nmovement's most heated.  I do not wish to get into such a debate here.  One\nthing is clear: GitLab Community Edition (GitLab CE) is free\nsoftware.  Richard Stallman (RMS) [responded directly to the thread on\n`libreplanet-discuss`][20], stating plainly:\n\n>  We have a simple way of looking at these two versions.  The free\n>  version is free software, so it is ethical.  The nonfree version is\n>  nonfree software, so it is not ethical.\n\nDoes GitLab CE deserve attention from the free software community?  I\nbelieve so.  Importantly, there is another strong consideration: displacing\nproprietary services like GitHub and Bitbucket, which host a large number of\nprojects and users.  GitLab has a strong foothold, which is an excellent\nplace for a free software project to be in.\n\nIf we are to work together as a community, we need to respect GitLab's\nfree licensing choices just as we expect GitLab to respect ours.  Providing\nrespect does not mean that you are conceding: I will never personally use a\nnon-copyleft license for my software; I'm firmly rooted in my dedication to\nthe [free software philosophy][2], and I'm sure that many other readers are\ntoo.  But using a non-copyleft license, although many of us consider it to\nbe a weaker alternative, [is not wrong][23].\n\n\n## Free JavaScript\nAs I mentioned above,\n[software freedom and network services are separate issues][4]---the four\nfreedoms do not apply to interacting with `gitlab.com` purely over a network\nconnection, for example, because you are not running its software on your\ncomputer.  However, there is an overlap: JavaScript code downloaded to be\nexecuted in your web browser.\n\n[Non-free JavaScript][15] is a particularly nasty concern: it is software\nthat is downloaded automatically from a server---often without prompting\nyou---and then immediately executed.  Software is now being executed on your\nmachine, and [your four freedoms][2] are once again at risk.  This, then,\n[is the primary concern][16] for any users visiting `gitlab.com`: not only\nwould this affect users that use `gitlab.com` as a host, but it would also\naffect *any user that visits* the website.  That would be a problem, since\nhosting your project there would be inviting users to run proprietary\nJavaScript.\n\nAs I was considering migrating my projects to GitLab, this was the\n[first concern I brought up to Sytse][14].  This problem arises because\n`gitlab.com` uses a GitLab EE instance: if it had used only its Community\nEdition (GitLab CE)---which is free software---then all served JavaScript\nwould have been free.  But any scripts served by GitLab EE that are not\nidentical to those served by GitLab CE are proprietary, and therefore\nunethical.  This same concern applies to GitHub, Bitbucket, and other\nproprietary hosts that serve JavaScript.\n\nSytse surprised me by stating that he would be willing to\n[freely license all JavaScript in GitLab EE][17], and by offering to give\nanyone access to the GitLab EE source code who wants to help out.  I took\nhim up on that offer.  Initially, I had submitted a patch to merge all\nGitLab EE JavaScript into GitLab CE, but Sytse came up with another,\nsuperior suggestion, that ultimately provided even greater reach.\n\n**I'm pleased to announce that Sytse and I were able to agree on a license\nchange (with absolutely no friction or hesitation on his part) that\nliberates all JavaScript served to the client from GitLab EE instances.**\nThere are two concerns that I had wanted to address: JavaScript code\ndirectly written for the client, and any code that produced JavaScript as\noutput.  In the former case, this includes JavaScript derived from other\nsources: for example, GitLab uses CoffeeScript, which compiles *into*\nJavaScript.  The latter case is important: if there is any code that\ngenerates fragments of JavaScript---e.g. dynamically at runtime---then that\ncode must also be free, or users would not be able to modify and share the\nresulting JavaScript that is actually being run on the client.  Sytse\naccepted my change verbatim, while adding his own sentence after mine to\ndisambiguate.  At the time of writing this post, GitLab EE's source code\nisn't yet publicly visible, so here is the relevant snippet from its\n`LICENSE` file:\n\n> The above copyright notices applies only to the part of this Software that\n> is not distributed as part of GitLab Community Edition (CE), and that is\n> not a file that produces client-side JavaScript, in whole or in part. Any\n> part of this Software distributed as part of GitLab CE or that is a file\n> that produces client-side JavaScript, in whole or in part, is copyrighted\n> under the MIT Expat license.\n\n## Further Discussion\nMy discussions with Sytse did not end there: there are other topics that\nhave not been able to be addressed before my writing of this post that would\ndo well to demonstrate commitment toward [software freedom][2].\n\nThe license change liberating client-side JavaScript was an excellent\nmove.  To expand upon it, I wish to submit a patch that would make GitLab\n[LibreJS compliant][21]; this provides even greater guarantees, since it\nwould allow for users to continue to block other non-free JavaScript that\nmay be served by the GitLab instance, but not produced by it.  For example:\na website/host that uses GitLab may embed proprietary JavaScript, or modify\nit without releasing the source code.  Another common issue is the user of\nanalytics software; `gitlab.com` uses Google Analytics.\n\nIf you would like to help with LibreJS compliance, please [contact me][11].\n\nI was brought into another discussion between Sytse and RMS that is\nunrelated to the GitLab software itself, but still a positive demonstration\nof a commitment to [software freedom][2]---the replacement of Disqus on the\n`gitlab.com` blog with a free alternative.  Sytse ended up making a\nsuggestion, saying he'd be \"happy to switch to\" [Juvia][22] if I'd help with\nthe migration.  I'm looking forward to this, as it is an important\ndiscussion area (that I honestly didn't know existed until Sytse told me\nabout it, because I don't permit proprietary JavaScript!).  He was even kind\nenough to compile a PDF of comments for one of our discussions, since he was\ncognizant ahead of time that I would not want to use Disqus.  (Indeed, I\nwill be unable to read and participate in the comments to this guest post\nunless I take the time to freely read and reply without running Disqus'\nproprietary JavaScript.)\n\nConsidering the genuine interest and concern expressed by Sytse in working\nwith myself and the free software community, I can only expect that GitLab\nwill continue to accept and apply community input.\n\n\n## Actions Speak Louder Than Words\nIt is not possible to address the copyleft issue without a change in\nlicense, which GitLab is not interested in doing.  So the best way to\nre-assure the community is through action.  [To quote Sytse][18]:\n\n> I think the only way to prove we're serious about open source is in our\n> actions, licenses or statements don't help.\n\nThere are fundamental disagreements that will not be able to be\nresolved between GitLab and the free software community---like their\n[\"open core\" business model][19].  But after working with Sytse and seeing\nhis interactions with myself, RMS, and many others in the free software\ncommunity, I find his actions to be very encouraging.\n\n*Are you interested in helping other websites liberate their JavaScript?\n Consider [joining the FSF's campaign][27], and\n [please liberate your own][16]!*\n\n*This post is licensed under the\n [Creative Commons Attribution-ShareAlike 3.0 Unported License][25].*\n\n\n[0]: /blog/gitlab-acquires-gitorious/\n[1]: https://news.ycombinator.com/item?id=9138419\n[2]: https://www.gnu.org/philosophy/free-sw.html\n[3]: https://gitorious.org/\n[4]: https://www.gnu.org/philosophy/who-does-that-server-really-serve.html\n[5]: https://www.gnu.org/licenses/agpl.html\n[6]: https://www.gnu.org/licenses/gpl.html\n[7]: https://www.gnu.org/licenses/why-affero-gpl.html\n[8]: https://www.gnu.org/licenses/quick-guide-gplv3.html\n[9]: https://www.gnu.org/philosophy/pragmatic.html\n[10]: https://www.gnu.org/licenses/license-list.html#Expat\n[11]: http://mikegerwitz.com/\n[12]: https://lists.gnu.org/mailman/listinfo/libreplanet-discuss\n[13]: https://lists.gnu.org/archive/html/libreplanet-discuss/2015-03/msg00075.html\n[14]: https://lists.gnu.org/archive/html/libreplanet-discuss/2015-04/msg00019.html\n[15]: https://www.gnu.org/philosophy/javascript-trap.html\n[16]: https://www.gnu.org/software/easejs/whyfreejs.html\n[17]: https://lists.gnu.org/archive/html/libreplanet-discuss/2015-04/msg00020.html\n[18]: https://news.ycombinator.com/item?id=9141801\n[19]: https://lists.gnu.org/archive/html/libreplanet-discuss/2015-03/msg00076.html\n[20]: https://lists.gnu.org/archive/html/libreplanet-discuss/2015-03/msg00095.html\n[21]: https://www.gnu.org/software/librejs/free-your-javascript.html\n[22]: https://github.com/phusion/juvia\n[23]: https://www.fsf.org/blogs/rms/selling-exceptions\n[24]: https://gnu.org/software/easejs\n[25]: http://creativecommons.org/licenses/by-sa/3.0/\n[26]: https://www.gnu.org/licenses/license-list.html\n[27]: https://fsf.org/campaigns/freejs\n[28]: http://mikegerwitz.com/about/githubbub\n",{"slug":5522,"featured":6,"template":683},"gitlab-gitorious-free-software","content:en-us:blog:gitlab-gitorious-free-software.yml","Gitlab Gitorious Free Software","en-us/blog/gitlab-gitorious-free-software.yml","en-us/blog/gitlab-gitorious-free-software",{"_path":5528,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5529,"content":5535,"config":5539,"_id":5541,"_type":17,"title":5542,"_source":18,"_file":5543,"_stem":5544,"_extension":21},"/en-us/blog/why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml",{"title":5530,"description":5531,"ogTitle":5530,"ogDescription":5531,"noIndex":6,"ogImage":5532,"ogUrl":5533,"ogSiteName":671,"ogType":672,"canonicalUrls":5533,"schema":5534},"Why we're replacing GitLab CI jobs with .gitlab-ci.yml","Every single GitLab installation ships with a powerful continuous integration tool: GitLab CI. Read how to enable it in 2 minutes.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684407/Blog/Hero%20Images/ci-yml.jpg","https://about.gitlab.com/blog/why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Why we're replacing GitLab CI jobs with .gitlab-ci.yml\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Job van der Voort\"}],\n        \"datePublished\": \"2015-05-06\",\n      }",{"title":5530,"description":5531,"authors":5536,"heroImage":5532,"date":5537,"body":5538,"category":14},[5128],"2015-05-06","\n\nIn case you didn't know yet: Every single GitLab installation\nships with a powerful [continuous integration tool](/solutions/continuous-integration/): GitLab CI.\nRead how to [enable it in 2 minutes](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/gitlab-ci/README.md#getting-started).\nWith GitLab CI you can run tests of your projects and triggers\nbuilds and deployments easily,\nas it integrates deeply with GitLab.\n\nUp until now, to set up the build / deploy commands you had to\ngo into GitLab CI and edit the scripts in a form. This made\nit very low-threshold to set up, but it felt lacking.\n\nWe're glad to tell you we'll get a better solution built on the principles and libraries of [Travis CI](https://www.travis-ci.org):\n`.gitlab-ci.yml`.\n\n\u003C!--more-->\n\nInstead of editing a form, in the future you will be able to\nadd a `.gitlab-ci.yml` file to your repository in which you\ncan specify your builds for GitLab CI.\nThis has some major (positive) repercussions for GitLab CI\nbuilds:\n\n#### 1. Version controlled\n\nCurrently, the script is just a single field in a form:\n![current setup of scripts](https://about.gitlab.com/images/ci-yml/jobs_old.png)\n\nThis means you get none of the advantages of git: no [version control](/topics/version-control/).\nBy moving this into the repository you get all the power of git and GitLab.\n\n#### 2. Builds for older versions\n\nHaving the job script live outside of the repository means that it will be the\nsame for every commit. That means that any change to the script will influence\nthe build for any commit, even if you are working on older branches / commits\nthat could be incompatible with the new build script.\n\nBy putting the build in the repository, your older commits can still be tested\nby an older version of the build script, while newer work can safely make changes\nto the build.\n\n#### 3. Build Forks\n\nForking a project with the latest version of GitLab CI will also copy the contents\nof the jobs settings, making it possible to build tests with your fork.\nHowever, this only works if the project and fork have the same owner and able\nto use the same runners.\n\nWith the script in the repository this makes this process a lot more transparent.\nOn top of that, a fork can easily add dependencies to its `.gitlab-ci.yml` file.\n\n#### 4. Different builds for different branches\n\nAt the moment you can't easily run different scripts for different branches.\n\nBy moving the script to the repository this opens up a whole new world of\nspecific builds for certain branches. For instance, you could set up your\ntime-intense integration tests to only run on pushes to your `production` branch\n- and on success, deploy your code immediately.\n\n#### 5. Single Source of Truth\n\nCurrently, only people with `master` access or higher to the project in GitLab\nare able to view and edit the `job settings` in GitLab CI. That makes it hard\nto see what is happening for all other developers.\n\nWith a single file in the repository, everyone with read access can see the contents,\nmaking it much more inviting to improve and review the build scripts.\n\n#### 6. Build matrices\n\nCurrently you can define multiple jobs, but you have to define each one yourself.\n\nIf you have multiple versions of the programming language, multiple environments and\nmultiple lists of dependencies, you end up making a job for each.\n\nWith `.gitlab-ci.yml` you will be able to run _build matrices_, where these jobs are\ngenerated for you. If you define each of the dimensions, the combinations\nwill be generated. This makes it easier to set up complex\ntest suites that require this.\n\n### Current jobs\n\nYour current job can be run by putting your\n`job.sh` in the root of the repo and referencing that in your\n.gitlab-ci.yml: `script:./job.sh`.\n\n## Where we got our inspiration\n\nThe awesome [Travis CI](https://travis-ci.org/) had the great\nidea to use a `.yml` file for builds and was followed\nby the popular [CircleCI](https://circleci.com). We're happy\nto follow this approach, which we believe is superior than\nany other. Jenkins jobs, for instance, do not solve the problems mentioned\nin the introduction.\n\nAs usual, our amazing community was already fully aware of this\nand we've seen demand for this on our [feedback page](http://feedback.gitlab.com/forums/176466-general/suggestions/5591851-store-build-configuration-in-the-repo-like-travi)\nand even [implementations](https://github.com/claudyus/ci-yml) for this!\n\nWe'll be using some of the great [Travis CI projects](https://github.com/travis-ci/travis-ci) that are freely available to build this.\n\n## Ships with GitLab 8.0\n\nThis change will deprecate the existing jobs, as we want to keep\nGitLab CI simple to use and develop for.\nMultiple ways of doing things is\nconfusing for new users, it makes documentation much harder and complicates\ndevelopment and debugging.\n\nThat means it is also a breaking change for anyone using\nGitLab CI. For this reason we will only introduce this\nchange with GitLab 8.0.\n\nWe're not sure yet after which minor version we'll release GitLab 8.0 (7.11, 7.12 or later).\n\nFollow the progress in the [GitLab CI repository](https://gitlab.com/gitlab-org/gitlab-ci).\n",{"slug":5540,"featured":6,"template":683},"why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml","content:en-us:blog:why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml.yml","Why Were Replacing Gitlab Ci Jobs With Gitlab Ci Dot Yml","en-us/blog/why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml.yml","en-us/blog/why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml",{"_path":5546,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5547,"content":5552,"config":5557,"_id":5559,"_type":17,"title":5560,"_source":18,"_file":5561,"_stem":5562,"_extension":21},"/en-us/blog/unofficial-runner-becomes-official",{"title":5548,"description":5549,"ogTitle":5548,"ogDescription":5549,"noIndex":6,"ogImage":967,"ogUrl":5550,"ogSiteName":671,"ogType":672,"canonicalUrls":5550,"schema":5551},"Unofficial runner becomes official one","This blog post about he alternative CI runner written in Go that can be easily run on any server with support for all latest technologies, including Docker.","https://about.gitlab.com/blog/unofficial-runner-becomes-official","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Unofficial runner becomes official one\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Kamil Trzciński\"}],\n        \"datePublished\": \"2015-05-03\",\n      }",{"title":5548,"description":5549,"authors":5553,"heroImage":967,"date":5555,"body":5556,"category":14},[5554],"Kamil Trzciński","2015-05-03","\n\nNot long time ago I built and wrote about the alternative CI runner written in Go. The single binary that can be easily run on any server with support for all latest technologies, including Docker. If you are interested here's blog post about it: [Unofficial GitLab Runner](/blog/unofficial-gitlab-ci-runner/). With great help of the community involved in testing today the runner becomes the official one, making the [old one](https://gitlab.com/gitlab-org/gitlab-ci-runner) written in Ruby deprecated.\n\n\u003C!-- more -->\n\n## Should I migrate?\n\nIf everything works for you on the old runner, there's no need to install the Go runner unless you need some of it's specific features, like: multiple concurrent jobs or Docker support.\n\n## How to get started?\n\nEverything related to **GitLab CI Multi-purpose Runner** was moved to the official repository: [GitLab.com/gitlab-org/gitlab-ci-multi-runner](https://gitlab.com/gitlab-org/gitlab-runner/). On the official page you will be able to find a project documentation with example setups that will help you build your projects. If you have any ideas or problems please let us know by creating an issue: [Issues](https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues). We also always happy to accept contributions: [Merge Request](https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/merge_requests).\n\n## How to install?\n\nThis is really simple:\n\n* [Install using Debian/Ubuntu/CentOS/RedHat package](https://gitlab.com/gitlab-org/gitlab-runner/blob/master/docs/install/linux-repository.md)\n* [Install on macOS](https://gitlab.com/gitlab-org/gitlab-runner/blob/master/docs/install/osx.md)\n* [Install on Windows](https://gitlab.com/gitlab-org/gitlab-runner/blob/master/docs/install/windows.md)\n* [Install as Docker Service](https://gitlab.com/gitlab-org/gitlab-runner/blob/master/docs/install/docker.md)\n\n## How to use it?\n\n```bash\n$ cd ~gitlab_ci_multi_runner\n$ gitlab-ci-multi-runner register\n```\n\nYou will be asked about how it should be configured. Once you do it you are pretty much ready to build projects.\n\n## Final word\n\nI'm also happy to join [GitLab Core Team](/community/core-team/). I guess that my role there will be to make this project better and better and to make the CI solution simpler and more robust.\n",{"slug":5558,"featured":6,"template":683},"unofficial-runner-becomes-official","content:en-us:blog:unofficial-runner-becomes-official.yml","Unofficial Runner Becomes Official","en-us/blog/unofficial-runner-becomes-official.yml","en-us/blog/unofficial-runner-becomes-official",{"_path":5564,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5565,"content":5570,"config":5574,"_id":5576,"_type":17,"title":5577,"_source":18,"_file":5578,"_stem":5579,"_extension":21},"/en-us/blog/gitlab-on-debian-8",{"title":5566,"description":5567,"ogTitle":5566,"ogDescription":5567,"noIndex":6,"ogImage":967,"ogUrl":5568,"ogSiteName":671,"ogType":672,"canonicalUrls":5568,"schema":5569},"GitLab on Debian 8","From now on, GitLab Omnibus packages for Debian 8 will be available with every release. Learn more here!","https://about.gitlab.com/blog/gitlab-on-debian-8","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab on Debian 8\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Job van der Voort\"}],\n        \"datePublished\": \"2015-05-01\",\n      }",{"title":5566,"description":5567,"authors":5571,"heroImage":967,"date":5572,"body":5573,"category":14},[5128],"2015-05-01","\n\nDebian is among the most popular platforms to run GitLab on.\nWith the stable [release](https://www.debian.org/News/2015/20150426) of Debian 8,\nwe wanted to make sure that early-adopters could run GitLab on their new machines.\n\nSo from now on, GitLab Omnibus packages for Debian 8 will be available with every\nrelease, find them on our [downloads page](/install/).\n\nAnd don't forget that we're running our package server in beta with the help\nof [Packagecloud.io](https://www.packagecloud.io). You can install GitLab Community Edition with:\n\n```\ncurl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb | sudo bash\nsudo apt-get install gitlab-ce\n```\n",{"slug":5575,"featured":6,"template":683},"gitlab-on-debian-8","content:en-us:blog:gitlab-on-debian-8.yml","Gitlab On Debian 8","en-us/blog/gitlab-on-debian-8.yml","en-us/blog/gitlab-on-debian-8",{"_path":5581,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5582,"content":5588,"config":5592,"_id":5594,"_type":17,"title":5595,"_source":18,"_file":5596,"_stem":5597,"_extension":21},"/en-us/blog/bitbucket-vs-gitlab-com",{"title":5583,"description":5584,"ogTitle":5583,"ogDescription":5584,"noIndex":6,"ogImage":5585,"ogUrl":5586,"ogSiteName":671,"ogType":672,"canonicalUrls":5586,"schema":5587},"Bitbucket vs. GitLab.com","Considering a move from Bitbucket to GitLab? We've compiled a list of our advantages for you to view.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684393/Blog/Hero%20Images/bb.jpg","https://about.gitlab.com/blog/bitbucket-vs-gitlab-com","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Bitbucket vs. GitLab.com\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Job van der Voort\"}],\n        \"datePublished\": \"2015-04-15\",\n      }",{"title":5583,"description":5584,"authors":5589,"heroImage":5585,"date":5590,"body":5591,"category":14},[5128],"2015-04-15","\n\nThe best thing of an open source project, GitLab in particular, is the community.\nNot only does the community provide us with much needed [feedback](http://feedback.gitlab.com),\nbut in our case, they often send us awesome new features themselves that are\nin high demand.\n\nThis gives us an edge versus Bitbucket, which has a long list of requested\nfeatures, but doesn't seem to be responsive to their users.\n\nTo convince some of you to move from Bitbucket to [GitLab.com](/pricing/) , we've compiled\na list of our advantages versus them. We'd love to hear what you think in\nthe comments.\n\n\u003C!-- more -->\n\n## GitLab.com and Community Edition are _completely_ free\n\nWhereas Bitbucket restricts you to work with only 5 people for free,\nGitLab.com is completely free. You want to host your 1000 repositories\nand 100 colleagues on GitLab.com? Free.\n\nYou want to run your own server with 1000 employees, restricted to your\nenvironment? Free.\n\nWe believe that source code hosting is a commodity and should be available\nto anyone at no cost.\nNormal support happens via a forum, like Gmail and Facebook.\nIf you want email support you can look at our [subscriptions](/pricing/). But without this,\nyou're definitely not missing out since GitLab.com has all the features of [GitLab Enterprise Edition](/pricing/feature-comparison/).\n\n## GitLab is beautifully designed\n\nJust look at it:\n\n![Nice design of GitLab](https://about.gitlab.com/images/bb/design.png)\n\n## Contributor Statistics\n\nThe top requested Bitbucket features? We've had it for years:\n\n![Contributor graphs](https://about.gitlab.com/images/bb/graphs.png)\n![Commit graphs](https://about.gitlab.com/images/bb/graphs2.png)\n\n## Group your Repositories\n\nGroups allow you to easily manage multiple repositories between people\nand set permissions, access rights and integrations.\n\nWe noticed that groups (teams) in Bitbucket are not as flexible as\nGitLab in allowing you to organize repositories and strictly limited\nto the amount of collaborators you have on them, making them more a\nway to sell subscriptions than actually used for grouping\nrepositories.\n\n![groups](https://about.gitlab.com/images/bb/groups.png)\n\nThe nice thing is that now you can also have Starred projects in GitLab,\ngiving you another way to organize repositories easily, if you have\nmany but only want to focus on a handful.\n\n_updated with information from [comments](/blog/bitbucket-vs-gitlab-com/#comment-1972206300)_\n\n## Source code Search\n\nWant to search the source code of a project?\nEnter anything in the top bar of any project and GitLab will search\nthrough all the contents of the repository, issues and anything that belongs\nto the project.\n\n![search](https://about.gitlab.com/images/bb/search.png)\n\n## Fine grained permission management\n\nWant to give someone permission to access the issue tracker, but\nnot the repository? You can!\n\nWant to give someone read access to a group of repositories,\nbut write access to one in particular? You can!\n\nWant to have a discussion about what kind of animal the GitLab logo is?\nNow you can!\n\n## Git Hooks\n\nIn GitLab Enterprise Edition, there is a list of pre-built Git Hooks available\nthat you can use by simply selecting them.\n\n## Comes with a CI!\n\nWith every GitLab installation, you get our continuous integration tool\nGitLab CI! GitLab.com users [can use it for free](http://doc.gitlab.com/ce/ci/quick_start/README.html). It integrates fully with GitLab, so you can easily see the\nbuild status of any branch, commit or merge request and run your\ndeployments automatically after!\n\n![GitLab CI integration](https://about.gitlab.com/images/bb/ci.png)\n\n## Import from Bitbucket, GitHub, anywhere\n\nWant to start using GitLab? You can easily import your repositories from\nBitbucket, GitHub, Gitorious or anywhere else, all in batch!\n\n![Import from anywhere](https://about.gitlab.com/images/bb/import.png)\n",{"slug":5593,"featured":6,"template":683},"bitbucket-vs-gitlab-com","content:en-us:blog:bitbucket-vs-gitlab-com.yml","Bitbucket Vs Gitlab Com","en-us/blog/bitbucket-vs-gitlab-com.yml","en-us/blog/bitbucket-vs-gitlab-com",{"_path":5599,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5600,"content":5606,"config":5610,"_id":5612,"_type":17,"title":5613,"_source":18,"_file":5614,"_stem":5615,"_extension":21},"/en-us/blog/gitlab-dot-com-storage-limit-raised-to-10gb-per-repo",{"title":5601,"description":5602,"ogTitle":5601,"ogDescription":5602,"noIndex":6,"ogImage":5603,"ogUrl":5604,"ogSiteName":671,"ogType":672,"canonicalUrls":5604,"schema":5605},"GitLab.com storage limit raised to 10GB per repo","GitLab celebrate permanently raising our storage limit per repository on GitLab.com from 5GB to an impressive 10GB.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683693/Blog/Hero%20Images/milkyway.jpg","https://about.gitlab.com/blog/gitlab-dot-com-storage-limit-raised-to-10gb-per-repo","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab.com storage limit raised to 10GB per repo\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2015-04-08\",\n      }",{"title":5601,"description":5602,"authors":5607,"heroImage":5603,"date":5608,"body":5609,"category":14},[676],"2015-04-08","\n\nWe want to congratulate GitHub on [launching git-lfs today](https://github.com/blog/1986-announcing-git-large-file-storage-lfs), their method for storing large files.\nTheir command line client looks easy to use since you can use existing git commands, a very nice innovation.\n\nWe think that a solution for storing large files will benefit the entire git ecosystem.\nGitLab.com and GitLab [Enterprise Edition](/enterprise/) have included support for the open source git-annex [since February](/blog/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git/).\nGitHub has based their solution on git-media but chose to make it a new format.\n\nWe would love to see one standard emerge over time and we're glad to see that git-lfs is open source and that they [didn't call it assman](https://github.com/github/git-lfs/commit/10a8eceefdb081edf6114eda6f68c1f4db204a96).\nWe hope that going forward development happens in the open so that the different large file solutions can grow to a unified solution.\n\nTo celebrate today's good news we've permanently raised our storage limit per repository on GitLab.com from 5GB to 10GB. As before, public and private repositories on GitLab.com are unlimited, don't have a transfer limit and they include unlimited collaborators.\n",{"slug":5611,"featured":6,"template":683},"gitlab-dot-com-storage-limit-raised-to-10gb-per-repo","content:en-us:blog:gitlab-dot-com-storage-limit-raised-to-10gb-per-repo.yml","Gitlab Dot Com Storage Limit Raised To 10gb Per Repo","en-us/blog/gitlab-dot-com-storage-limit-raised-to-10gb-per-repo.yml","en-us/blog/gitlab-dot-com-storage-limit-raised-to-10gb-per-repo",{"_path":5617,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5618,"content":5623,"config":5627,"_id":5629,"_type":17,"title":5630,"_source":18,"_file":5631,"_stem":5632,"_extension":21},"/en-us/blog/farewell-google-code-hello-gitlab-dot-com",{"title":5619,"description":5620,"ogTitle":5619,"ogDescription":5620,"noIndex":6,"ogImage":5375,"ogUrl":5621,"ogSiteName":671,"ogType":672,"canonicalUrls":5621,"schema":5622},"Farewell Google Code. Hello GitLab.com","Today GitLab examines Google's announcement that its Google Code project hosting service will be closing in about 10 months.","https://about.gitlab.com/blog/farewell-google-code-hello-gitlab-dot-com","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Farewell Google Code. Hello GitLab.com\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2015-03-12\",\n      }",{"title":5619,"description":5620,"authors":5624,"heroImage":5375,"date":5625,"body":5626,"category":14},[676],"2015-03-12","\n\nToday Google announced that its Google Code project hosting service will be closing in about 10 months. Back in 2006 when Google Code was first introduced, options for project hosting were pretty limited. Now there are many more options to choose from. \n\n\u003C!-- more -->\n\nThe reason for Google Code's demise is pretty obvious when you consider that around 9 million users are now registered on GitHub. Google's recently cited issues with Google Code have centered on reported spam and abuse problems not on the number of active users. However it's the number of users, or lack thereof, that is clearly the problem. So does 9 million users on GitHub mean that the world of open source is stuck with one centralized repository and we are left, effectively, with a monoculture for the foreseeable future? Google's Chris DiBona doesn't seem to think so and is quoted in a [recent Wired article](http://www.wired.com/2015/03/github-conquered-google-microsoft-everyone-else/) \"GitHub matters a lot, but it's not like you're stuck there.\" \n\nSo if not GitHub where else do you go? DiBona offers up a suggestion in a [comment on Hacker News](https://news.ycombinator.com/item?id=9192271) \"I heartily recommend people look at GitLab.\" [GitLab.com](/pricing/)  offers an open source, community based, project hosting service that is a viable alternative to GitHub. Begun in 2011 by Dimitriy Zaporozhets, GitLab.com is supported by a core team of individuals and now a team of close to 800 contributors ensures a bright future.\n\nOne last point.  Google Code is yet another Google project to join the long line that has bitten the dust. It has been mooted that part of the reason is that Google is only interested in reaching markets of a billion people or more in order to move the needle of their advertising revenue. The universe of software developers is not going to move it very far for them. Or do they have that right? At GitLab we believe that the future is ripe for just about everybody to store, version and collaborate using the principles pioneered by software developers. Every contract, every report, every graphic and audio file deserves the chance to be versioned. Years down the road we probably won't still be talking git, but for now artists, authors, architects, engineers and designers who want in on the action can join the party with us coders. People are building book authoring and law reviewing application [on top of GitLab](/partners/) and we would love to see more of that happening.\n\nTo move your repository just create a project on GitLab.com, add that as a remote and push or first import them to GitHub and than use our [GitHub importer](/images/7_7/import.png).\n",{"slug":5628,"featured":6,"template":683},"farewell-google-code-hello-gitlab-dot-com","content:en-us:blog:farewell-google-code-hello-gitlab-dot-com.yml","Farewell Google Code Hello Gitlab Dot Com","en-us/blog/farewell-google-code-hello-gitlab-dot-com.yml","en-us/blog/farewell-google-code-hello-gitlab-dot-com",{"_path":5634,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5635,"content":5641,"config":5645,"_id":5647,"_type":17,"title":5648,"_source":18,"_file":5649,"_stem":5650,"_extension":21},"/en-us/blog/gitlab-ami",{"title":5636,"description":5637,"ogTitle":5636,"ogDescription":5637,"noIndex":6,"ogImage":5638,"ogUrl":5639,"ogSiteName":671,"ogType":672,"canonicalUrls":5639,"schema":5640},"GitLab AMI","We're happy to announce that GitLab now has Amazon Web Services Machines Images (AMIs) available for GitLab CE.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684381/Blog/Hero%20Images/mac.jpg","https://about.gitlab.com/blog/gitlab-ami","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab AMI\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Job van der Voort\"}],\n        \"datePublished\": \"2015-03-11\",\n      }",{"title":5636,"description":5637,"authors":5642,"heroImage":5638,"date":5643,"body":5644,"category":14},[5128],"2015-03-11","\n\nWe're happy to announce that GitLab now has [Amazon Web Services Machines Images](/partners/technology-partners/aws/)\n(AMIs) available for GitLab CE. These are simple AMIs, that only require a\nsingle command to bootstrap your GitLab instance on AWS.\n\n\u003C!-- more -->\n\nTo use the GitLab machine image, simply create an instance from the AMI\nthat you find [here](/partners/technology-partners/aws/) and run:\n\n```\nsudo gitlab-ctl reconfigure\n```\n\nYour instance will run at your set hostname and you can immediately log in\nand start using GitLab!\n\n## Powered by an Omnibus Package\n\nThe AMI contains the exact same GitLab CE Omnibus package that is released.\nThis means that upgrading and maintenance is very easy.\n\nThis is actually how we run GitLab.com on AWS. See how we migrated [here](/blog/moving-all-your-data/).\n",{"slug":5646,"featured":6,"template":683},"gitlab-ami","content:en-us:blog:gitlab-ami.yml","Gitlab Ami","en-us/blog/gitlab-ami.yml","en-us/blog/gitlab-ami",{"_path":5652,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5653,"content":5659,"config":5663,"_id":5665,"_type":17,"title":5666,"_source":18,"_file":5667,"_stem":5668,"_extension":21},"/en-us/blog/gitlab-is-part-of-the-y-combinator-family",{"title":5654,"description":5655,"ogTitle":5654,"ogDescription":5655,"noIndex":6,"ogImage":5656,"ogUrl":5657,"ogSiteName":671,"ogType":672,"canonicalUrls":5657,"schema":5658},"GitLab is part of the Y Combinator family","Y Combinator is a Silicon Valley based seed fund that provides mentorship, advice and connections to a meticulously selected group of startups","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683704/Blog/Hero%20Images/yc.jpg","https://about.gitlab.com/blog/gitlab-is-part-of-the-y-combinator-family","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab is part of the Y Combinator family\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2015-03-04\",\n      }",{"title":5654,"description":5655,"authors":5660,"heroImage":5656,"date":5661,"body":5662,"category":14},[676],"2015-03-04","\n\nAs [reported by Techcrunch](http://techcrunch.com/2015/03/03/the-great-git-debate/) we’re part of Y Combinator’s winter 2015 batch!\n\nY Combinator, a Silicon Valley based seed fund, provides mentorship, advice and connections to a meticulously selected group of startups in two batches each year. Previous startups that went to the program include Dropbox, AirBnB, Stripe and Reddit. Y Combinator has also funded some of the best tools for developer community - including Heroku, CoreOS and Docker. Being selected by Y Combinator is a fantastic opportunity to learn from successful startup founders and leverage the experience of Y Combinators’ extensive network.\n\n\u003C!-- more -->\n\nAt first glance, it might not seem obvious for our company to join Y Combinator since we already have 10 employees and hundreds of paying clients. The reason for joining was learning more about how to grow as a company. We were always really focussed on GitLab and of course we never want to lose that. But we want to avoid as many mistakes made by fast growing companies and to learn from the Y Combinator partners that have seen hundreds of organizations growing fast. There are regular events that feature experts in all facets of building a company, from user retention to enterprise sales. And it is great to hear stories from other startups,what they have overcame and how relentlessly resourceful they have been.\n\nOur team has moved to Mountain View for the program to both focus and learn from the broader Silicon Valley ecosystem. Having the whole team in together Silicon Valley has been a great opportunity to bond with each other and work with some of our larger customers. Going forward we’ll continue to have most of our people working remotely but we’re also hiring for an inside-sales and a director of sales position in San Francisco.\n\nWe think that what we are learning at Y Combinator will help us deliver a better product and service to all GitLab users. Our commitment to shipping a great open source product has never been greater. Feel free to ask any questions you might have in the comments below.\n",{"slug":5664,"featured":6,"template":683},"gitlab-is-part-of-the-y-combinator-family","content:en-us:blog:gitlab-is-part-of-the-y-combinator-family.yml","Gitlab Is Part Of The Y Combinator Family","en-us/blog/gitlab-is-part-of-the-y-combinator-family.yml","en-us/blog/gitlab-is-part-of-the-y-combinator-family",{"_path":5670,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5671,"content":5677,"config":5682,"_id":5684,"_type":17,"title":5685,"_source":18,"_file":5686,"_stem":5687,"_extension":21},"/en-us/blog/gitlab-acquires-gitorious",{"title":5672,"description":5673,"ogTitle":5672,"ogDescription":5673,"noIndex":6,"ogImage":5674,"ogUrl":5675,"ogSiteName":671,"ogType":672,"canonicalUrls":5675,"schema":5676},"GitLab acquires Gitorious to strengthen on-premises offerings","GitLab and Gitorious announce today they are joining forces to strengthen the development of GitLab’s open source Git management application.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683712/Blog/Hero%20Images/water.jpg","https://about.gitlab.com/blog/gitlab-acquires-gitorious","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab acquires Gitorious to bolster its on premises code collaboration platform\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2015-03-03\",\n      }",{"title":5678,"description":5673,"authors":5679,"heroImage":5674,"date":5680,"body":5681,"category":14},"GitLab acquires Gitorious to bolster its on premises code collaboration platform",[676],"2015-03-03","\n\nAs [reported by the Next Web](http://thenextweb.com/insider/2015/03/03/gitlab-acquires-rival-gitorious-will-shut-june-1/) GitLab and Gitorious announce today they are joining forces in an effort to strengthen the development of GitLab’s [open source Git management application](/solutions/source-code-management/) and provide Gitorious customers with an enhanced user experience.\n\nSince 2008, Gitorious has been one of the leading providers for open source hosting and on-premises enterprise Git management around the globe. Gitorious was the first widely used open source Git management application.\n\n“We believe that, in the long term, coming together under one umbrella with a common goal will benefit everyone, so we are getting that process started today” says GitLab CEO, Sytse Sijbrandij.\n\n\u003C!-- more -->\n\nGitLab is a simple upgrade path for existing Gitorious users. GitLab offers Git repository management, code reviews, issue tracking, activity feeds, wikis and continuous integration.\n\nRolf Bjaanes, Gitorious CEO, gives some background on the reasons for the acquisition: “At Gitorious we saw more and more organizations adopting GitLab. Due to decreased income from on-premises customers, running the free Gitorious.org was no longer sustainable. GitLab was solving the same problem that we were, but was solving it better.”\n\n“This acquisition will accelerate the growth of GitLab. With more than 100,000 organizations using it, it is already the most used on-premises solution for Git repository management, and bringing Gitorious into the fold will significantly increase that footprint.” says Sytse Sijbrandij, GitLab CEO.\n\nStarting today, Gitorious.org users can import their existing projects into GitLab.com by clicking the “Import projects from Gitorious.org” link when creating a new project. Gitorious.org will stay online until the end of May 2015 to give people time to migrate their repositories. Existing users of Gitorious on-premises can [contact sales](/sales/) for more information.\n\nWe are both confident that the communities around GitLab and Gitorious will see the advantage of combining our strengths to make the best open source software to collaborate on code.\n\n",{"slug":5683,"featured":6,"template":683},"gitlab-acquires-gitorious","content:en-us:blog:gitlab-acquires-gitorious.yml","Gitlab Acquires Gitorious","en-us/blog/gitlab-acquires-gitorious.yml","en-us/blog/gitlab-acquires-gitorious",{"_path":5689,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5690,"content":5696,"config":5701,"_id":5703,"_type":17,"title":5704,"_source":18,"_file":5705,"_stem":5706,"_extension":21},"/en-us/blog/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git",{"title":5691,"description":5692,"ogTitle":5691,"ogDescription":5692,"noIndex":6,"ogImage":5693,"ogUrl":5694,"ogSiteName":671,"ogType":672,"canonicalUrls":5694,"schema":5695},"GitLab Annex enables versioning of large binaries with git","GitLab solves the biggest limitation of git compared to some older centralized version control systems has been the maximum size of the repositories.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666750/Blog/Hero%20Images/annex.jpg","https://about.gitlab.com/blog/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Annex solves the problem of versioning large binaries with git\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2015-02-17\",\n      }",{"title":5697,"description":5692,"authors":5698,"heroImage":5693,"date":5699,"body":5700,"category":14},"GitLab Annex solves the problem of versioning large binaries with git",[676],"2015-02-17","\n\u003Ci class=\"fas fa-exclamation-triangle gitlab-orange\" aria-hidden=\"true\">\u003C/i>\n\u003Cspan class=\"red\">**WARNING**\u003C/span>\n\u003Ci class=\"fas fa-exclamation-triangle gitlab-orange\" aria-hidden=\"true\">\u003C/i>\n**git-annex** support on GitLab EE was **deprecated** in\n[GitLab 8.17](/releases/2017/02/22/gitlab-8-17-released/#git-annex-support) (2017/02/22),\nand was [**permanently removed**](https://gitlab.com/gitlab-org/gitlab-ee/issues/1648) in\n[GitLab 9.0](/releases/2017/03/22/gitlab-9-0-released/#git-annex-deprecation) (2017/03/22). Read through the\nmigration guide [from git-annex to git-lfs](https://docs.gitlab.com/ee/topics/git/lfs/migrate_to_git_lfs.html).\n\u003Cspan class=\"note\">Updated on 2017/04/04.\u003C/span>\n{:.alert .alert-warning .black}\n\nThe biggest limitation of git compared to some older centralized [version control systems](/topics/version-control/) has been the maximum size of the repositories.\nThe general recommendation is to not have git repositories larger than 1GB to preserve performance.\nAlthough GitLab has no limit (some repositories in GitLab are over 50GB!) we subscribe to the advice to keep repositories as small as you can.\n\nNot being able to version control large binaries is a big problem for many larger organizations.\nVideo, photo's, audio, compiled binaries and many other types of files are too large.\nAs a workaround, people keep artwork-in-progress in a Dropbox folder and only check in the final result.\nThis results in using outdated files, not having a complete history and the risk of losing work.\n\nIn GitLab 7.8 Enterprise Edition this problem is solved by integrating the awesome [git-annex](https://git-annex.branchable.com/).\nGit-annex allows managing large binaries with git, without checking the contents into git.\nYou check in only a symlink that contains the SHA-1 of the large binary.\nIf you need the large binary you can sync it from the GitLab server over rsync, a very fast file copying tool.\n\n\u003C!-- more -->\n\n## Using GitLab Annex\n\nFor example, if you want to upload a very large file and check it into your Git repository:\n\n```bash\ngit clone git@gitlab.example.com:group/project.git\ngit annex init 'My Laptop'            # initialize the annex project\ncp ~/tmp/debian.iso ./                # copy a large file into the current directory\ngit annex add .                       # add the large file to git annex\ngit commit -am \"Added Debian iso\"      # commit the file meta data\ngit annex sync --content              # sync the git repo and large file to the GitLab server\n```\n\nDownloading a single large file is also very simple:\n\n```bash\ngit clone git@gitlab.example.com:group/project.git\ngit annex sync                        # sync git branches but not the large file\ngit annex get debian.iso              # download the large file\n```\n\nTo download all files:\n\n```bash\ngit clone git@gitlab.example.com:group/project.git\ngit annex sync --content              # sync git branches and download all the large files\n```\n\nBy integrating git-annex into GitLab it becomes much easier and safer to use.\nYou don't have to set up git-annex on a separate server or add annex remotes to the repository.\nGit-annex without GitLab gives everyone that can access the server access to the files of all projects.\nGitLab annex ensures you can only access files of projects you work on (developer, master or owner role).\n\n## How it works\n\nAs far as we know GitLab is the first git repository management solution that integrates git-annex.\nThis is possible because both git-annex and GitLab stay very close to the unix paradigms.\nInternally GitLab uses [GitLab Shell](https://gitlab.com/gitlab-org/gitlab-shell) to handle ssh access and this was a great integration point for git-annex.\nWe've added a setting to GitLab Shell so you can disable GitLab Annex support if you don't want it.\n\nOf course we are very thankful for the awesome git-annex software that makes all of this possible.\nIt was mainly written by Joey Hess whose work is sponsored by [community fundraisers](https://campaign.joeyh.name/).\nIt may be interesting to know that git-annex is [written in Haskell](http://joeyh.name/screencasts/git-annex_coding_in_haskell/), making it very fast and reliable.\n\nTo use GitLab annex you have to use GitLab Enterprise Edition 7.8 (which will be released on February 22) or GitLab.com.\nYou'll have to use the Git over SSH protocol to connect to your GitLab server instead of the Git over HTTPS protocol.\nWe look forward to feedback and enhancements from the rest of the community.\nFor example, it would be nice if the GitLab UI shows the file size of the large file instead of the symlink.\nBut let's first celebrate this milestone, being able to easily version control your large files!\n\n## Update\n\nWe made a video of [Dmitriy](/company/team/#dzaporozhets), CTO of GitLab, explaining how git-annex integrates with GitLab Enterprise Edition. The video is raw and unedited.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/6PhmANuSVGE\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n\u003C!-- custom classes -->\n\n\u003Cstyle>\n  .red { color: red !important; }\n  .black { color: black !important; }\n\u003C/style>\n",{"slug":5702,"featured":6,"template":683},"gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git","content:en-us:blog:gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git.yml","Gitlab Annex Solves The Problem Of Versioning Large Binaries With Git","en-us/blog/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git.yml","en-us/blog/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git",{"_path":5708,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5709,"content":5714,"config":5718,"_id":5720,"_type":17,"title":5721,"_source":18,"_file":5722,"_stem":5723,"_extension":21},"/en-us/blog/stop-waiting-for-your-ci-server-by-making-them-3x-faster",{"title":5710,"description":5711,"ogTitle":5710,"ogDescription":5711,"noIndex":6,"ogImage":5603,"ogUrl":5712,"ogSiteName":671,"ogType":672,"canonicalUrls":5712,"schema":5713},"Stop waiting for your tests by making them 3x faster","Are you working on a serious software project? Run only directly related unit tests locally while your CI server takes care of the rest 3x faster than you could","https://about.gitlab.com/blog/stop-waiting-for-your-ci-server-by-making-them-3x-faster","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Stop waiting for your tests by making them 3x faster\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2015-01-29\",\n      }",{"title":5710,"description":5711,"authors":5715,"heroImage":5603,"date":5716,"body":5717,"category":14},[676],"2015-01-29","\n\nAre you working on a serious software project?\nYou probably have an extensive test suite that takes a while to run.\nWhy not run only the directly related unit tests locally and have your CI server take care of the rest 3x faster than you could?\nThis way you can start with the next feature while your feature branch is being tested.\n\nHaving the tests run 3x faster on the CI server requires adding multiple workers to execute the tests in parallel.\nSo far this has been very expensive, but with GitLab CI it is affordable for everyone.\n\n\u003C!-- more -->\n\n[![screenshot](https://about.gitlab.com/images/ci_5_4/parallel.png)](/images/ci_5_4/parallel.png)\n\n\n## Price comparison\n\nRight now it is expensive for people to test private repositories quickly.\n\nMost serious projects have a long test suite and you want to run tests in parallel.\nYou want to be able to test multiple commits at the same time,\nso you can merge everything quickly at the end of the sprint.\n\nSuppose you want to have 5 tests in parallel on 2 different commits.\nFor this you would need 10 runners/workers.\n\nOn [Travis](https://travis-ci.com/plans) the plan for 10 concurrent jobs is $489 per month.\n\nOn [CircleCI](https://circleci.com/pricing) the cost for 1 free and 9 paid jobs is $450 per month.\n\nAs you can easily set up your own workers (Runners) with GitLab CI,\nthis scale becomes much more affordable:\n\nIf you get 10 dedicated [Digital Ocean boxes](https://www.digitalocean.com/pricing/) with 2GB each you would pay 10 * $20 per month = $200 per month.\nYou save more than 50% and most DO boxes are [faster](http://uncrunched.com/2013/08/07/digital-ocean-v-aws-10x-performance-for-13-cost/) than those at other providers.\n\n## Continuous Integration (CI) hosted for free\n\nAt ci.gitlab.com you can run CI completely free except that you need to bring your own test Runners.\nThis is not a temporary beta, we intend to continue to offer this for free, a world's first as far as we know.\n\nSimply add your projects from GitLab.com to ci.gitlab.com and configure the build script(s).\nYou can use the parallel build feature of GitLab CI and we'll store the build logs and configuration for you.\n\nTo run your tests you need to install GitLab Runner on one or more of your instances.\nThe CI status will show in merge requests on GitLab.com.\n\n## No instances available? No problem!\n\nDon't have any instances handy to install the runner on? We can help.\n\n**In total, we're giving away up to $520,000.- in cloud hosting for people to host their Runner!**\nThis is a collaboration with Google Compute Engine and Digital Ocean, we're very grateful for their offer.\nDid you know they both also offer one-click-installs of GitLab?\nTo claim your credit please see the instructions below.\n\nThe credit is a limited time offering but the free CI for private projects on ci.gitlab.com is permanent.\n\n## Claim Google Cloud Platform credit\n\nGoogle Cloud Platform offers $500 in credit for the first 1000 users.\nTo get started, follow the three steps below:\n\n1. Go to [http://cloud.google.com/startercredit](http://cloud.google.com/startercredit)\n1. Click Apply Now\n1. Complete the form with code: gitlab\n\nWith Cloud Platform you can access application, compute, storage and big data services.\nYou’re now building on the same infrastructure that powers Google.\n\n## Claim Digital Ocean credit\n\nDigitalOcean offers $40 in credit for the first 500 users.\nThis is valid only for new DigitalOcean accounts, not for existing users.\nThe offer is valid for one week and you can claim up to one promo per person.\nYou need to set up a project on GitLab.com and add it to ci.gitlab.com before you can claim it.\n\nTo claim it please fill out [this form](https://docs.google.com/a/gitlab.com/forms/d/1YXTRwDz2C8o4DqNrFCT78UQf_iHnN1Ekrt4p8yv6fd4/viewform) with your name, email or handle and project url.\nOnce submitted, the GitLab team will email you your unique promo code.\nIf you have any questions about this promotion, please contact the GitLab support team via [support.gitlab.com](https://support.gitlab.com/).\n\n## On your server\n\nIf you want to run CI on your own servers that is also possible.\nGitLab CI is included if the [GitLab Omnibus packages](/install/)\nTo enable it just [change a single line](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/gitlab-ci/README.md##getting-started).\n\n## What do you think?\n\nHow much time can you save with parallel tests on fast machines?\n",{"slug":5719,"featured":6,"template":683},"stop-waiting-for-your-ci-server-by-making-them-3x-faster","content:en-us:blog:stop-waiting-for-your-ci-server-by-making-them-3x-faster.yml","Stop Waiting For Your Ci Server By Making Them 3x Faster","en-us/blog/stop-waiting-for-your-ci-server-by-making-them-3x-faster.yml","en-us/blog/stop-waiting-for-your-ci-server-by-making-them-3x-faster",{"_path":5725,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5726,"content":5731,"config":5735,"_id":5737,"_type":17,"title":5738,"_source":18,"_file":5739,"_stem":5740,"_extension":21},"/en-us/blog/responding-to-ghost",{"title":5727,"description":5728,"ogTitle":5727,"ogDescription":5728,"noIndex":6,"ogImage":967,"ogUrl":5729,"ogSiteName":671,"ogType":672,"canonicalUrls":5729,"schema":5730},"Responding to Ghost","A response from GitLab to the announcem,ent of the glibc vulnerability 2015, this had liitle impacty on GitLab, but latest OS updates are recomended.","https://about.gitlab.com/blog/responding-to-ghost","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Responding to Ghost\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jacob Vosmaer\"}],\n        \"datePublished\": \"2015-01-28\",\n      }",{"title":5727,"description":5728,"authors":5732,"heroImage":967,"date":5733,"body":5734,"category":14},[5344],"2015-01-28","\n\nYesterday the [Ghost vulnerability in\nglibc](http://www.openwall.com/lists/oss-security/2015/01/27/9) was announced.\nA bug in a networking function in the version of the C standard library found\non many Linux systems can potentially lead to remote code execution.  There is\nno indication at this time that this bug can be exploited against GitLab but it\nis nevertheless recommendable to install the latest updates from your OS\nvendor.  In this post we will tell you how we did this at GitLab B.V.\n\n\u003C!-- more -->\n\n## 1. Update your OS packages\n\nThe first step for us was to run `apt-get upgrade` and `yum update` on all our\nLinux machines.\n\n## 2. Reboot your machine\n\nRebooting your server(s) is disruptive but with something as common as the C\nstandard library, it is difficult to pinpoint the individual services that need\nto be restarted. If you reboot you are sure you caught them all; this is what\nwe did with our Linux servers.\n\nIf you do decide to restart only selected services instead of the whole server,\nyou can restart GitLab with `sudo gitlab-ctl restart` (for Omnibus packages) or\n`sudo service gitlab restart` (for installations from source).\n\n## Fast 'reboots' using HA\n\nRebooting one of our [gitlab.com production\nservers](/blog/the-hardware-that-powers-100k-git-repos/) can easily take\n5 minutes. To reduce the downtime for our users we used our [DRBD-based clustered setup](https://docs.gitlab.com/ee/administration/postgresql/index.html). First we\ninstalled updated packages on our stand-by server, followed by a reboot. Then\nwe did a failover from the active server to the stand-by in under a minute.\nThis gives us the same end result as a server reboot, namely gitlab.com running\non a freshly booted server, without having to wait for the reboot cycle of an\nindividual server.\n",{"slug":5736,"featured":6,"template":683},"responding-to-ghost","content:en-us:blog:responding-to-ghost.yml","Responding To Ghost","en-us/blog/responding-to-ghost.yml","en-us/blog/responding-to-ghost",{"_path":5742,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5743,"content":5749,"config":5754,"_id":5756,"_type":17,"title":5757,"_source":18,"_file":5758,"_stem":5759,"_extension":21},"/en-us/blog/gitlab-community-forum",{"title":5744,"description":5745,"ogTitle":5744,"ogDescription":5745,"noIndex":6,"ogImage":5746,"ogUrl":5747,"ogSiteName":671,"ogType":672,"canonicalUrls":5747,"schema":5748},"GitLab Community Forum","View the GitLab forum. More and more people interact within the community as GitLab grows, new contributors appear every day. Learn more here!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684289/Blog/Hero%20Images/community.png","https://about.gitlab.com/blog/gitlab-community-forum","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Community Forum\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Achilleas Pipinellis\"}],\n        \"datePublished\": \"2015-01-12\",\n      }",{"title":5744,"description":5745,"authors":5750,"heroImage":5746,"date":5752,"body":5753,"category":14},[5751],"Achilleas Pipinellis","2015-01-12","\n\nGitLab is growing fast. Day by day, more and more people interact with it.\nOver the past two years, the community around GitLab has thrived and new\ncontributors appear every day.\n\nAlthough there are a lot of ways to [communicate][help] with each other, we\nlack a central place to discuss, without relying on third party applications.\n\nToday we present you the [GitLab Community Forum][forum]. A new home to share,\nask and discuss everything related to GitLab!\n\n\u003C!-- more -->\n\nThe forum is run by community members whereas the hosting is gracefully donated\nby GitLab B.V.. Remember that this is _not_ the place to expect any professional\n[help][] by GitLab developers, but to interact with the rest of the community.\n\n## The platform\n\nThe platform that the forum is built on, is the well known open source project\n[Discourse][], a Rails + Emberjs application. It is a powerful app that is\nused by many other communities, like Docker, Twitter, NewRelic and Mozilla.\n\nFor the moment, you can sign up with a new account or use\n[Mozilla persona][persona] to sign in. In the future more OAuth providers will\nbe supported, including gitlab.com which comes in GitLab 7.7.\n\n### Features\n\nDiscourse has this nice feature to use topics as wikis. As such, we migrated\nthe troubleshooting public wiki from [GitHub][] to [this topic][discoursetr].\nAny registered member can edit it and add new troubleshooting tips. Having this\nguide in the forum gives us the power to leave replies under that topic and\ndiscuss possible additions/deletions.\n\nThe search function is also very powerful. Μake sure to use it any time you\nhave a question or stumbled upon something; someone else might already have\nposted the solution. For example, searching for `reset admin`, reveals that\nthere is a reference in the Troubleshooting wiki.\n\n[![screenshot](https://about.gitlab.com/images/forum/forum_search_admin.png)](/images/forum/forum_search_admin.png)\n\n## Forum structure\n\nFor better organization, we have added some [categories][] which you can choose\nfrom when starting a topic. If you feel your post falls under a category that\ndoesn't exist yet, you can report it [here][catreport].\n\nWhen posting, you can use either bbcode or the well known markdown to format\nyour reply.\n\nIf you wrote a blog post about GitLab or found out an interesting tutorial that\nhelped you and you think it might help others, do share it in the [HowTo][]\ncategory. Did you know that you can install GitLab on [macOS][] or [FreeBSD][]\nor even [Windows][]?\nThe HowTo section can also include little tips, like how to give admin access\nto a person via the Rails console.\n\nThe [Use Cases][] category sums up success stories of versatile setups.\nIt is always interesting to read how GitLab is deployed and used in enterprise\nenvironments.\n\nManually updating, deploying or even building GitLab can be a tedious task. For\nthose who are passionate about configuration management setups,we have created\nthe [Configuration Management][] section.\n\nIf you just began learning Ruby on Rails or any other technologies that come\nwith GitLab and want to get your hands dirty, head over the [Development][]\nsection and open a topic. A good start is to search through the\n[feature request tracker][features], find something you would like to\nimplement and work on that. The GitLab community has some prominent and\nexperienced developers that can help you get started.\n\nIf you have made a fan art about GitLab, share it in the [Fan art][] category.\n\nWe also have an [ARM devices][armcat] category for any relevant information\nabout GitLab running on small devices.\n\n",{"slug":5755,"featured":6,"template":683},"gitlab-community-forum","content:en-us:blog:gitlab-community-forum.yml","Gitlab Community Forum","en-us/blog/gitlab-community-forum.yml","en-us/blog/gitlab-community-forum",{"_path":5761,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5762,"content":5768,"config":5772,"_id":5774,"_type":17,"title":5775,"_source":18,"_file":5776,"_stem":5777,"_extension":21},"/en-us/blog/the-hardware-that-powers-100k-git-repos",{"title":5763,"description":5764,"ogTitle":5763,"ogDescription":5764,"noIndex":6,"ogImage":5765,"ogUrl":5766,"ogSiteName":671,"ogType":672,"canonicalUrls":5766,"schema":5767},"The hardware that powers 100,000 git repositories","Want to host your public and private repositories somewhere for free? You can on GitLab.com. Learn more here!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684271/Blog/Hero%20Images/hardware.jpg","https://about.gitlab.com/blog/the-hardware-that-powers-100k-git-repos","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"The hardware that powers 100,000 git repositories\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Job van der Voort\"}],\n        \"datePublished\": \"2015-01-03\",\n      }",{"title":5763,"description":5764,"authors":5769,"heroImage":5765,"date":5770,"body":5771,"category":14},[5128],"2015-01-03","\n\nWant to host your public and private repositories somewhere for free?\nYou can on GitLab.com, where we have been hosting a single instance of GitLab for a while now.\nAlmost 20,000 people make active use of this to host their\nrepositories. The 100,000+ repositories that these people use are served by a single server.\n\n\u003C!-- more -->\n\n## A single server\n\nBefore, GitLab.com was hosted on Amazon's largest instance.\nBut as the amount of users grew, so did our Amazon bill.\nOn top of that, we were limited in options of vertical scaling and were CPU bound.\nWe had to explore alternatives to AWS.\n\n100k repositories take up several terabytes, so storage capabilities are important.\nSince we use git, the storage needs to be a single filesystem,\nrather than object storage (such as S3).\nWe want to be able to expand storage with ease.\nFurthermore, thousands of people pushing and pulling their code will put a strain on the CPU.\nHaving many CPU cores available can make a big differences in times of high load.\n\nIt turns out that using our own servers was by far the cheapest option.\nConsidering we're bootstrapping GitLab\nand as cheap Dutchmen (Sytse, Jacob, Job), this made the choice easy.\n\n![htop on GitLab server](https://about.gitlab.com/images/stock/htop.png)\n\nAnd so,  we currently have two (one active) of these servers running GitLab.com:\n\n- server model: HP DL180 G6 (reconditioned, this model was introduced in 2009)\n- processors: 2x X5690 (24 cores in total)\n- 32GB RAM\n- 12x 2TB HDDs, (2 for root volume in RAID 1, 10 for storage in RAID 10, ext4 filesystem)\n\nWe actually started with a total of 16 cores,\nbut replaced the CPUs to decrease CPU-bound loading.\n\n## Falling and Failing over\n\nMoving away from Amazon meant that we no longer could use AWS' features.\nIn case a server dies, we need to be able to failover.\n\nWe used DRBD to create one primary and one slave server.\nOne of the servers is active as application server at a time.\nIf something goes wrong, we tell DRBD to promote the other server to primary.\n\nOur DRBD tooling that we've built for this is made available to our\n[subscribers](/pricing/).\n\n## Scaling further\n\nGitLab.com runs well on its current hardware, but is growing ever faster.\nExpanding the current hardware would be expensive and parts are not easy to get by.\n\nIn the future, GitLab.com will be hosted on Amazon AWS again.\nThis will allow us to scale horizontally more easily.\nOn top of this, Amazon recently announced 10+TB EBS volumes, which will make migrating easy.\n",{"slug":5773,"featured":6,"template":683},"the-hardware-that-powers-100k-git-repos","content:en-us:blog:the-hardware-that-powers-100k-git-repos.yml","The Hardware That Powers 100k Git Repos","en-us/blog/the-hardware-that-powers-100k-git-repos.yml","en-us/blog/the-hardware-that-powers-100k-git-repos",{"_path":5779,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5780,"content":5785,"config":5789,"_id":5791,"_type":17,"title":5792,"_source":18,"_file":5793,"_stem":5794,"_extension":21},"/en-us/blog/gitlab-got-bit-mysql-fails-at-rails-migrations-that-work-in-postgresql",{"title":5781,"description":5782,"ogTitle":5781,"ogDescription":5782,"noIndex":6,"ogImage":967,"ogUrl":5783,"ogSiteName":671,"ogType":672,"canonicalUrls":5783,"schema":5784},"GitLab got bit: MySQL fails at Rails migrations that work in PostgreSQL","One day after releasing GitLab 7.6 we had to release a patch. This is how we got bit by a failing migration and why it was our own fault.","https://about.gitlab.com/blog/gitlab-got-bit-mysql-fails-at-rails-migrations-that-work-in-postgresql","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab got bit: MySQL fails at Rails migrations that work in PostgreSQL\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Job van der Voort\"}],\n        \"datePublished\": \"2014-12-30\",\n      }",{"title":5781,"description":5782,"authors":5786,"heroImage":967,"date":5787,"body":5788,"category":14},[5128],"2014-12-30","\n\nOne day after releasing GitLab 7.6 we had to release a patch. This is how we\ngot bit by a failing migration and why it was our own fault.\n\n\u003C!-- more -->\n\n## What happened\n\nGitLab supports two databases: MySQL and PostgreSQL.\n\nTo update our database models for identities in GitLab, we wanted to remove two columns from the `users` table: `extern_uid` and `provider`. These had a composite index, so that uniqueness was checked for any combination of `extern_uid + provider`.\n\n```\nadd_index :users, [:extern_uid, :provider]\n```\n\nSo to remove the columns, we wrote a simple migration:\n\n```\ndef up\n  remove_column :users, :extern_uid\n  remove_column :users, :provider\nend\n```\n\nRun the migration on PostgreSQL and it works without a hitch. Try to run it on MySQL and:\n\n```\nMysql2::Error: Duplicate entry 'example' for key 'index_users_on_extern_uid_and_provider': ALTER TABLE `users` DROP `extern_uid`\n```\n\nIt seems that when removing the `extern_uid` column, MySQL decided to rebuild the index using only the `provider` column, creating duplicate indices (which is not allowed).\n\n\n## How we fixed it\n\nTo fix this, all we had to do is check whether the index exists and remove it if it does.\n\n```\ndef up\n  if index_exists?(:users, [:extern_uid, :provider])\n    remove_index :users, [:extern_uid, :provider]\n  end\n\n  remove_column :users, :extern_uid\n  remove_column :users, :provider\nend\n```\n\nWe quickly released [a new GitLab version](/releases/2014/12/23/gitlab-7-6-1-released/)\nthat included the new migration.\n\n\n## Why we'll _probably_ not repeat this mistake\n\nSo how did we miss such a simple mistake? GitLab has a pretty hefty test-suite that tests almost every line of code. On top of that, we do [QA testing](http://doc.gitlab.com/ee/release/monthly.html#workdays-before-release",{"slug":5790,"featured":6,"template":683},"gitlab-got-bit-mysql-fails-at-rails-migrations-that-work-in-postgresql","content:en-us:blog:gitlab-got-bit-mysql-fails-at-rails-migrations-that-work-in-postgresql.yml","Gitlab Got Bit Mysql Fails At Rails Migrations That Work In Postgresql","en-us/blog/gitlab-got-bit-mysql-fails-at-rails-migrations-that-work-in-postgresql.yml","en-us/blog/gitlab-got-bit-mysql-fails-at-rails-migrations-that-work-in-postgresql",{"_path":5796,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5797,"content":5802,"config":5806,"_id":5808,"_type":17,"title":5809,"_source":18,"_file":5810,"_stem":5811,"_extension":21},"/en-us/blog/gitlab-not-affected-by-cve-2014-9390-git-vulnerability",{"title":5798,"description":5799,"ogTitle":5798,"ogDescription":5799,"noIndex":6,"ogImage":967,"ogUrl":5800,"ogSiteName":671,"ogType":672,"canonicalUrls":5800,"schema":5801},"GitLab not affected by Git vulnerability CVE-2014-9390","GitLab.com, GitLab Community Edition and Enterprise Edition are not directly affected by Git vulnerability CVE-2014-9390.","https://about.gitlab.com/blog/gitlab-not-affected-by-cve-2014-9390-git-vulnerability","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab not affected by Git vulnerability CVE-2014-9390\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Patricio Cano\"}],\n        \"datePublished\": \"2014-12-19\",\n      }",{"title":5798,"description":5799,"authors":5803,"heroImage":967,"date":5804,"body":5805,"category":14},[5165],"2014-12-19","\n\nA critical Git security [vulnerability](http://article.gmane.org/gmane.linux.kernel/1853266) was announced yesterday, that\naffects all versions of the official Git client. Since this is a client-side only vulnerability, **GitLab.com**, **GitLab\nCommunity Edition** and **GitLab Enterprise Edition** are not directly affected.\n\nThe vulnerability is present on Git and Git-compatible clients that access Git repositories from a case-insensitive or\ncase-normalizing filesystem. An attacker can create a malicious Git tree that will cause the `.git/config` directory to be\noverwritten when cloning or checking out a repository. This enables the attacker to execute arbitrary commands in the\nclient's machine. Git clients running on macOS (HFS+ if not formatted as case-sensitive) or any version of Microsoft\nWindows (NTFS, FAT) are exploitable through this vulnerability. Linux clients running in a case-sensitive filesystem\nare not affected.\n\nWe **strongly** recommend our users to update their Git clients as soon as possible and to be cautious when cloning repositories\nfrom untrusted sources.\n\nThe following updated versions of Git address this vulnerability:\n\n- The Git core team has announced [maintenance releases](https://www.kernel.org/pub/software/scm/git/) for all current\nversions of Git (v1.8.5.6, v1.9.5, v2.0.5, v2.1.4, and v2.2.1).\n\n- These major Git libraries, [libgit2](https://github.com/libgit2/libgit2/) and [JGit](https://eclipse.org/jgit/),\nhave released maintenance versions with the fix as well.\n\nPlease contact us at [support.gitlab.com](https://support.gitlab.com/)if you have any questions about this issue.\n\n## About GitLab\n\nYou can try GitLab by [downloading](/install/) the Community Edition and installing it on your\nown server or by signing up to our free, unlimited GitLab instance [GitLab.com](https://gitlab.com/users/sign_up).\n\nCheck out [GitLab Enterprise Edition](/pricing/feature-comparison/) for deep LDAP integration, git hooks,\nJenkins integration and many more powerful enterprise features.\n",{"slug":5807,"featured":6,"template":683},"gitlab-not-affected-by-cve-2014-9390-git-vulnerability","content:en-us:blog:gitlab-not-affected-by-cve-2014-9390-git-vulnerability.yml","Gitlab Not Affected By Cve 2014 9390 Git Vulnerability","en-us/blog/gitlab-not-affected-by-cve-2014-9390-git-vulnerability.yml","en-us/blog/gitlab-not-affected-by-cve-2014-9390-git-vulnerability",{"_path":5813,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5814,"content":5819,"config":5823,"_id":5825,"_type":17,"title":5826,"_source":18,"_file":5827,"_stem":5828,"_extension":21},"/en-us/blog/three-reasons-gitlab-is-not-vulnerable-to-the-gollum-vulnerability",{"title":5815,"description":5816,"ogTitle":5815,"ogDescription":5816,"noIndex":6,"ogImage":967,"ogUrl":5817,"ogSiteName":671,"ogType":672,"canonicalUrls":5817,"schema":5818},"3 reasons GitLab isn't vulnerable to Gollum + 1 tip","3 reasons why GitLab is not vulnerable to the Gollum vulnerability and 1 tip","https://about.gitlab.com/blog/three-reasons-gitlab-is-not-vulnerable-to-the-gollum-vulnerability","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"3 reasons why GitLab is not vulnerable to the Gollum vulnerability and 1 tip\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Job van der Voort\"}],\n        \"datePublished\": \"2014-12-09\",\n      }",{"title":5816,"description":5816,"authors":5820,"heroImage":967,"date":5821,"body":5822,"category":14},[5128],"2014-12-09","\n\nThree days ago, Gollum, the git-powered wiki that is used in GitLab disclosed a\n[vulnerability](https://github.com/gollum/gollum/issues/913) that makes it possible to execute code on the\nserver that Gollum is running. Someone could exploit this to bring down your server or access your data.\n**GitLab is not vulnerable for this, here's why:**\n\n\u003C!-- more -->\n\n1. GitLab has implemented its own search and doesn't use Gollum's search.\n\n2. For search, we made sure to use `Shellwords.shellescape(query)`.\n\n3. Since GitLab 7.4, we switched to rugged, avoiding any use of grit [altogether](https://gitlab.com/gitlab-org/gitlab_git/blob/master/lib/gitlab_git/repository.rb#L194).\n\nWe've verified that GitLab installations prior to version 6.6 are **not** vulnerable\nto the Gollum vulnerability either.\n\n## 1 Tip\n\nIronically, it was [our own gem](https://gitlab.com/gitlab-org/gitlab-grit) that caused this.\nWe've created a [guide](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/shell_commands.md)\nto combat remote code execution vulnerabilities we've found previously in GitLab.\nWe should have rewritten our gem to our own guidelines, but we're switching GitLab\nto [Rugged](https://github.com/libgit2/rugged) instead.\n\nWe recommend all Ruby developers to adopt our guidelines and take note from this.\n\nAs with everything in GitLab, if you see something that can be improved, please send us a merge request.\n\n## About GitLab\n\nYou can try GitLab by [downloading](/install/) the Community Edition and installing it on your own server or by signing up to our free, unlimited GitLab instance [GitLab.com](https://gitlab.com/users/sign_up).\n\nCheck out [GitLab Enterprise Edition](/pricing/feature-comparison/) for deep LDAP integration, git hooks, Jenkins integration and many more powerful enterprise features.\n",{"slug":5824,"featured":6,"template":683},"three-reasons-gitlab-is-not-vulnerable-to-the-gollum-vulnerability","content:en-us:blog:three-reasons-gitlab-is-not-vulnerable-to-the-gollum-vulnerability.yml","Three Reasons Gitlab Is Not Vulnerable To The Gollum Vulnerability","en-us/blog/three-reasons-gitlab-is-not-vulnerable-to-the-gollum-vulnerability.yml","en-us/blog/three-reasons-gitlab-is-not-vulnerable-to-the-gollum-vulnerability",{"_path":5830,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5831,"content":5836,"config":5840,"_id":5842,"_type":17,"title":5843,"_source":18,"_file":5844,"_stem":5845,"_extension":21},"/en-us/blog/letter-from-shareholders",{"title":5832,"description":5833,"ogTitle":5832,"ogDescription":5833,"noIndex":6,"ogImage":967,"ogUrl":5834,"ogSiteName":671,"ogType":672,"canonicalUrls":5834,"schema":5835},"Letter from shareholders","We strongly believe that the best years are still ahead and want to share our vision for GitLab.","https://about.gitlab.com/blog/letter-from-shareholders","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Letter from shareholders\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2014-10-08\",\n      }",{"title":5832,"description":5833,"authors":5837,"heroImage":967,"date":5838,"body":5839,"category":14},[676],"2014-10-08","\n\nToday it is three years ago that the first commit to GitLab was made.\nWe strongly believe that the best years are still ahead and want to share our vision for GitLab.\n\nWe do this as the sole shareholders of GitLab B.V., Dmitriy Zaporozhets and Sytse Sijbrandij.\nGitLab B.V. is the commercial entity that releases GitLab, offers paid services and runs GitLab.com.\n\nBefore describing our vision we want to share how GitLab started.\nGitLab was started in 2011 by Dmitriy Zaporozhets and Valeriy Sizov.\nThey started it because they had a need for a tool that they could use locally in freedom.\nLiving in the Ukraine they had limited resources, to this day Dmitriy has no running water at his house.\nBut instead of leaving the Ukraine they want to build a future there.\nAnd after creating GitLab Dmitriy started to work two jobs.\nDuring the day working for his consultancy and when he got home improving GitLab.\nThe problem was that the second job didn't pay anything, but Dmitriy didn't care.\n\n\u003C!--more-->\n\nIn 2012 GitLab grew so fast that it became impossible to do anything else.\nDmitriy tweeted that he wanted to work on GitLab fulltime, quite daring since he was still an employee.\nSytse had just started GitLab.com and paid Dmitriy to work on it.\nIn 2013 we co-founded GitLab B.V. as a commercial entity.\nWe have adopted the 'open-core' business model where there are an open source and proprietary version.\nWe mainly generate income by selling subscriptions to the proprietary GitLab Enterprise Edition.\nWe currently employ 7 people and over 100.000 organizations are using GitLab.\n\nWe strongly believe in the benefit of open source as a better way to create software.\nWe're both Rails developers and have been amazed at the open tools we could use.\nEverything from databases to frameworks and from editors to webservers has been open.\nOne awesome development has been the use of git version control to collaborate better.\nAnd while git was open some of the tools around it have been closed.\n\nWe feel that all the tools that you need to deliver software are better when they are open.\nYou should be able to inspect your tools, modify them and share improvements with other users.\nBeing aware that our code is open source also makes us hold ourselves to a higher standard when fixing issues or coding new features.\n[In the words of Nathan Sobo](http://blog.atom.io/2014/05/06/atom-is-now-open-source.html): \"We think being open source will help us get there faster, and more importantly, source access will give you the transparency and control you've told us you expect from your tools.\"\n\nWe want to ensure that GitLab has a long future and will always be maintained with great care.\nWe have found that release management, vulnerability disclosure handling and performance improvement take a lot of time.\nAnd while more than [680 people contributed to GitLab](http://contributors.gitlab.com/) there is always a need for more effort.\nThe [GitLab Core team](/community/core-team/) is full of people donating their time to help with this.\nBut to offer a worry-free experience to the most demanding users we do need a paid development effort as well.\n\nWe want to be good stewards of GitLab and we do never want to be [forced to sell to an organization that doesn't share our goals](http://en.wikipedia.org/wiki/Sun_acquisition_by_Oracle#MySQL_petition_and_forks).\nTherefore we needed to generate income in a sustainable way and introduced a prorietary version of GitLab, called GitLab Enterprise Edition.\nAnyone using it is still able to inspect the source, modify it and share changes with the rest of the licensed users.\nWe carefully discuss with the whole community which features belong in there and which ones should be in the open source edition.\nThese tradeoffs are continually made and we're open to open sourcing some of the proprietary features when this is the consensus.\n\nHaving a propriety offering has allowed the rapid development of GitLab over the last year.\nIt also allowed us to offer GitLab.com for free to anyone who wants to store their source on open source.\nAnd it allowed Dmitriy to open an GitLab B.V. office in the Ukraine together with Valeriy Sizov (and running water :-).\nIt also allows us to help people who earned some help, and we will donate 15.000 euro to [Mehackit](http://mehackit.org/).\nMehackit is run by Pia Henrietta Kekäläinen who tirelessly worked two years without pay at getting Railsgirls off the ground.\n\nIn the coming years we hope to grow with the rest of the GitLab community.\nOur plan is to stay independent and to serve the needs of the community\nWe believe every software delivery tool should show you the source.\nIf you believe that too please [contribute](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md) to GitLab.\nMaking the world better off by creating tools that come with freedom.\n",{"slug":5841,"featured":6,"template":683},"letter-from-shareholders","content:en-us:blog:letter-from-shareholders.yml","Letter From Shareholders","en-us/blog/letter-from-shareholders.yml","en-us/blog/letter-from-shareholders",{"_path":5847,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5848,"content":5853,"config":5858,"_id":5860,"_type":17,"title":5861,"_source":18,"_file":5862,"_stem":5863,"_extension":21},"/en-us/blog/wandisco-integrates-gitlab-enterprise-edition-in-their-git-multisite-offering",{"title":5849,"description":5850,"ogTitle":5849,"ogDescription":5850,"noIndex":6,"ogImage":967,"ogUrl":5851,"ogSiteName":671,"ogType":672,"canonicalUrls":5851,"schema":5852},"WANdisco integrates GitLab Enterprise in Git MultiSite","GitLab, the world’s leader open source version control, announced today that GitLab is partnering with WANdisco.","https://about.gitlab.com/blog/wandisco-integrates-gitlab-enterprise-edition-in-their-git-multisite-offering","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"WANdisco integrates GitLab Enterprise Edition in their Git MultiSite offering\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2014-09-22\",\n      }",{"title":5854,"description":5850,"authors":5855,"heroImage":967,"date":5856,"body":5857,"category":14},"WANdisco integrates GitLab Enterprise Edition in their Git MultiSite offering",[676],"2014-09-22","\n\n*Partnership will enable large distributed development teams more seamless and efficient workflow to their collaboration and coding review using Git*\n\nUtrecht, The Netherlands - September 22, 2014 - GitLab, the world’s leader open source version control, announced today that GitLab is partnering with WANdisco, a leader in big data products to bring large distributed development teams more seamless and efficient workflow to their collaboration and coding review using Git. The new Git MultiSite for GitLab uses WANdisco's active-active replication to remove bottleneck of Git's master repository architecture and provide 100% uptime and LAN-speed performance for Git developers at every location. \n\nGit MultiSite for GitLab also leverages WANdisco’s patented Distributed Coordination Engine (DConE) to turn servers into writable Git peer nodes. Teams can count on changes being transparent, so conflicts are identified and resolved as soon as they occur instead of days later. Teams can work together regardless of location or time zone, and have access to the performance, scalability, and automated disaster recovery provided by WANdisco’s patented active-active replication.\n\n\"WANdisco offers the only solution to push to a local server in multiple continents.\" said Sytse Sijbrandij, CEO of GitLab. \"We have seen great demand for this among companies that develop software with worldwide teams. And we're very happy that enterprise users can now combine this with the effective code review tools of GitLab Enterprise Edition.\"\n\nDavid Richards, Chairman and CEO of WANdisco highlights well what the collaboration will offer, “Git MultiSite for GitLab combines WANdisco’s patented technology with GitLab to create a scalable, cost-effective solution for global collaboration.\"\n\nBenefits of the new Git MultiSite for GitLab:\n\n- Leverages WANdisco’s patented Distributed Coordination Engine (DConE) to turn servers at every location into fully writable Git peer nodes.\n- Uses active-active replication to remove bottlenecks in Git’s master repository architecture, providing 100% uptime and LAN-speed performance for Git developers at every location.\n- Changes are transparent, so conflicts are identified and resolved as soon as they occur instead of days later.\n- Administrators can check the status of all servers and repositories at a glance and easily add servers and repositories without any downtime.\n- Administrators can choose which repositories are replicated to each site. \n- Every GitLab repository is fully read/write enabled and continuously in sync.\n\nThe partnership with WANdisco strengthens GitLab’s open source software for collaboration on code that is used by more than 100,000 organizations. GitLab will continue to provide teams using Git with its top notch social coding environment for repository management, code review, issue tracking, activity feeds, and wikis. \n\nAbout GitLab B.V.:\n\nGitLab B.V. supports organizations and individuals using GitLab and offers services around GitLab such as subscriptions, consulting, development and training. GitLab is a community project with hundreds of contributors. GitLab B.V. is an active participant in this community, trying to serve its needs and lead by example.\n\nContact:  Sytse Sijbrandij, sytse@gitlab.com\n",{"slug":5859,"featured":6,"template":683},"wandisco-integrates-gitlab-enterprise-edition-in-their-git-multisite-offering","content:en-us:blog:wandisco-integrates-gitlab-enterprise-edition-in-their-git-multisite-offering.yml","Wandisco Integrates Gitlab Enterprise Edition In Their Git Multisite Offering","en-us/blog/wandisco-integrates-gitlab-enterprise-edition-in-their-git-multisite-offering.yml","en-us/blog/wandisco-integrates-gitlab-enterprise-edition-in-their-git-multisite-offering",{"_path":5865,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5866,"content":5871,"config":5876,"_id":5878,"_type":17,"title":5879,"_source":18,"_file":5880,"_stem":5881,"_extension":21},"/en-us/blog/feature-highlight-branded-login-gitlab-ee",{"title":5867,"description":5868,"ogTitle":5867,"ogDescription":5868,"noIndex":6,"ogImage":967,"ogUrl":5869,"ogSiteName":671,"ogType":672,"canonicalUrls":5869,"schema":5870},"Feature Highlight: Branded login in GitLab Enterprise Edition","In GitLab Enterprise edition, you can easily customize the login page of your GitLab server.","https://about.gitlab.com/blog/feature-highlight-branded-login-gitlab-ee","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Feature Highlight: Branded login in GitLab Enterprise Edition\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Marin, Job\"}],\n        \"datePublished\": \"2014-09-02\",\n      }",{"title":5867,"description":5868,"authors":5872,"heroImage":967,"date":5874,"body":5875,"category":14},[5873],"Marin, Job","2014-09-02","\n\nIn [GitLab Enterprise edition](/enterprise/), you can easily customize the login page of your GitLab server.\n\nBy default, Enterprise Edition page shows GitLab logo and description\n\n![default_login_page](https://about.gitlab.com/images/feature_branded_login/default_login_page.png)\n\n\u003C!--more-->\n\nNavigate to the admin area and go to the Appearance page.\n\n![admin area](https://about.gitlab.com/images/feature_branded_login/admin_area.png)\n\nFill in the required details like Title, Description and upload the company logo.\n\n![appearance](https://about.gitlab.com/images/feature_branded_login/appearance.png)\n\nAfter saving the page, your GitLab login page will show your logo and text!\n\n![company_login_page](https://about.gitlab.com/images/feature_branded_login/company_login_page.png)\n",{"slug":5877,"featured":6,"template":683},"feature-highlight-branded-login-gitlab-ee","content:en-us:blog:feature-highlight-branded-login-gitlab-ee.yml","Feature Highlight Branded Login Gitlab Ee","en-us/blog/feature-highlight-branded-login-gitlab-ee.yml","en-us/blog/feature-highlight-branded-login-gitlab-ee",{"_path":5883,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5884,"content":5889,"config":5893,"_id":5895,"_type":17,"title":5896,"_source":18,"_file":5897,"_stem":5898,"_extension":21},"/en-us/blog/feature-highlight-ldap-sync",{"title":5885,"description":5886,"ogTitle":5885,"ogDescription":5886,"noIndex":6,"ogImage":967,"ogUrl":5887,"ogSiteName":671,"ogType":672,"canonicalUrls":5887,"schema":5888},"Feature Highlight: LDAP Integration","In GitLab Enterprise Edition it is possible to sync your GitLab groups with your LDAP groups, making it super easy to manage access to projects.","https://about.gitlab.com/blog/feature-highlight-ldap-sync","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Feature Highlight: LDAP Integration\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jacob Vosmaer\"},{\"@type\":\"Person\",\"name\":\"Job van der Voort\"}],\n        \"datePublished\": \"2014-07-10\",\n      }",{"title":5885,"description":5886,"authors":5890,"heroImage":967,"date":5891,"body":5892,"category":14},[5344,5128],"2014-07-10","\n\nGitLab is a massive open source project with over 600 contributors, all working together to create an amazing platform to collaborate on code. Every month on the 22nd, a new version of GitLab is released, and every month new features are added.\nTo make you aware of the power of GitLab, we walk through some of its features in these blog posts.\n\nPreviously, [we looked at GitLab Groups](/blog/feature-highlight-groups/). This time, we're looking at a GitLab Enterprise Edition feature.\nIn [GitLab Enterprise Edition](/pricing/) it is possible to sync your GitLab groups with your LDAP groups, making it super easy to manage access to projects.\n\n![LDAP Group Sync](https://about.gitlab.com/images/feature_ldap_sync/select_group_cn.png)\n\n\u003C!--more-->\n\nLDAP group synchronization in GitLab Enterprise Edition allows you to synchronize the members of a GitLab group with a given LDAP group.\n\n### Setting up LDAP group synchronization\n\nSuppose we want to synchronize the GitLab group 'example group' with the LDAP group 'Engineering'.\n\n1. As an owner, go to the group settings page for 'example group'.\n\n![LDAP group settings](https://about.gitlab.com/images/feature_ldap_sync/select_group_cn.png)\n\nAs an admin you can also go to the group edit page in the admin area.\n\n![LDAP group settings for admins](https://about.gitlab.com/images/feature_ldap_sync/select_group_cn_admin.png)\n\n2. Enter 'Engineering' as the LDAP Common Name (CN) in the 'LDAP Group cn' field.\n\n3. Enter a default group access level in the 'LDAP Access' field; let's say Developer.\n\n![LDAP group settings filled in](https://about.gitlab.com/images/feature_ldap_sync/select_group_cn_engineering.png)\n\n4. Save your changes to the group settings.\n\nNow every time a member of the 'Engineering' LDAP group signs in, they automatically become a Developer-level member of the 'example group' GitLab group. Users who are already signed in will see the change in membership after up to one hour.\n\n### Locking yourself out of your own group\n\nAs an LDAP-enabled GitLab user, if you create a group and then set it to synchronize with an LDAP group you do not belong to, you will be removed from the grop as soon as the synchronization takes effect for you.\n\nIf you accidentally lock yourself out of your own GitLab group, ask a GitLab administrator to change the LDAP synchronization settings for your group.\n\n### Non-LDAP GitLab users\n\nYour GitLab instance may have users on it for whom LDAP is not enabled.\nIf this is the case, these users will not be affected by LDAP group synchronization settings: they will be neither added nor removed automatically.\n\n### ActiveDirectory nested group support\n\nIf you are using ActiveDirectory, it is possible to create nested LDAP groups: the 'Engineering' LDAP group may contain another LDAP group 'Software', with 'Software' containing LDAP users Alice and Bob.\nGitLab will recognize Alice and Bob as members of the 'Engineering' group.\n\n### LDAP documentation\n\nFind this and further LDAP documentation in our [integration documentation](http://doc.gitlab.com/ee/integration/ldap.html).\n\n",{"slug":5894,"featured":6,"template":683},"feature-highlight-ldap-sync","content:en-us:blog:feature-highlight-ldap-sync.yml","Feature Highlight Ldap Sync","en-us/blog/feature-highlight-ldap-sync.yml","en-us/blog/feature-highlight-ldap-sync",{"_path":5900,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5901,"content":5906,"config":5910,"_id":5912,"_type":17,"title":5913,"_source":18,"_file":5914,"_stem":5915,"_extension":21},"/en-us/blog/gitlab-com-runs-ee",{"title":5902,"description":5903,"ogTitle":5902,"ogDescription":5903,"noIndex":6,"ogImage":967,"ogUrl":5904,"ogSiteName":671,"ogType":672,"canonicalUrls":5904,"schema":5905},"GitLab.com now runs GitLab Enterprise Edition","GitLab.com now runs GitLab Enterprise Edition. You now get to use the most fully featured GitLab edition on GitLab.com.","https://about.gitlab.com/blog/gitlab-com-runs-ee","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab.com now runs GitLab Enterprise Edition\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2014-06-27\",\n      }",{"title":5902,"description":5903,"authors":5907,"heroImage":967,"date":5908,"body":5909,"category":14},[676],"2014-06-27","\n[GitLab.com](/pricing/)  now runs [GitLab Enterprise Edition (EE)](/pricing/). GitLab.com is our free SaaS offering allowing you to use GitLab with private repositories and unlimited collaborators. You now get to use the most fully featured GitLab edition on GitLab.com.\n\n\u003C!--more-->\n\nThe reason for this is twofold.\n\nFirst, we want to make it easy to allow you to experience all GitLab features. Second, we want to run EE at scale ourselves since it contains more features than CE.\nWe want to be able to monitor all features on our own server for things like performance regressions. Monitoring our own servers is much easier since we have access to all graphs and logs. This way we can solve problems before anybody notices them.\n\nBy the way, besides GitLab.com we also run another installation. This is a server accessible only to GitLab B.V. employees because problems here are more noticeable to end users. This server is updated daily to the master branch of GitLab Community Edition. This ensures we quickly discover situations where someone merged a breaking change.\n",{"slug":5911,"featured":6,"template":683},"gitlab-com-runs-ee","content:en-us:blog:gitlab-com-runs-ee.yml","Gitlab Com Runs Ee","en-us/blog/gitlab-com-runs-ee.yml","en-us/blog/gitlab-com-runs-ee",{"_path":5917,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5918,"content":5924,"config":5928,"_id":5930,"_type":17,"title":5931,"_source":18,"_file":5932,"_stem":5933,"_extension":21},"/en-us/blog/10k-commits",{"title":5919,"description":5920,"ogTitle":5919,"ogDescription":5920,"noIndex":6,"ogImage":5921,"ogUrl":5922,"ogSiteName":671,"ogType":672,"canonicalUrls":5922,"schema":5923},"10k commits","GitLab recently grow past 10k commits. And even more amazing is that almost half of them were made during last year.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099646/Blog/Hero%20Images/Blog/Hero%20Images/logoforblogpost_21mOmoq0dnepgpLzqI703C_1750099645885.jpg","https://about.gitlab.com/blog/10k-commits","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"10k commits\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Dmitriy Zaporozhets\"}],\n        \"datePublished\": \"2014-06-10\",\n      }",{"title":5919,"description":5920,"authors":5925,"heroImage":5921,"date":5926,"body":5927,"category":14},[4877],"2014-06-10","\n\n\n![flyer](https://about.gitlab.com/images/10k/flyer_10k.png)\n\n\u003C!--more-->\n\nDear contributors,\n\nGitLab recently grow past 10k commits. And even more amazing is that almost half of them were made during last year. So 10,000 commits made by more than [600 contributors](http://contributors.gitlab.com/) for the past 3 years. But it's not only about commits. There are more than 6,000 closed issues on issue trackers. And lot of [feature requests](http://feedback.gitlab.com/) on feature request forum. And tons of discussion on the mailinglist, blogs, twitter and irc. That's huge amount of work done for an open source project.\n\nI would want to thank all people who took part in GitLab progress during last 3 years. I am proud to say that we've grown such a good open source community together.\n\nThanks everyone!\nDmitriy on behalf of the [core team](https://www.gitlab.com/core-team/)",{"slug":5929,"featured":6,"template":683},"10k-commits","content:en-us:blog:10k-commits.yml","10k Commits","en-us/blog/10k-commits.yml","en-us/blog/10k-commits",{"_path":5935,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5936,"content":5941,"config":5946,"_id":5948,"_type":17,"title":5949,"_source":18,"_file":5950,"_stem":5951,"_extension":21},"/en-us/blog/students-now-free",{"title":5937,"description":5938,"ogTitle":5937,"ogDescription":5938,"noIndex":6,"ogImage":967,"ogUrl":5939,"ogSiteName":671,"ogType":672,"canonicalUrls":5939,"schema":5940},"Subscriptions update: Students do not count as GitLab users anymore","We have decided to change the subscription model, so as to match the needs of educational institutions.","https://about.gitlab.com/blog/students-now-free","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Subscriptions update: Students do not count as GitLab users anymore\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Marc Radulescu\"}],\n        \"datePublished\": \"2014-05-19\",\n      }",{"title":5937,"description":5938,"authors":5942,"heroImage":967,"date":5944,"body":5945,"category":14},[5943],"Marc Radulescu","2014-05-19","\n\nUntil now, GitLab had been running a special discount for universities. We have decided to change the subscription model, so as to match the needs of educational institutions. \n\nStarting today, students of educational institutions students are free when ordering user-packs for a subscription.\n\n\u003C!--more-->\n\nGitLab is one of the most easily scalable code collaboration tools out there, and we are in touch with an increasing number of computer science departments that use GitLab for teaching purposes. They want to upgrade their servers to reach out to potentially hundreds or even thousands of students.\n\nHowever, it becomes apparent that the high variation in the number of students is not a good match with our subscription model. Most universities favor more predictable pricing over per-user pricing, so as to reduce the risk of their subscription bill going through the roof.\n\nWe are very excited to see GitLab being used as a tool for students. We believe it shows graduates the importance and power of the open-source mindset. We also believe it's a long-term investment in growing our user base and the product itself.\n\nWith that in mind, we have decided to change the subscription model. Starting today:\n\n * Student users are free when buying a subscription;\n * The special discount available to universities is deprecated.\n\nAs a note, the staff, post-docs and researchers **do** count towards the number of users.\n\nInterested in our proposition? Head over to our [subscription page](/pricing/) and let's get the collaboration going!\n",{"slug":5947,"featured":6,"template":683},"students-now-free","content:en-us:blog:students-now-free.yml","Students Now Free","en-us/blog/students-now-free.yml","en-us/blog/students-now-free",{"_path":5953,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5954,"content":5959,"config":5963,"_id":5965,"_type":17,"title":5966,"_source":18,"_file":5967,"_stem":5968,"_extension":21},"/en-us/blog/gitlab-cloud-becomes-gitlab-com",{"title":5955,"description":5956,"ogTitle":5955,"ogDescription":5956,"noIndex":6,"ogImage":967,"ogUrl":5957,"ogSiteName":671,"ogType":672,"canonicalUrls":5957,"schema":5958},"GitLab Cloud becomes GitLab.com","Today we rename our Software as a Service (SaaS) offering from GitLab Cloud to GitLab.com.","https://about.gitlab.com/blog/gitlab-cloud-becomes-gitlab-com","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Cloud becomes GitLab.com\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2014-04-18\",\n      }",{"title":5955,"description":5956,"authors":5960,"heroImage":967,"date":5961,"body":5962,"category":14},[676],"2014-04-18","\n\nToday we rename our Software as a Service (SaaS) offering from GitLab Cloud to GitLab.com. We noticed people referred to it already as GitLab.com and we want to prevent confusion. If you want unlimited private repositories and collaborators please join the thousands of people already using [GitLab.com](/pricing/).\n\nTo refer to this company we'll start using the new official name: GitLab B.V. (which is Dutch for GitLab Inc.). Our website will stay here at [https://www.gitlab.com/](https://www.gitlab.com/) while the GitLab.com service can be reached at the domain apex [https://gitlab.com/](https://gitlab.com/).\n\nThe url's of all your repos will stay the same, there is no need to make any changes.\n",{"slug":5964,"featured":6,"template":683},"gitlab-cloud-becomes-gitlab-com","content:en-us:blog:gitlab-cloud-becomes-gitlab-com.yml","Gitlab Cloud Becomes Gitlab Com","en-us/blog/gitlab-cloud-becomes-gitlab-com.yml","en-us/blog/gitlab-cloud-becomes-gitlab-com",{"_path":5970,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5971,"content":5976,"config":5980,"_id":5982,"_type":17,"title":5983,"_source":18,"_file":5984,"_stem":5985,"_extension":21},"/en-us/blog/add-ssh-key-screencast",{"title":5972,"description":5973,"ogTitle":5972,"ogDescription":5973,"noIndex":6,"ogImage":967,"ogUrl":5974,"ogSiteName":671,"ogType":672,"canonicalUrls":5974,"schema":5975},"Adding a SSH key to GitLab Screencast","In this screencast we show you that adding a SSH key to GitLab is very simple, allowing everyone to push and pull to GitLab without your username and password every time.","https://about.gitlab.com/blog/add-ssh-key-screencast","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Adding a SSH key to GitLab Screencast\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Job van der Voort\"}],\n        \"datePublished\": \"2014-03-04\",\n      }",{"title":5972,"description":5973,"authors":5977,"heroImage":967,"date":5978,"body":5979,"category":14},[5128],"2014-03-04","\nWe heard a few people saying that using a SSH key is hard. In this screencast we show you that adding a SSH key to GitLab is very simple, allowing everyone to push and pull to GitLab without having to enter their username and password every time.\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"//www.youtube.com/embed/54mxyLo3Mqk\" frameborder=\"0\" allowfullscreen>\u003C/iframe>\n",{"slug":5981,"featured":6,"template":683},"add-ssh-key-screencast","content:en-us:blog:add-ssh-key-screencast.yml","Add Ssh Key Screencast","en-us/blog/add-ssh-key-screencast.yml","en-us/blog/add-ssh-key-screencast",{"_path":5987,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":5988,"content":5993,"config":5997,"_id":5999,"_type":17,"title":6000,"_source":18,"_file":6001,"_stem":6002,"_extension":21},"/en-us/blog/markdown-newline-behaviour",{"title":5989,"description":5990,"ogTitle":5989,"ogDescription":5990,"noIndex":6,"ogImage":694,"ogUrl":5991,"ogSiteName":671,"ogType":672,"canonicalUrls":5991,"schema":5992},"Markdown newline behaviour","Currently GitLab renders line-breaks in markdown files as line-breaks. We propose to change this behaviour to conform to the markdown specification.","https://about.gitlab.com/blog/markdown-newline-behaviour","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Markdown newline behaviour\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2014-02-21\",\n      }",{"title":5989,"description":5990,"authors":5994,"heroImage":694,"date":5995,"body":5996,"category":14},[699],"2014-02-21","Currently GitLab renders line-breaks in markdown files as line-breaks.\nWe propose to change this behaviour to conform to the [markdown specification](http://daringfireball.net/projects/markdown/syntax#p) and only render line-breaks when you end a line with two or more spaces.\nParagraphs will continue to be rendered as before; when the text is separated by one or more blank lines.\n\nThe above change will ensure that markdown files in projects will look the way you expect them to look.\nBut GitLab has just one markdown engine to render [GitLab Flavored Markdown](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/markdown/markdown.md#newlines).\nSince descriptions & comments in both issues & merge requests also use GitLab Flavored Markdown they will also show the new behaviour.\nWe think this is preferable above introducing different behaviour and rendering code for different cases.\nPlease let us know what you think.\n",{"slug":5998,"featured":6,"template":683},"markdown-newline-behaviour","content:en-us:blog:markdown-newline-behaviour.yml","Markdown Newline Behaviour","en-us/blog/markdown-newline-behaviour.yml","en-us/blog/markdown-newline-behaviour",{"_path":6004,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":6005,"content":6010,"config":6014,"_id":6016,"_type":17,"title":6017,"_source":18,"_file":6018,"_stem":6019,"_extension":21},"/en-us/blog/gitlab-is-now-simple-to-install",{"title":6006,"description":6007,"ogTitle":6006,"ogDescription":6007,"noIndex":6,"ogImage":694,"ogUrl":6008,"ogSiteName":671,"ogType":672,"canonicalUrls":6008,"schema":6009},"GitLab is now simple to install","Today we can announce that installing GitLab is also greatly simplified.","https://about.gitlab.com/blog/gitlab-is-now-simple-to-install","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab is now simple to install\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2014-02-14\",\n      }",{"title":6006,"description":6007,"authors":6011,"heroImage":694,"date":6012,"body":6013,"category":14},[699],"2014-02-14","GitLab is the most fully featured open source application to manage git repositories.\nHowever, historically it was not easy to install and update GitLab.\nInstalling it required copy-pasting commands from a long guide.\nThe guide [actually worked](https://twitter.com/robinvdvleuten/status/424163226532986880) but it was 10 pages long.\nIn spite of this GitLab has become the most popular solution for on premise installations with 50,000 organizations using it.\nTo grow even faster we needed to simplify the update and installations processes.\nSo in GitLab 6.4 we made sure that [upgrading is now only a single command](/releases/2013/12/21/gitlab-ce-6-dot-4-released/).\nToday we can announce that installing GitLab is also greatly simplified.\n\nYou now have three new options to install GitLab: an official GitLab Chef cookbook, GitLab Packer virtual machines and GitLab Omnibus packages.\n\nThe [official GitLab Chef cookbook](https://gitlab.com/gitlab-org/cookbook-gitlab/blob/master/README.md) is the most flexible option.\nIt supports both development and production environments and both Ubuntu and RHEL/CentOS operating systems.\nYou can install it with Chef Solo, a Chef server or with Vagrant.\nIt supports MySQL and PostgreSQL databases, both in the same server as external ones.\nThe cookbook is [well tested](https://gitlab.com/gitlab-org/cookbook-gitlab/tree/master/spec) with [ChefSpec](https://github.com/sethvargo/chefspec).\nFor cloud fans there even is [a version that runs on AWS Opsworks](https://gitlab.com/gitlab-com/cookbook-gitlab-opsworks/blob/master/README.md).\n\nIf you want to quickly spin up a production GitLab server you can also use a virtual machine image with GitLab preinstalled.\nThe [downloads page](https://www.gitlab.com/downloads/) already has an Ubuntu 12.04 image and CentOS 6.5 will come soon.\nThese are made with [Packer](http://www.packer.io/) and [the source code to create your versions](https://gitlab.com/gitlab-org/gitlab-packer/blob/master/README.md) is available.\nExample configurations for Digital Ocean and AWS are included. These images are created with the official Chef cookbook mentioned earlier.\n\nLast but not least are the two GitLab Omnibus packages.\nA deb package for Ubuntu 12.04 LTS and a RPM package for CentOS 6 can be found on the [downloads page](https://www.gitlab.com/downloads/).\nThese are packages of the GitLab 6.6.0.pre and should not be used on production machines.\nWhen GitLab 6.6 is stable we will update the packages and link them in the GitLab readme.\nEven when stable these packages currently support a reduced selection of GitLab's normal features.\nIt is not yet possible to create/restore application backups or to use HTTPS, for instance.\nBut it is a start and we look forward to improving them together with the rest of the GitLab community.\nCreating these package has been our dream for a long time.\nGitLab has a lot of dependencies which means that native packages would require packaging hundreds of gems.\nTo solve this we used [omnibus-ruby](https://github.com/opscode/omnibus-ruby) that Chef Inc. uses to package Chef and Chef Server.\nBased on [omnibus-chef-server](https://github.com/opscode/omnibus-chef-server) we made [omnibus-gitlab](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md) that you can use to create your own package.\nSo now you can finally install GitLab with:\n\n```\napt-get install -y openssh-server postfix\ndpkg -i gitlab_6.6.0-pre1.omnibus.2-1.ubuntu.12.04_amd64.deb\ngitlab-ctl reconfigure\n```\n\nLike any active project there are still many way to improve the [GitLab Chef cookbook](https://gitlab.com/gitlab-org/cookbook-gitlab/issues), the [GitLab Packer virtual machines](https://gitlab.com/gitlab-org/gitlab-packer/issues) and [GitLab Omnibus packages](https://gitlab.com/gitlab-org/omnibus-gitlab/issues) so we welcome your help.\nWe would like to thank the awesome GitLab community and the [GitLab subscribers](https://www.gitlab.com/subscription/) for their support.\nOf course, all previous installation options will continue to be available.\nPlease join the celebration in the comments and let us know if you have any questions.\n",{"slug":6015,"featured":6,"template":683},"gitlab-is-now-simple-to-install","content:en-us:blog:gitlab-is-now-simple-to-install.yml","Gitlab Is Now Simple To Install","en-us/blog/gitlab-is-now-simple-to-install.yml","en-us/blog/gitlab-is-now-simple-to-install",{"_path":6021,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":6022,"content":6027,"config":6031,"_id":6033,"_type":17,"title":6034,"_source":18,"_file":6035,"_stem":6036,"_extension":21},"/en-us/blog/gitlab-ee-license-change",{"title":6023,"description":6024,"ogTitle":6023,"ogDescription":6024,"noIndex":6,"ogImage":967,"ogUrl":6025,"ogSiteName":671,"ogType":672,"canonicalUrls":6025,"schema":6026},"GitLab Enterprise Edition license change","We are now introducing a change to the EE license. Read this article to learn more.","https://about.gitlab.com/blog/gitlab-ee-license-change","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Enterprise Edition license change\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sid Sijbrandij\"}],\n        \"datePublished\": \"2014-02-11\",\n      }",{"title":6023,"description":6024,"authors":6028,"heroImage":967,"date":6029,"body":6030,"category":14},[676],"2014-02-11","\nOn July 22, 2013 we [introduced GitLab Enterprise Edition (EE)](/releases/2013/07/22/announcing-gitlab-enterprise-edition/).\nSince then, both EE and the Community Edition have grown and flourished.\nThere are now multiple Fortune 100 companies running the Enterprise Edition and the use of the Community Edition has doubled to 50.000 organizations.\n\nWe are now introducing a change to the EE license. As it stands today, the open source license of EE is confusing to some of our potential subscribers.\nThey expect that a subscription is needed to use the software.\nExplaining the current open source license combined with a required subscription is not only confusing at times, but also time-consuming for us.\nTherefore we are changing the license on the Enterprise Edition to one where the parts developed by GitLab.com are copyrighted by us.\nWe always expected organizations to have a valid subscription when using Enterprise Edition and this change formalizes that.\n\nWe hope you see how this licence change reduces confusion and increases the chance potential subscribers select GitLab as their primary code hosting tool.\nWe feel that the past 6 months have shown that the development of the Community Edition is a priority for GitLab.com.\nWith the help of the rest of the community we've done 5 releases with many new features and bug-fixes.\nThis is a process we want continue and the Community Edition will keep being a fully functional application that will not be restricted in any way.\nAnd a lot more awesome features for GitLab CE and GitLab CI will be contributed by GitLab.com staff in the coming months.\n\nIn summary, we're changing the license of the Enterprise Edition but all the GitLab versions you know and love will continue to improve.\nIf you have any thoughts or questions please share them in the comments below.\n",{"slug":6032,"featured":6,"template":683},"gitlab-ee-license-change","content:en-us:blog:gitlab-ee-license-change.yml","Gitlab Ee License Change","en-us/blog/gitlab-ee-license-change.yml","en-us/blog/gitlab-ee-license-change",{"_path":6038,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":6039,"content":6044,"config":6048,"_id":6050,"_type":17,"title":6051,"_source":18,"_file":6052,"_stem":6053,"_extension":21},"/en-us/blog/high-availability-white-paper",{"title":6040,"description":6041,"ogTitle":6040,"ogDescription":6041,"noIndex":6,"ogImage":967,"ogUrl":6042,"ogSiteName":671,"ogType":672,"canonicalUrls":6042,"schema":6043},"GitLab High Availability Solutions","We've just published an overview of GitLab High Availability Solutions. This web-page gives you a rough idea on what kind of HA setups to expect from us.","https://about.gitlab.com/blog/high-availability-white-paper","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab High Availability Solutions\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Marc Radulescu\"}],\n        \"datePublished\": \"2013-12-17\",\n      }",{"title":6040,"description":6041,"authors":6045,"heroImage":967,"date":6046,"body":6047,"category":14},[5943],"2013-12-17","\n\nWe've just published an overview of [GitLab High Availability Solutions](https://www.gitlab.com/high-availability/). The subject of high availability (HA) has come up frequently with our customers. GitLab is a business-critical service for some of our users. We want to meet their concerns in keeping GitLab continuously available.\n\nThis web-page gives you a rough idea on what kind of HA setups to expect from us. So whether you are already interested in the topic, or only now realize it might be something worth looking into, we advise you to read it.\n\nWe aim to highlight the big trade-off between increasing uptime and accepting complexity/cost. The more uptime you want, the more complex the setup. And the more complex the setup, the costlier to maintain. Consequently, we've structured it starting with the simplest solution out there, which is a basic server back-up. We gradually add levels of complexity, going through manual and automated snapshots, dedicated servers, slaves, and finally discussing clustered/master-master filestore configurations. Fair warning though, there is no one-size-fits-all when it comes to high availability. Our page is by no means a go-to guide for setting up your HA GitLab installation. Use it as a step to start considering your options.\n\nAs always, feedback is more than welcome. Let us know how you feel about the page and our solutions. If there is something we missed, don't hesitate to point it out.\n",{"slug":6049,"featured":6,"template":683},"high-availability-white-paper","content:en-us:blog:high-availability-white-paper.yml","High Availability White Paper","en-us/blog/high-availability-white-paper.yml","en-us/blog/high-availability-white-paper",{"_path":6055,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":6056,"content":6061,"config":6065,"_id":6067,"_type":17,"title":6068,"_source":18,"_file":6069,"_stem":6070,"_extension":21},"/en-us/blog/integrating-gitlab-ci-with-gitlab",{"title":6057,"description":6058,"ogTitle":6057,"ogDescription":6058,"noIndex":6,"ogImage":694,"ogUrl":6059,"ogSiteName":671,"ogType":672,"canonicalUrls":6059,"schema":6060},"Integrating GitLab CI with GitLab to enable distributed builds","Integrating GitLab CI with GitLab to enable distributed builds.","https://about.gitlab.com/blog/integrating-gitlab-ci-with-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Integrating GitLab CI with GitLab to enable distributed builds\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2013-06-20\",\n      }",{"title":6057,"description":6058,"authors":6062,"heroImage":694,"date":6063,"body":6064,"category":14},[699],"2013-06-20","### Integrating GitLab CI with GitLab to enable distributed builds\n\nThe GitLab.com team strongly believes in using feature branches and merge requests in software development. \nWe also think that Test Driven Development (TDD) should be used wherever possible. \nIf you combine these things what follows is that you have to know the testing results of a feature branch before accepting the merge request. \nGitLab CI was build to offer this functionality and we think most people using GitLab would benefit from using GitLab CI as well.\n\nTo make this easier we have now integrated GitLab CI with GitLab. This tight integration offers three great benefits:\n\n1. You can login to GitLab CI with your GitLab credentials.\n2. The GitLab user interface shown the projects you have access to.\n3. Setting up a testing environment for a new project no longer takes [8 steps](http://blog.bitnami.com/2013/05/deploy-gitlab-gitlab-ci-in-cloud-with.html) but just one.\n\n\u003C!-- more -->\n\n**Clean separation through the GitLab API**\n\nWe still want a clean separation between GitLab and GitLab CI to allow them to develop independently, reduce security risks and keep each code base small.\nTherefore, GitLab CI has its own database and uses GitLab's public API to communicate with GitLab. \nGitLab CI does not have access to more code or user information than what is accessible by the users who are logged in to GitLab CI.\n\n**Integrated but flexible**\n\nGitLab CI will be a rack application that you can mount where you want. \nIn the future you can install GitLab CI as a rack application on the same server as GitLab. \nBut you can also run GitLab CI on another server than GitLab if you would like to do so.\n\n**Don't run tests on the CI server**\n\nHopefully some of you are now thinking, running tests on the same server that stores my source code? No way! \nOf course you are very correct but actually the problem is larger than that. \nAnybody who can push to a branch that is tested on a CI server can easily own that server. \nSo you don't want to have projects with different authorization levels being tested on the same CI server. \n**If you are running tests on the CI server you are doing it wrong!** \nWe must admit that we have done this ourselves too. \nBut we have also seen it being set up this way by the majority of people that run other CI applications such as [Jenkins](http://jenkins-ci.org/) (even though Jenkins does allow you to [run the tests on other servers](https://wiki.jenkins-ci.org/display/JENKINS/Distributed+builds)).\n\n**Coordinators and runners**\n\nTo solve the problem we have split the CI application in two parts, a coordinator and runners. \nThe coordinator enables you to specify how you want to test and stores the results. \nThis is a rack application that communicates with the GitLab API. \nThe runners perform the actual build and they are installed on separate machines. \nThis way you never run tests on the same server that stores all you code. \nYou can bind runners to specific projects to preserve the exclusivity of your source code.\n\n**Work in progress**\n\nThe integration work is still ongoing. Right now GitLab CI is still a standalone application. \nBut it does already use runners [build from a separate repo](https://github.com/gitlabhq/gitlab-ci-runner). \n[![screenshot](https://about.gitlab.com/images/screens/runner.png)](/images/screens/runner.png)\n\n**Conclusion**\n\nOf course all this is optional, you can still use GitLab with other CI servers or install GitLab without installing GitLab CI. \nBut we believe this 'distributed builds by default' design will encourage many people to do the right thing. \nPlease let us know what you think about this change.\n",{"slug":6066,"featured":6,"template":683},"integrating-gitlab-ci-with-gitlab","content:en-us:blog:integrating-gitlab-ci-with-gitlab.yml","Integrating Gitlab Ci With Gitlab","en-us/blog/integrating-gitlab-ci-with-gitlab.yml","en-us/blog/integrating-gitlab-ci-with-gitlab",{"_path":6072,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":6073,"content":6078,"config":6082,"_id":6084,"_type":17,"title":6085,"_source":18,"_file":6086,"_stem":6087,"_extension":21},"/en-us/blog/packaging-gitlab-for-fedora-a-gsoc-2013-project",{"title":6074,"description":6075,"ogTitle":6074,"ogDescription":6075,"noIndex":6,"ogImage":967,"ogUrl":6076,"ogSiteName":671,"ogType":672,"canonicalUrls":6076,"schema":6077},"Packaging GitLab for Fedora: A GSoC 2013 project","It is with great excitement that I announce you the involvement of GitLab in this year's Google Summer of Code through the Fedora project.","https://about.gitlab.com/blog/packaging-gitlab-for-fedora-a-gsoc-2013-project","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Packaging GitLab for Fedora: A GSoC 2013 project\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Achilleas Pipinellis\"}],\n        \"datePublished\": \"2013-05-28\",\n      }",{"title":6074,"description":6075,"authors":6079,"heroImage":967,"date":6080,"body":6081,"category":14},[5751],"2013-05-28","\n\nHi everyone!\n\nIt is with great excitement that I announce you the involvement of GitLab in this \nyear's Google Summer of Code through the [Fedora][] project.\n\n\u003C!-- more -->\n\n### Whoami\n\nMy name is Axilleas Pipinellis, an undergraduate student from Greece. I study \n[Applied Mathematical and Physical Sciences][semfe] in [National and Technical University of Athens][ntua]. \nYou can read more info about me [here][aboutme].\n\n### My involvement with GitLab\n\nI have been following GitLab since version 2 and have installed/deployed it \nseveral times since. Recently, I also started [contributing][] some minor patches,\nmainly to the documentation. I have spent several hours contributing not only upstream \nbut I also wrote a [wiki article][] for Archlinux, as well as an installation [script][](needs refinement) \nand recently I gave a small [talk] in greek about GitLab during a [hackfest].\n\n### About Fedora and the GSoC proposal\n\nThe thought of GitLab being packaged for Fedora and then deployed as an extra service\nfor [fedorahosted][] isn't new. It was also a proposed idea for GSoC 2012, but\nunfortunately it didn't get picked. \n\nSo, this year is the lucky one and the main plan is to package GitLab and all its \ndependencies in `rpm` format, first for Fedora and then for [EPEL][](RedHat, CentOS, etc). \nFor a full view of my proposal see [here][proposal] and [there][post] is a post I made \nabout this matter two months ago.\n\nI believe this is a huge matter for both parties, as Fedora will be among the officially \nsupported platforms and GitLab will benefit from one of the biggest open source \ncommunities.\n\nCheers to a fun and productive summer!\n\n[post]: https://axilleas.me/en/blog/2013/bringing-gitlab-in-fedora/\n[EPEL]: https://fedoraproject.org/wiki/EPEL\n[proposal]: https://fedoraproject.org/wiki/GSOC_2013/Student_Application_Axilleas/Gitlab%28463%29\n[fedorahosted]: https://fedorahosted.org/web/\n[Fedora]: http://fedoraproject.org/\n[script]: https://gist.github.com/axilleas/3305554\n[hackfest]: https://hackerspace.gr/wiki/Hackfest15 \n[talk]: http://www.slid.es/axil/what-is-gitlab \n[wiki article]: https://wiki.archlinux.org/index.php/Gitlab\n[contributing]: https://github.com/gitlabhq/gitlabhq/commits/?author=axilleas\n[semfe]: http://semfe.ntua.gr/\n[ntua]: http://www.ntua.gr/index_en.html\n",{"slug":6083,"featured":6,"template":683},"packaging-gitlab-for-fedora-a-gsoc-2013-project","content:en-us:blog:packaging-gitlab-for-fedora-a-gsoc-2013-project.yml","Packaging Gitlab For Fedora A Gsoc 2013 Project","en-us/blog/packaging-gitlab-for-fedora-a-gsoc-2013-project.yml","en-us/blog/packaging-gitlab-for-fedora-a-gsoc-2013-project",{"_path":6089,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":6090,"content":6095,"config":6099,"_id":6101,"_type":17,"title":6102,"_source":18,"_file":6103,"_stem":6104,"_extension":21},"/en-us/blog/donations",{"title":6091,"description":6092,"ogTitle":6091,"ogDescription":6092,"noIndex":6,"ogImage":694,"ogUrl":6093,"ogSiteName":671,"ogType":672,"canonicalUrls":6093,"schema":6094},"Donations large and small","In the last few months many people have donated to support the development of GitLab. We appreciate all these donations.","https://about.gitlab.com/blog/donations","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Donations large and small\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2013-03-01\",\n      }",{"title":6091,"description":6092,"authors":6096,"heroImage":694,"date":6097,"body":6098,"category":14},[699],"2013-03-01","### Thank you for all the donations!\n\nIn the last few months many people have donated to support the development of GitLab. We appreciate all these donations.\n\nWe would like to thank [Futurice](http://www.futurice.com/) and [INdigital Telecom](http://www.indigital.net/) for their generous donations. For [Futurice](http://www.futurice.com/) it was their second donation to the GitLab project, great to see their continued support. They are a European provider of lean IT solutions. They already have Nokia, Vodefone and General Motors as clients, please consider joining their list of customers if you need an enterprise solution.\n\n[INdigital Telecom](http://www.indigital.net/) is from the United States, Fort Wayne in Indiana to be exact. They make sure that one someone calls the emergency services the connection always works. We think it is cool that besides [sponsoring the local softball team](http://www.indigital.net/news-sponsorship) they also donated $1000 to improve GitLab.\n\nINdigital Telecom has 10 developers working on about 100 projects using C, Python, Java and Php. They use GitLab as a software management and source code tracker contribution tool. With the issues and milestones functions they plan the project properly and make sure it is done on time. We're pretty sure they are careful about the tools they use and we're proud GitLab is among them.\n\nWe would also like to thank the other people that donated:\n\n* Demetrius Albuquerque\n* Ty Bodell\n* Jonathan Glines\n* Fritz Seifts\n* Karsakov Vladimir\n* Stephan Schulz\n* Matthias Gröbner\n* Laimonas Ignatavicius\n* Yuriy Golobokov\n* Kamil Trzciński\n* Miguel Machado\n* No-IP\n* Jason Rimmer\n* Oshnurov Nikolay\n* LiquidOptical\n* iMatt Sàrl\n* Pim Snel\n* Netlings Webworks Private Limited\n* Andres Cely\n\nIf you want to make a donation go to [the donation page](http://gitlab.org/donate/) or email us at [donations@gitlab.com](mailto:donations@gitlab.com) to discuss.\n",{"slug":6100,"featured":6,"template":683},"donations","content:en-us:blog:donations.yml","Donations","en-us/blog/donations.yml","en-us/blog/donations",{"_path":6106,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":6107,"content":6112,"config":6116,"_id":6118,"_type":17,"title":6119,"_source":18,"_file":6120,"_stem":6121,"_extension":21},"/en-us/blog/gitlab-com-pricing-thoughts",{"title":6108,"description":6109,"ogTitle":6108,"ogDescription":6109,"noIndex":6,"ogImage":694,"ogUrl":6110,"ogSiteName":671,"ogType":672,"canonicalUrls":6110,"schema":6111},"Your thoughts on Gitlab.com pricing","People asked about the pricing of Gitlab.com and I would love to hear what you think about this subject.","https://about.gitlab.com/blog/gitlab-com-pricing-thoughts","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Your thoughts on Gitlab.com pricing\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2012-10-19\",\n      }",{"title":6108,"description":6109,"authors":6113,"heroImage":694,"date":6114,"body":6115,"category":14},[699],"2012-10-19","The beta of Gitlab is going well and to date, more than 100 projects were created. People asked about the pricing of Gitlab.com and I would love to hear what you think about this subject. For me the 3 goals of the pricing are:\n\n1. The pricing should **encourage using** Gitlab.com as much as possible\n2. The pricing model should be** fair and easy** to understand\n3. The price should be** related to** **the** **benefit** of using Gitlab.com\n\nTo achieve the first goal of encouraging usage I propose we have** unlimited free private repos** and offer a **free usage tier**. With free private repos, you never have to think twice about adding another repo. Of course public repos will be free as well when we start offering them. To achieve the second goal of making things fair and easy I think we should differentiate the plans only on **one dimension**. I never like when I'm charged by two dimensions (for example the number of users and the total file size) and I have to upgrade because I hit one limit but not the other. With one dimension (either users or total file size), you never have any waste. In addition, some people told me they hate having to upgrade to a much more expensive plan just to add one more user. A fair system would just **charge per user** without any arbitrary plan sizes. To relate the price to the benefit, we need to differentiate the offering. I believe that you get more benefit from version control when you work with more people on a project. So it would be logical to charge by the **number of users** on the private project with the largest number of collaborators. I also think that when you use Gitlab.com with an organisation, you get more benefit. Therefore, I would like to create** two plans**, professional and business. The business plan would get access to tools to quickly manage multiple people like groups and teams. Groups of projects will be introduced in Gitlab 3.0 and the introduction of teams of people is on the readmap. Two different plans would allow us to charge a **lower price** for people that use Gitlab without these tools. Considering the above, I think of the following pricing model:\n- **Unlimited repositories**\n- **Unlimited disk space**\n- The price is based on the **number of collaborators on the private repo** with the most collaborators.\n- For each plan the first **2 collaborators are free**, in this case you pay nothing.\n- The **professional** plan (what is currently online for the beta test) is **$3 per additional user** per month (i.e. 5 collaborators are $9 per month).\n- The business edition plan, which has groups and teams, is** $9 per additional user** (i.e. 10 collaborators are $72 per month).\n- There will be a 1 month** free trail**.\n\nWhat do you think we should do for our **beta users?** Maybe a discount, a free period or something else, please let me know what you think. We also want to encourage people to **participate** in the Gitlab open source project. Maybe we can give [ everyone that committed to the project](https://github.com/gitlabhq/gitlabhq/graphs/contributors) a credit of $100? Please let me know what you think about the pricing plans, the amounts, the naming, the goals, the free tier, the beta user discount, etc. Please **comment on this post**.\n",{"slug":6117,"featured":6,"template":683},"gitlab-com-pricing-thoughts","content:en-us:blog:gitlab-com-pricing-thoughts.yml","Gitlab Com Pricing Thoughts","en-us/blog/gitlab-com-pricing-thoughts.yml","en-us/blog/gitlab-com-pricing-thoughts",{"_path":6123,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":6124,"content":6129,"config":6133,"_id":6135,"_type":17,"title":6136,"_source":18,"_file":6137,"_stem":6138,"_extension":21},"/en-us/blog/gitlab-io-is-now-gitlab-com",{"title":6125,"description":6126,"ogTitle":6125,"ogDescription":6126,"noIndex":6,"ogImage":694,"ogUrl":6127,"ogSiteName":671,"ogType":672,"canonicalUrls":6127,"schema":6128},"Gitlab.io is now Gitlab.com","Since announcing Gitlab.io, we've acquired the Gitlab.com domain name.","https://about.gitlab.com/blog/gitlab-io-is-now-gitlab-com","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Gitlab.io is now Gitlab.com\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2012-09-03\",\n      }",{"title":6125,"description":6126,"authors":6130,"heroImage":694,"date":6131,"body":6132,"category":14},[699],"2012-09-03","Since announcing Gitlab.io, we've acquired the Gitlab.com domain name. From now on, we'll call this project Gitlab.com and keep you posted via [blog.gitlab.com](https://about.gitlab.com/blog/) and [our twitter account](https://twitter.com/gitlab).",{"slug":6134,"featured":6,"template":683},"gitlab-io-is-now-gitlab-com","content:en-us:blog:gitlab-io-is-now-gitlab-com.yml","Gitlab Io Is Now Gitlab Com","en-us/blog/gitlab-io-is-now-gitlab-com.yml","en-us/blog/gitlab-io-is-now-gitlab-com",{"_path":6140,"_dir":245,"_draft":6,"_partial":6,"_locale":7,"seo":6141,"content":6146,"config":6150,"_id":6152,"_type":17,"title":6153,"_source":18,"_file":6154,"_stem":6155,"_extension":21},"/en-us/blog/gitlab-wallpaper",{"title":6142,"description":6143,"ogTitle":6142,"ogDescription":6143,"noIndex":6,"ogImage":694,"ogUrl":6144,"ogSiteName":671,"ogType":672,"canonicalUrls":6144,"schema":6145},"GITLAB Wallpaper","See the GitLab wallpaper","https://about.gitlab.com/blog/gitlab-wallpaper","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GITLAB Wallpaper\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2012-06-20\",\n      }",{"title":6142,"description":6143,"authors":6147,"heroImage":694,"date":6148,"body":6149,"category":14},[699],"2012-06-20","\n![Wallpaper](https://about.gitlab.com/images/gitlab.jpg)\n",{"slug":6151,"featured":6,"template":683},"gitlab-wallpaper","content:en-us:blog:gitlab-wallpaper.yml","Gitlab Wallpaper","en-us/blog/gitlab-wallpaper.yml","en-us/blog/gitlab-wallpaper",33,[689,708,730,750,769,790,811,833,855],1753733120026]