extend _components/base.pug

block pagetitle
    title Apache Ignite Events - Meetups, Summit, Conference
    meta(name="description", content="Join our upcoming events: in-memory computing meetups, Apache Ignite summits or conferences. Find an Apache Ignite meetup/group near you.")
    link(rel="canonical", href="https://ignite.apache.org/events.html")

    meta(property="og:title", content="Apache Ignite Events - Meetups, Summit, Conference")
    meta(property="og:type", content="article")
    meta(property="og:url", content="https://ignite.apache.org/events.html")
    meta(property="og:image", content="/img/og-pic.png")
    meta(property="og:description", content="Join our upcoming events: in-memory computing meetups, Apache Ignite summits or conferences. Find an Apache Ignite meetup/group near you.")

block css 
    link(rel="stylesheet", href="../css/events.css?ver=" + config.version)

block main
    - global.pageHref = "events.html"
    include ./_components/header.pug



    section.eventhero
        .container
            .eventhero__main
                h1.h2.
                    Join The Apache Ignite <br>
                    Community At&nbsp;Conferences, <br>
                    Summits And Other Events
                .h5.pt-3.
                    The community meets online and offline regularly. <br>
                    Join our meetup groups and events to learn from <br>Ignite experts or to share your Ignite experience.
            img.eventhero__img(src="/img/events/b1-mainpic.svg", alt="Join the Apache Ignite Community at Conferences, Summits and Other Events")
    // /.eventhero


    section.cmtynavblock 
        .container
            ul.cmtynavblock__list.flexi 
                li
                    a.cmtynavblock__active(href="#summit")  Ignite Summit
                li
                    a(href="#meetups") Meetups Worldwide
                li
                    a(href="#upcoming") Upcoming Events
                li
                    a(href="#past") Past Events
    // /.cmtynavblock



    section.event-featured.container 
        p.capstext Featured Event
        a(href="https://ignite-summit.org/2022-june/", target="_blank").event-featured__banner.pt-5
            picture
                source(srcset="/images/promos/ignite-Summit-cloud-edition--After-banner-375px.jpg" media="(max-width: 767px)")
                img(src="/images/promos/ignite-Summit-cloud-edition--After-banner.jpg", alt="Ignite Summit watch on demand")
            //- .event-featured__placeholder(style="background:#E8F2FA; height:340px;")
    // /.event-featured



    section.evsummit.container#summit
        .evsummit__date.flexi 
            .evsummit__day 14
            .evsummit__month.h5 JUNE <br>2022
        .evsummit__info.flexi.pt-5
            .evsummit__logo 
                img(src="/img/events/ignite-summit-logo.svg", alt="")
            .evsummit__descr
                h2.h3 Apache Ignite Summit
                p.h5.pt-2.
                    This virtual conference will feature speakers from industry-leading companies <br>
                    and hundreds of participants from all over the world. 
        //.evsummit__blocks.pt-5.flexi 
            a(href="https://hopin.com/events/ignite-summit-cloud-edition", target="_blank").evsummblock.evsummblock--speaker
                p.h4.evsummblock__title Become a speaker
                p.fz20.pt-1x.evsummblock__descr Submit a talk by October 15
                p.evsummblock__listtitle.pt-4
                    strong We are looking for:
                ul.evsummblock__list.dashlist.pt-1
                    li Ignite cloud-related deployment stories
                    li technical deep dives
                    li integration experiences
            .evsummblock.evsummblock--join
                p.h4.evsummblock__title Join Summit online
                p.fz20.pt-1x.evsummblock__descr.
                    Become a&nbsp;part of&nbsp;a&nbsp;true community event 
                    and learn more about up-to-date<br>
                    in-memory computing solutions.
        .evsummit__twobanners.pt-5 
            a(href="https://ignite-summit.org/2022-june/", target="_blank").evsummit__twobannerslink
                img(src="/img/events/banner-bott-3.jpg", alt="")
            a(href="https://www.youtube.com/playlist?list=PLMc7NR20hA-JvgLWtvp2R9tEnD5vlp9l0", target="_blank").evsummit__twobannerslink
                img(src="/img/events/banner-bott-1.jpg", alt="")
            a(href="https://www.youtube.com/playlist?list=PLMc7NR20hA-KF8c_hVICKpzKnWkjzfC2V", target="_blank").evsummit__twobannerslink
                img(src="/img/events/banner-bott-2.jpg", alt="") 
    // /.evsummit
        

    section.event-planet#meetups
        .container
            .event-planet__wrap.flexi 
                .event-planet__main 
                    h2.h3.pb-1 Apache Ignite Meetups Worldwide
                    p.h5.pt-5 Meet the community&nbsp;&mdash; developers, experts, and practitioners&nbsp;&mdash; face-to-face, virtually, or&nbsp;onsite in&nbsp;your city.
                .event-planet__pic 
                    img(src="/img/events/b4-world.svg", alt="")
    // /.event-planet
        


    section.event-virtual.container#virtual
        .eventvirt.flexi 
            .eventvirt__left 
                h3.h4 Virtual Apache Ignite Meetup
                p.pt-2 Join Ignite users, developers, committers, contributors, and architects from all over the world and&nbsp;get access to&nbsp;the online talks and presentations by&nbsp;Apache Ignite experts and practitioners.
            .eventvirt__right 
                a.button(href="https://www.meetup.com/Apache-Ignite-Virtual-Meetup/", target="_blank") Join Virtual Meetup

        .event-virtbot
            .event-virtbot__col
                h4.h4 Recordings Of Past Meetups
                p.pt-2 Find a collection of past Virtual Apache Ignite Meetup <br>presentations, talks, and webinars.
            .event-virtbot__col.event-virtbot__col--long
                h4.h4 Upcoming Virtual Meetup
                .event-dynamicsect
                    h3.fz20 Join our group and don’t <br>miss an&nbsp;upcoming virtual event
            .event-virtbot__col
                .event-recording.pb-2
                    a(href="https://www.youtube.com/watch?v=f2ArcJPH4iU&list=PLMc7NR20hA-LQ0GR1QW5SDQflMOuPUqDQ&index=1", target="_blank").event-recorditem.videoscr.glightbox
                        img.event-recpic(src="https://img.youtube.com/vi/f2ArcJPH4iU/maxresdefault.jpg", alt="")
                    a(href="https://www.youtube.com/watch?v=lCiZ3x8IRvI&list=PLMc7NR20hA-LQ0GR1QW5SDQflMOuPUqDQ&index=2" target="_blank").event-recorditem.videoscr.glightbox
                        img.event-recpic(src="https://img.youtube.com/vi/lCiZ3x8IRvI/maxresdefault.jpg", alt="")
                    a(href="https://www.youtube.com/watch?v=7UjENQBFvIQ&list=PLMc7NR20hA-LQ0GR1QW5SDQflMOuPUqDQ&index=3" target="_blank").event-recorditem.videoscr.glightbox
                        img.event-recpic(src="https://img.youtube.com/vi/7UjENQBFvIQ/maxresdefault.jpg", alt="")
                a.event-recbutton.button.button--shadow(href="https://www.youtube.com/playlist?list=PLMc7NR20hA-LQ0GR1QW5SDQflMOuPUqDQ", target="_blank")
                    <i><svg width="9" height="10" viewBox="0 0 9 10" fill="none" xmlns="http://www.w3.org/2000/svg">
                        <path d="M8.71423 4.99993L0.142805 9.94865L0.142805 0.0512134L8.71423 4.99993Z"/>
                    </svg></i>
                    span Watch Virtual Meetup videos
            .event-virtbot__col
                img.event-dynamicsect__pic(src="/img/events/logo-meetup.svg", alt="") 
                a.button.button--shadow.event-recmorebutton(href="https://www.meetup.com/Apache-Ignite-Virtual-Meetup", target="_blank") Learn more
    // /.event-virtual



    section.eventyoucity.container 
        h2.h4 Apache Ignite Meetups In Your City
        .eventyoucity__wrap.pt-5
            article.eventyoucity__item
                .eventyoucity__icon 
                    img(src="/img/events/flag-uk.svg", alt="")
                .eventyoucity__town.h5
                    strong London
                    span Apache Ignite Meetup
                .eventyoucity__action 
                    a.button.button--shadow(href="https://www.meetup.com/Apache-Ignite-London/" target="_blank")
                        img(src="/img/events/icon-plus.svg", alt="")
                        span Join 
            article.eventyoucity__item
                .eventyoucity__icon 
                    img(src="/img/events/flag-ru.svg", alt="")
                .eventyoucity__town.h5
                    strong St.Petersburg
                    span Apache Ignite Meetup
                .eventyoucity__action 
                    a.button.button--shadow(href="https://www.meetup.com/St-Petersburg-Apache-Ignite-Meetup/" target="_blank")
                        img(src="/img/events/icon-plus.svg", alt="")
                        span Join 
            article.eventyoucity__item
                .eventyoucity__icon 
                    img(src="/img/events/flag-ru.svg", alt="")
                .eventyoucity__town.h5
                    strong Moscow
                    span Apache Ignite Meetup
                .eventyoucity__action 
                    a.button.button--shadow(href="https://www.meetup.com/Moscow-Apache-Ignite-Meetup/" target="_blank")
                        img(src="/img/events/icon-plus.svg", alt="")
                        span Join
            article.eventyoucity__last
                p.fz20.pb-3 Start an onsite Apache Ignite Meetup in your city.
                small Take the first step.
                small Send us a note to <br><a href="mailto:dev@ignite.apache.org">dev@ignite.apache.org</a> <br>and we'll see what can be done.
    // /.eventyoucity



    section.eventupcoming.container#upcoming 
        .capstext.pb-1 Upcoming Events Schedule
        .eventupcoming__wrap.py-4
            h2.h4.eventupcoming__head.pb-5 Online events (1)
            article.eventcomingitem.flexi 
                .eventcomingitem__left
                    p.eventcomingitem__num 16
                    p.eventcomingitem__month February
                    p.eventcomingitem__year.pt-3 2022
                .eventcomingitem__main
                    p.eventcomingitem__title.h5 Apache Ignite Community Gathering: Ignite 3 Alpha 4
                    p.eventcomingitem__descr.pt-1 During this community gathering, we will discuss the latest Ignite releases:
                    ul
                        li Apache Ignite 2.12 overview
                        li Apache Ignite 3 Alpha 4: The Next Milestone
                        li Transactions API in Apache Ignite 3
                    p.eventcomingitem__descr.pt-1 Maxim Timonin, Apache Ignite Committer and Software Engineer at SberTech will present a brief overview of the Apache Ignite 2.12 release.
                    p.eventcomingitem__descr.pt-1 Apache Ignite 3 Alpha 4: The Next Milestone
                    p.eventcomingitem__descr.pt-1 Apache Ignite 3 is the next generation of the Apache Ignite platform. Ignite 3 modernizes and improves Ignite’s usability while retaining its power and flexibility. The Alpha 4 build is the latest release of the Ignite 3 project. Val Kulichenko, Apache Ignite PMC member and the Ignite 3.0 Release manager, will present the Ignite 3 Alpha 4 overview, including new features Object Mappings for Table Views and DDL.
                    p.eventcomingitem__descr.pt-1 Transactions API in Ignite 3
                    p.eventcomingitem__descr.pt-1 Alexey Scherbakov, Apache Ignite Committer, and architect at GridGain will show Ignite 3 just released in Alpha 4 build transactional API. We will take a glance over:
                    p.eventcomingitem__descr.pt-1 Transactions API in Ignite 3
                    ul
                        li a transaction lifecycle
                        li how to manage transactions
                        li examples of synchronous and asynchronous transactions
                    a.eventcomingitem__more(href="https://www.meetup.com/Apache-Ignite-Virtual-Meetup/events/283606359", target="_blank") Learn more details
                .eventcomingitem__right
                    .eventcomingitem__mic
                        .eventcomingitem__speaker.
                            Maxim Timonin<br>
                            Val Kulichenko<br>
                            Alexey Scherbakov
                    .eventcomingitem__loc
                        .eventcomingitem__locblock
                            img(src="/img/events/content/meetup.svg", alt="")
                        .eventcomingitem__camera Online event
            // /.eventcomingitem

        .eventupcoming__wrap.py-4
            h2.h4.pb-4 Offline events (1)
            //article.eventcomingitem.flexi 
                .eventcomingitem__left
                    p.eventcomingitem__num 13
                    p.eventcomingitem__month November
                    p.eventcomingitem__year.pt-3 2021
                .eventcomingitem__main
                    p.eventcomingitem__title.h5 Backward compatibility on the example of Apache Ignite. Why does it hurt so much?
                    p.eventcomingitem__descr.pt-1 I am developing an Apache Ignite distributed database. Our product provides backward compatibility between versions. What do you need to think about for backward compatibility? What is Backward Compatibility for Developers? How do I test it? Why does it hurt so much? How to relieve pain? I will tell you about all this with the code examples.
                    a.eventcomingitem__more(href="https://mergeconf.ru/development/opensource/izhikov", target="_blank") Learn more details
                .eventcomingitem__right
                    .eventcomingitem__mic
                        .eventcomingitem__speaker  Nikolay Izhikov
                    .eventcomingitem__loc
                        .eventcomingitem__locblock
                            img(src="/img/events/content/merge.svg", alt="")
                        .eventcomingitem__address Innopolis, Russia
            // /.eventcomingitem

            article.eventcomingitem.flexi 
                .eventcomingitem__left
                    p.eventcomingitem__num 18
                    p.eventcomingitem__month MARCH
                    p.eventcomingitem__year.pt-3 2022
                .eventcomingitem__main
                    p.eventcomingitem__title.h5 Rebalancing in a distributed database. How to catch up with the state of the node to the state of the cluster?
                    p.eventcomingitem__descr.pt-1 The report will present the concept of historical rebalancing, implemented in the Apache Ignite distributed database.
                    a.eventcomingitem__more(href="https://www.highload.ru/foundation/2022/abstracts/7989", target="_blank") Learn more details
                .eventcomingitem__right
                    .eventcomingitem__mic
                        .eventcomingitem__speaker Vlad Pyatkov
                    .eventcomingitem__loc
                        .eventcomingitem__locblock
                            img(src="/img/events/content/hl++.svg", alt="")
                        .eventcomingitem__address Moscow, Russia
            // /.eventcomingitem

    // /.eventupcoming




    section.eventspast#past.container.jsTabWrap
        h3.capstext.pb-5 Past Events
        .eventspast__tablinks.flexi 
            button.eventpast__link(data-tablink="e2021").active 2021
            button.eventpast__link(data-tablink="e2020") 2020
            button.eventpast__link(data-tablink="e2019") 2019
            button.eventpast__link(data-tablink="e2018") 2018
            button.eventpast__link(data-tablink="e2017") 2017
            button.eventpast__link(data-tablink="e2016") 2016
            button.eventpast__link(data-tablink="e2015") 2015
            button.eventpast__link(data-tablink="e2014") 2014
        .eventspast__tabs
            .eventspast__tabwrap(data-tab="e2021").active
                include ./_components/events/2021.pug
            // /.eventspast__tabwrap 2021
            
            .eventspast__tabwrap(data-tab="e2020")
                include ./_components/events/2020.pug
            // /.eventspast__tabwrap 2020

            .eventspast__tabwrap(data-tab="e2019")
                include ./_components/events/2019.pug
            // /.eventspast__tabwrap 2019

            .eventspast__tabwrap(data-tab="e2018")
                include ./_components/events/2018.pug
            // /.eventspast__tabwrap 2018

            .eventspast__tabwrap(data-tab="e2017")
                include ./_components/events/2017.pug
            // /.eventspast__tabwrap 2017

            .eventspast__tabwrap(data-tab="e2016")
                include ./_components/events/2016.pug
            // /.eventspast__tabwrap 2016

            .eventspast__tabwrap(data-tab="e2015")
                include ./_components/events/2015.pug
            // /.eventspast__tabwrap 2015

            .eventspast__tabwrap(data-tab="e2014")
                include ./_components/events/2014.pug
            // /.eventspast__tabwrap 2014
    // /.eventspast
        



    