--------------------------------------------------------------------------------
/layouts/partials/breadcrumbs.html:
--------------------------------------------------------------------------------
1 | {{ $url := replace .Permalink ( printf "%s" .Site.BaseURL) "" }}
2 | {{ $.Scratch.Add "path" "/" }}
3 |
4 | Home
5 | {{ range $index, $element := split $url "/" }}
6 | {{ $.Scratch.Add "path" $element }}
7 | {{ if ne $element "" }}
8 | {{ replace (humanize .) ".html" "" }}
9 | {{ $.Scratch.Add "path" "/" }}
10 | {{ end }}
11 | {{ end }}
12 |
13 |
--------------------------------------------------------------------------------
/layouts/partials/footer.html:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/getcalendar.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # Fetch calendar data; will be stored as calendar-DO-NOT-EDIT.json
4 |
5 | CALENDAR_ID="nerseigospses068jd57bk5ar8@group.calendar.google.com"
6 | API_KEY="AIzaSyDJkXq1faq2G5NkFkFTh9Sikdpc2YXTVXs"
7 | NOW=$(date '+%Y-%m-%dT%H:%M:%SZ')
8 | OPTS="?key=${API_KEY}&timeMin=${NOW}&singleEvents=true&orderBy=startTime&timezone=UTC&maxResults=20"
9 |
10 | echo "Fetching calendar data"
11 |
12 | curl -sS -o calendar-DO-NOT-EDIT.json "https://www.googleapis.com/calendar/v3/calendars/${CALENDAR_ID}/events${OPTS}" \
13 | -H 'accept: application/json, text/javascript, */*; q=0.01' \
14 | -H 'origin: https://events.apache.org'
15 |
16 | echo "Fetched data"
17 |
--------------------------------------------------------------------------------
/source/about/endorsed.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Apache Endorsed Events
3 | ---
4 |
5 | # Apache endorsed/approved events
6 |
7 | There are many third-party events produced every year that focus on
8 | Apache Software Foundation projects. The ASF encourages these events, as
9 | they expand the reach of our projects and our message.
10 |
11 | If you are producing an Apache-related event, and using our brands and
12 | marks, we ask that contact us for our official approval. Along with
13 | this, we will also help promote these events, where possible and
14 | appropriate. Whether or not you want to collaborate with us on your
15 | event, you MUST adhere to our [branding policy](https://www.apache.org/foundation/marks/events.html).
16 |
--------------------------------------------------------------------------------
/source/event/__index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Apache Conferences Calendar
3 | slug: index
4 | ---
5 |
6 | ## Upcoming Apache events
7 |
8 | This is the list of upcoming official Apache events, and
9 | those events which have been approved to use Apache Marks under the
10 | [Third Party Event Branding Policy][1].
11 |
12 |
15 |
16 |
17 |
18 |
19 | For a complete list of events see our [calendar](calendar.html).
20 |
21 | In addition to Official Apache Events, there are a wide range of other
22 | events which feature Apache projects and technologies.
23 |
24 |
25 |
26 |
27 | [1]: https://www.apache.org/foundation/marks/events.html
28 |
--------------------------------------------------------------------------------
/source/organize/__index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Organize an Apache Event
3 | slug: index
4 | ---
5 |
6 | If you want to host your own Apache project event, or propose a
7 | [roadshow](/about/roadshow.html) about the ASF, get in touch with us on the [Event Planning
8 | mailing list](mailto:planners@apachecon.com).
9 |
10 | **Important!** While we appreciate other parties producing events to tell the world about
11 | our many great Apache projects and communities, [Apache trademarks and brands](https://whimsy.apache.org/brand/list)
12 | are also important to us. To use any Apache trademarks in conjunctions with events,
13 | you **must** request permission by following the
14 | [Third Party Event Branding Policy](https://www.apache.org/foundation/marks/events.html).
15 |
16 | * [Organizing a Roadshow event](roadshow)
17 |
18 |
19 |
--------------------------------------------------------------------------------
/source/event/calendar.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Apache Conferences Calendar
3 | ---
4 |
5 | This Calendar is maintained by the [Apache Conferences Committee][1] (ConCom). It's used to list official Apache events, and
6 | those events which have been approved to use Apache Marks under the [Third Party Event Branding Policy][2].
7 |
8 | The calendar can be viewed at [https://www.google.com/calendar/...][4]
9 |
10 | This Calendar is also available as an [iCal feed][3]
11 |
12 |
13 | [1]: https://www.apache.org/foundation/conferences.html
14 | [2]: https://www.apache.org/foundation/marks/events.html
15 | [3]: https://www.google.com/calendar/ical/nerseigospses068jd57bk5ar8%40group.calendar.google.com/public/basic.ics
16 | [4]: https://www.google.com/calendar/embed?src=nerseigospses068jd57bk5ar8%40group.calendar.google.com&ctz=UTC
17 |
--------------------------------------------------------------------------------
/.asf.yaml:
--------------------------------------------------------------------------------
1 | # See: https://cwiki.apache.org/confluence/display/INFRA/git+-+.asf.yaml+features
2 |
3 | github:
4 | description: "Website sources for the Apache Events website"
5 | homepage: https://events.apache.org
6 | labels:
7 | - apache
8 | - community
9 | - comdev
10 | - events
11 | - hugo
12 |
13 | notifications:
14 | commits: commits@community.apache.org
15 | issues: dev@community.apache.org
16 | pullrequests: dev@community.apache.org
17 |
18 | # Looks like this may be needed to override the default host name
19 | publish:
20 | whoami: asf-site
21 | hostname: events.apache.org
22 |
23 | # Test site in preview/sample; output to preview/sample-staging
24 | # autostage will publish the site at community-sample.staged.apache.org
25 | staging:
26 | profile: ~
27 | whoami: asf-staging
28 | autostage: preview/*
29 |
--------------------------------------------------------------------------------
/config.toml:
--------------------------------------------------------------------------------
1 | baseURL = "https://events.apache.org"
2 | title = "Apache Software Foundation Events"
3 | languageCode = "en"
4 |
5 | contentDir = "source"
6 | publishDir = "target/content"
7 |
8 | disablePathToLower = true
9 | uglyURLs = true
10 | enableRobotsTXT = true
11 | disableBrowserError = true
12 | timeout = 3000
13 |
14 | disableKinds = ["taxonomy", "taxonomyTerm"]
15 | ignoreFiles = [ ] # No files to ignore
16 |
17 | # Highlighting config. See https://help.farbox.com/pygments.html
18 | pygmentsCodeFences = true
19 | pygmentsUseClasses = false
20 | pygmentsStyle = "emacs"
21 |
22 | # Enable Git variables like commit, lastmod
23 | enableGitInfo = true
24 |
25 | [markup.goldmark.renderer]
26 | unsafe = true
27 |
28 | [blackfriday]
29 | # hrefTargetBlank = true # We don't want everything opened in a new window
30 | fractions = false
31 |
32 | [frontmatter]
33 | date = ["date", ":filename", "publishDate", "lastmod"]
34 |
35 | [params]
36 | repositoryUrl = "https://github.com/apache/comdev-events-site"
37 | repositorySourceBranch = "main"
38 |
--------------------------------------------------------------------------------
/source/organize/roadshow.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Roadshow Bid Process
3 | ---
4 |
5 | ## DRAFT
6 |
7 | This is intended to document the bid process for running/hosting a
8 | Roadshow. In particular, if you want ASF budget for it.
9 |
10 | You need, at a minimum
11 |
12 | * Event chair
13 | * Must be an ASF member
14 | * Must be resident in the city where the event is proposed
15 | * Volunteers to support (how many?)
16 | * City/Venue selected
17 | * University cities are preferred
18 | * Local tech firms that can sponsor?
19 | * Local keynote suggestion
20 | * Proposed timeline, starting with CFP, going through schedule, speaker notification, the event, and the post-event
21 | * Budget
22 | * Leads on sponsorship helpful
23 | * Contribute to event "runbook" as output from the event
24 |
25 |
26 | To run a roadshow or other small event without ASF budget, you only need to:
27 |
28 | * Follow our branding guidelines - https://www.apache.org/foundation/marks/events
29 | * [Tell us about it](mailto:planners@apachecon.com)
30 | * Have an Apache member involved in the planning
31 |
32 |
--------------------------------------------------------------------------------
/.github/workflows/getcalendar.yml:
--------------------------------------------------------------------------------
1 | name: Fetch the Google Calendar
2 |
3 | on:
4 | workflow_dispatch: # only works in default branch
5 | push:
6 | schedule: # only works in default branch
7 | - cron: '50 9 * * *'
8 |
9 | permissions:
10 | contents: write
11 |
12 | jobs:
13 | fetch-calendar:
14 | runs-on: ubuntu-latest
15 |
16 | steps:
17 | - uses: actions/checkout@v4
18 | - name: Curl calendar
19 | run: |
20 | git config user.email "dev@community.apache.org"
21 | git config user.name "Comdev automated workflow"
22 | cd static/js
23 | echo "download calendar"
24 | bash ../../getcalendar.sh
25 | git status
26 | echo "preparing to push change(s)"
27 | git add .
28 | if git commit -m "Update calendar data (getcalendar.yml workflow)"
29 | then
30 | git push
31 | echo "Changed!"
32 | exit 0
33 | else
34 | echo "No change"
35 | true # ensure success
36 | fi
37 | env: # for gh
38 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39 |
--------------------------------------------------------------------------------
/source/about/__index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: About ASF Events
3 | slug: index
4 | ---
5 |
6 | The Apache Software Foundation (ASF) runs, or participates in some fashion in,
7 | a number of different types of events, which different target audiences and goals, to educate about our
8 | projects and about the Foundation, and to build the communities.
9 |
10 | The main types of event we work with around ASF projects are:
11 |
12 | - [Community Over Code](/about/commcode/index.html) - the ASF's official conference
13 | - [Roadshows](/about/roadshow.html) - bringing ASF content around the world
14 | - [Endorsed events](/about/endorsed.html) - run by third parties using Apache brands
15 |
16 | If you want to organize your own event that uses ASF brands or trademarks in any way, we strongly encourage you to
17 | [coordinate with us](/organize/index.html).
18 |
19 |
20 | ## About This Website
21 |
22 | - This website is maintained by volunteers, various conference Planners, and the [VP, Conferences for the ASF](//whimsy.apache.org/foundation/orgchart/vp-concom).
23 | - Got questions or ideas? Come discuss events on our [mailing
24 | lists](https://events.apache.org/involved/mailing-lists.html)!
25 |
--------------------------------------------------------------------------------
/static/.htaccess:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE- 2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | RewriteEngine On
17 |
18 | # Redirect to https is done elsewhere
19 |
20 | # ApacheCon lives on its own domain
21 | Redirect temp /apachecon https://www.apachecon.com
22 |
23 | # Redirect to current CoC event website
24 | # This should agree with
25 | # https://raw.githubusercontent.com/apache/www-site/main/content/events/.htaccess
26 | # and the default event in
27 | # https://www.apachecon.com/event-images/snippet.js
28 | Redirect /x/current-event.html https://events.apache.org/
29 |
--------------------------------------------------------------------------------
/source/about/roadshow.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: About Apache Roadshows
3 | ---
4 |
5 | Apache Roadshows are small regional one- or two-day events, intended to
6 | build local community and educate about what the Apache Software
7 | Foundation does.
8 |
9 | While not a traditional roadshow (ie, a traveling event with multiple
10 | stops), we use the name to indicate that there may be multiple small
11 | events on a particular continent. Thus, the Europe Roadshow may have small
12 | events in Berlin and Barcelona during the course of a year, while the
13 | North America Roadshow might have events in DC and Chicago.
14 |
15 | Road shows are typically one or two days, having one or two tracks of
16 | content. They are often focused on a particular technology (e.g.,
17 | Tomcat or Spark) or industry segment (e.g., IoT or Big Data).
18 |
19 | They can be organized by any Apache member, and may receive
20 | funding and promotion from the ASF, based on availability. It may be
21 | colocated with another event, or it may be standalone.
22 |
23 | Road shows are a great way for companies to support the ASF via donated
24 | space and sponsorship. If you'd like to host a roadshow, please contact
25 | the [community development mailing
26 | list](https://lists.apache.org/list.html?dev@community.apache.org) with
27 | your ideas.
28 |
29 | ### Other event types include:
30 |
31 | - [Community Over Code](/about/commcode/index.html)
32 | - [Endorsed events](/about/endorsed.html)
33 |
--------------------------------------------------------------------------------
/source/involved/mailing-lists.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Apache Conferences and Events Mailing Lists
3 | ---
4 |
5 | There are several main mailing lists on which discussion and planning of Apache
6 | Software Foundation events occurs:
7 |
8 | | ApacheCon Announce | announce@apachecon.com |
9 | |-------------------|------------------------------|
10 | | Subscription address: | [announce-subscribe@apachecon.com](mailto:announce-subscribe@apachecon.com) |
11 | | Archives: | [Web archives](https://lists.apache.org/list.html?announce@apachecon.com) |
12 | | Use: | Read-only: Announcements of, and details about, Apache events |
13 |
14 | | ApacheCon Discuss | apachecon-discuss@apache.org |
15 | |-------------------|------------------------------|
16 | | Subscription address: | [apachecon-discuss-subscribe@apache.org](mailto:apachecon-discuss-subscribe@apache.org) |
17 | | Archives: | [Web archives](https://lists.apache.org/list.html?apachecon-discuss@apache.org) |
18 | | Use: | Public discussion of Apache events |
19 |
20 | | Community Development | dev@community.apache.org |
21 | |--------------------------|---------------------------------|
22 | | Subscription address: | [dev-subscribe@community.apache.org](mailto:dev-subscribe@community.apache.org) |
23 | | Archives: | [Web archives](https://lists.apache.org/list.html?dev@community.apache.org) |
24 | | Use: | Since events are produced and organized by the Apache [community development](https://community.apache.org) PMC, most event discussion starts on the ComDev mailing list |
25 |
26 | | Planners (Planning committee members only) | planners@apachecon.com |
27 | |--------------------------|---------------------------------|
28 | | Subscription address: | [planners-subscribe@apachecon.com](mailto:planners-subscribe@apachecon.com) |
29 | | Subscription note: | All subscriptions are moderated. Since budget and other confidential matters are discussed here, this list is not available to the public. Contact V.P. Conferences if you have questions. |
30 | | Archives: | [(Private) Web archives](https://lists.apache.org/list.html?planners@apachecon.com) |
31 | | Use: | Policy, budgets, discussions with external parties which cannot be done in public. Used for detailed planning of events. |
32 |
--------------------------------------------------------------------------------
/source/involved/__index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Getting Involved in Apache Events
3 | slug: index
4 | ---
5 |
6 | There are a number of different ways to get involved with Events at Apache.
7 | Many of these come under the umbrella of the Conferences Committee, but
8 | some fall under different groups, such as the
9 | [Apache Community Development Project](https://community.apache.org/).
10 |
11 | If you are an Apache Committer, and you're interested in putting on an
12 | Apache Event, please see the [Organising Events](/organize/index.html)
13 | section for more help. If you are interested in helping others out with
14 | putting on an Apache Event, you are advised to join the appropriate
15 | [mailing list](mailing-lists.html), and volunteer for events there.
16 | This could be for a project specific event, such as a Hackathon or
17 | Meetup, for a foundation wide event, such as a BarCamp or Retreat,
18 | or a larger event such as a Roadshow or a Project / Project Cluster
19 | related small conference.
20 |
21 | If you are interested in putting on an external event making use of
22 | Apache Brands and Marks, please see the
23 | [Third Party Event Branding Policy](https://www.apache.org/foundation/marks/events.html)
24 | for information on the approval process and requirements.
25 |
26 | If you are interested in speaking about Apache at external events, then please see
27 | [Apache Speakers Resources](https://community.apache.org/speakers/index.html) that are
28 | maintained by the [Apache Community Development Project](https://community.apache.org/).
29 |
30 | If you are putting on an external event, and would like a small number of
31 | speakers for it to talk about Apache Projects and Technologies, please see the
32 | [Apache Speakers Resources](https://community.apache.org/speakers/index.html) for
33 | information on finding speakers.
34 |
35 | If you are putting on an external event, and you are interested in
36 | having an Apache track, or an Apache barcamp / hackathon style event,
37 | please contact
38 | [ConCom, the Conference Committee](https://www.apache.org/foundation/conferences.html)
39 | to discuss the possibility.
40 |
41 | If you are interested in attending an Apache Event, or an Apache
42 | related event, please see the [Calendar](/event/calendar.html) to discover
43 | what is coming up.
44 |
--------------------------------------------------------------------------------
/source/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Apache Software Foundation Events
3 | ---
4 |
5 |
6 |
7 |
8 |
13 |
14 | The ASF runs and participates in a number
15 | of events related to our Apache projects throughout the year. These events have three main purposes:
16 |
17 | * Educate the world about the work and mission of the ASF
18 | * Provide technical information about our many Apache projects
19 | * Build developer and user communities
20 |
21 | Running a third party or project event? You must comply with the [events
22 | branding policy](https://www.apache.org/foundation/marks/events).
23 |
24 | The [ASF Travel Assistance Committee](https://tac.apache.org/) provides financial
25 | assistance for selected ASF events, to those who would otherwise be unable to attend them.
26 |
27 | ## Upcoming Events
28 |
29 |
32 |
33 |
34 |
35 |
36 | Follow us on Twitter at [@ApacheCon](https://twitter.com/apachecon) for
37 | the latest news and announcements.
38 |
39 | Disclaimer: Events called 'ApacheCon', 'Apache Roadshow' or 'Community over Code' (events in
40 | bold) are official Apache Software Foundation events. Other listed events are put on by projects,
41 | or third-party producers, and are listed here to support our community, but are not official
42 | Foundation events.
43 |
44 | ## Past Events & Get Involved
45 |
46 | - See the [past ASF events](https://apachecon.com/history.html), stretching back to 1998!
47 | - Want to get involved? [Volunteers are welcome](https://events.apache.org/involved/) on a variety of tasks.
48 | - Running your own Apache-branded event? Be sure to [get trademark permission](//www.apache.org/foundation/marks/events.html).
49 | - [Promote upcoming ASF events](https://www.apachecon.com/event-images/) on your personal or project website.
50 |
51 | Community Over Code and all ASF-run events operate under the terms of the [ASF's Code of Conduct](//www.apache.org/foundation/policies/conduct.html).
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/source/about/commcode/__index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: About Community Over Code
3 | slug: index
4 | ---
5 |
6 | Community Over Code (formerly ApacheCon) is the official conference of the Apache Software Foundation.
7 | Its primary goals are education and community building. We try to
8 | produce one each calendar year somewhere in North America and Europe,
9 | and are working on expanding this to the rest of the world.
10 |
11 | If you want to volunteer to help with Community Over Code, please
12 | [join our mailing lists](/involved/mailing-lists.html),
13 | and see what [volunteer opportunities](/about/commcode/volunteer.html) we have,
14 | bearing in mind that it sometimes gets out of date.
15 |
16 | ## What Is Community Over Code?
17 |
18 | While Community Over Code events vary from year to year and location to location, there
19 | are some components that you can count on happening at every Community Over Code.
20 |
21 | - Community Over Code has at least 4 tracks of technical content, and often more.
22 | - Projects, or groups of related projects, may request a dedicated
23 | track where they will provide a track chair, and have freedom to
24 | create their own content for a project/topic sub-conference. In this
25 | way, Community Over Code resembles a convention of ASF project conferences.
26 | - There can be a hackathon space where projects can gather to work on
27 | code, or work out community issues.
28 | - There will be a **State of the Foundation** Keynote by the President or
29 | other officer, providing an overview of the ASF's accomplishments.
30 | - There will be a PGP key signing.
31 | - The event is usually 3 days or more.
32 |
33 | Community Over Code is the one annual event for the particular continent in
34 | question. As such, it draws an international audience, both in
35 | speakers and attendees.
36 |
37 | The documentation around how to plan an ApacheCon may be found in the
38 | [ApacheCon Playbook](/about/commcode/playbook.html). Most planning tasks
39 | are done by volunteers who commit to help - at least a little - throughout
40 | the planning process for one specific conference.
41 |
42 | You can find out more about what ApacheCon events are in the works on
43 | the [Community Over Code NA](https://communityovercode.org} and [Community Over Code EU](https://eucommunityovercode.org) websites, and see what events
44 | we've done in the past on
45 | [archive.apachecon.com](https://archive.apachecon.com/).
46 |
47 | Other event types include:
48 |
49 | - [Roadshows](/about/roadshow.html)
50 | - [Endorsed events](/about/endorsed.html)
51 |
--------------------------------------------------------------------------------
/static/js/events-calendar.js:
--------------------------------------------------------------------------------
1 | // Update the calendar page from the json file
2 |
3 | // Where to put things
4 | var events = $('#events');
5 | if (!events) {
6 | events = $('body').append("
");
7 | }
8 |
9 | // Fetch
10 | $.ajax({
11 | type: 'GET',
12 | url: encodeURI('/js/calendar-DO-NOT-EDIT.json'),
13 | dataType: 'json',
14 | success: function (response) {
15 | events.empty();
16 |
17 | var el = response['items'];
18 | let reg = /T.*$/;
19 | let official = /(ApacheCon|Roadshow|Community (O|o)ver Code)/;
20 | if (el.length > 0) {
21 | for (i = 0; i < el.length; i++) {
22 | var ev = el[i];
23 | var when = ev.start.dateTime;
24 | if (!when) {
25 | when = ev.start.date;
26 | }
27 | when = when.replace(reg,"");
28 | if (ev.end) {
29 | var end = ev.end.dateTime;
30 | if (!end) {
31 | end = ev.end.date;
32 | }
33 | end = end.replace(reg,"");
34 | if (end != when) {
35 | when = when + " to " + end;
36 | }
37 | }
38 | var link = null;
39 | if (ev.description) {
40 | var line1 = ev.description.split("\n")[0];
41 | if (line1.slice(0,7) === "http://" ||
42 | line1.slice(0,8) === "https://"
43 | ) {
44 | link = line1.trim();
45 | }
46 | }
47 |
48 | var html = "
");
72 | console.log(response.responseText);
73 | }
74 | });
75 |
76 |
77 |
--------------------------------------------------------------------------------
/source/about/commcode/volunteer.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Volunteer to help at ApacheCon
3 | ---
4 |
5 | # Volunteer to help at ApacheCon
6 |
7 | Coordination of ApacheCon happens on two lists:
8 |
9 | * The private planners@apachecon.com mailing list for most of the
10 | planning work
11 | * The public apachecon-discuss@apache.org mailing list for general
12 | discussion, calls for volunteers, announcements, and so on.
13 |
14 | At this time, we can use help in the following areas - typically for each ApacheCon that happens.
15 | To volunteer, please send email to the *apachecon-discuss* mailing list indicating your availability.
16 |
17 | ## Calls For Papers
18 |
19 | The CFP for each ApacheCon draws hundreds of submissions about projects all
20 | around the ASF. We always need volunteers who can show up **on time**
21 | when the CFP closes to help rate talks and schedule specific tracks.
22 | Many Apache PMCs are now managing their own tracks or co-located events
23 | at ApacheCon, which is great.
24 |
25 | ## Promotions and Publicity
26 |
27 | While the ApacheCon Planners work with VP, Marketing & Publicity for some
28 | basic services, we always could use Apache committers retweeting and
29 | amplifying the official notices about conferences.
30 |
31 | Follow [@ApacheCon](https://twitter.com/apachecon) and [@TheASF](https://twitter.com/apachecon), and help spread their message about upcoming events.
32 |
33 | ## Website
34 |
35 | * Keep this `events.apache.org` [website source code updated](https://svn.apache.org/repos/asf/concom/site/trunk/content). Possibly make it look better.
36 | * Work with Infra and the planning team to improve the site design.
37 | * At the end of the event, archive the current event information to the past events area, and start the new event section.
38 |
39 | ## Hackathon Coordinator
40 |
41 | * Alert projects that a hackathon is available for each conference. Encourage them to
42 | have a plan ahead of time as to what they'll work on
43 | * Make signs for the various tables
44 | * Welcome people and help them find the community that they're looking for
45 |
46 | ## Local interest
47 |
48 | Preferably someone that lives local to the venue: Update the website to indicate what the local attractions are - restaurants, beaches, bars, dance venues, and so on. Update content in wiki, and work with Producer to update the main event website.
49 |
50 | ## "Meet the experts" coordinator
51 |
52 | Identify people that can participate in a "meet the experts" area. Determine what this entails. Coordinate scheduling of this event with Producer and VP Conferences. Promote the event.
53 |
54 | ## Lightning Talks
55 |
56 | * Write up web page defining the lightning talks
57 | * Promote the lightning talks to our community
58 | * Work with LightningTalk MCs to pre-register volunteers that want to speak<
59 | * (Maybe) find an organization that wants to sponsor this event and
60 | work with Producer to determine the nature of the event and when it will be
61 |
62 |
--------------------------------------------------------------------------------
/layouts/_default/baseof.html:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | {{ .Title }}
25 |
26 |
27 |
28 |
29 |
30 |
31 | {{ partial "banner.html" . }}
32 |
33 |
74 |
75 | {{ partial "footer.html" . }}
76 |
77 |
78 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
17 | # Apache Events website
18 |
19 | This is the source code for the website of the [Apache Events website](https://events.apache.org/), hosted at:
20 |
21 | https://events.apache.org/
22 |
23 | To get in touch with the Community Development PMC (responsible for the website) please use the [dev@community.apache.org](https://lists.apache.org/list.html?dev@community.apache.org) mailing list.
24 |
25 | The repository for the main Community Development website is at https://github.com/apache/comdev-site
26 |
27 | ## How to publish the website
28 |
29 | Changes to the `main` branch of this repository trigger the [events-site Jenkins Job](https://ci-builds.apache.org/job/Community%20Development/job/events-site/job/main/), which generates the website content and commits it to the `asf-site` branch of this repository. There's currently (April 2020) a lag of about ten minutes for the Jenkins job to start, if you commit directly to the GitHub repository.
30 |
31 | The [ASF's gitpubsub mechanism](https://blogs.apache.org/infra/entry/git_based_websites_available) then synchronizes that content to [https://events.apache.org/](https://events.apache.org/), usually within a few seconds. More details about the publication process can be found in the [ASF Documentation about Project sites](https://infra.apache.org/project-site.html). If for some reason this process fails, you can use [the self-service page from ASF Infra](https://selfserve.apache.org/) to trigger a resync of the git repo.
32 |
33 | ### Calendar data updates
34 |
35 | A [GitHub Action workflow](.github/workflows/getcalendar.yml) runs daily at 09:20 UTC, to fetch the Comdev calendar events and update the local JSON copy.
36 |
37 | Any calendar changes are then committed to to main branch, which triggers a site rebuild as described above.
38 |
39 | To update the website quickly after editing the Google calendar, the workflow can also be triggered manually using the `Run workflow` button on the ["Fetch the Google Calendar"](https://github.com/apache/comdev-events-site/actions/workflows/getcalendar.yml) workflow page.
40 |
41 | ## Powered by Hugo!
42 |
43 | The website uses Hugo as static website generator, see [their website](https://gohugo.io/) for more information
44 | and for how to install and run it if needed.
45 |
46 | Other Apache websites that are built with Hugo should be listed by [this GitHub query for the 'hugo' tag](https://github.com/search?q=topic%3Ahugo+org%3Aapache&type=Repositories).
47 |
48 | ## How to test the website and changes on your own computer
49 |
50 | To generate the static website, execute `hugo` to generate the website under target/content.
51 |
52 | During development, it may be useful to run an incremental build. For this to work, execute `hugo server -D` to
53 | continuously (re)generate and serve the website on `localhost:1313`.
54 |
55 | # How-To add a Community Over Code event promotion to your project site
56 |
57 | All PMCs are asked to help promote Community Over Code and other major Apache
58 | sponsored events by adding some form of img link to their homepages,
59 | in whatever place works best for your site navigation.
60 |
61 | The process for doing this is documented at https://apachecon.com/event-images/
62 |
63 |
64 | # How ComDev/VP, Conferences Maintains current-event Pages
65 |
66 | * Maintenance of current-event* files for PMC inclusion:
67 | - update text in content/current-event.mdtext
68 | - replace content/images/current-event-*.png files with the new versions from content/ads/ApacheCon
69 |
70 |
--------------------------------------------------------------------------------
/static/style/screen.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | body {
18 | color: white;
19 | font-family: Arial,Helvetica,sans-serif;
20 | font-size: 12pt;
21 | background: url(../images/rave_bg.jpg) no-repeat top right;
22 | margin: 0;
23 | }
24 |
25 | #banner {
26 | padding: 0 0 10px 10px;
27 | color:black;
28 | border-bottom: solid #EEE 1px;
29 | background-color: #f5f8fa;
30 | }
31 |
32 | #banner .sitename {
33 | text-transform: none;
34 | font-weight: normal;
35 | font-size:200%;
36 | display:inline;
37 | }
38 |
39 | #banner .logo {
40 | float:right;
41 | }
42 |
43 | .breadcrumbs {
44 | display:block;
45 | padding: 0.2em;
46 | }
47 |
48 | a {
49 | color: #107EC0;
50 | }
51 |
52 | a:visited {
53 | color: #107EC0;
54 | }
55 |
56 | a:hover {
57 | color: #107EC0;
58 | background-color: #e6ebed;
59 | }
60 |
61 | a img { border: none; }
62 |
63 | h1,h2,h3,h4,h5,h6 {
64 | color: #193240;
65 | text-transform:capitalize;
66 | border-left: solid #EEE 1px;
67 | }
68 |
69 | #content {
70 | margin: 20px 150px 20px 250px;
71 | padding: 0 8px 40px;
72 | color: #333;
73 | }
74 |
75 | #content h1,h2,h3,h4,h5,h6 {
76 | font-weight: normal;
77 | margin: 10px 0 15px;
78 | padding: 5px 0;
79 | }
80 |
81 | #content h1 {
82 | font-size: 1.4em;
83 | padding: 15px;
84 | }
85 |
86 | #content h2 {
87 | font-size: 1.2em;
88 | margin-top: 2em;
89 | border-bottom: 1px solid #a3afb6;
90 | }
91 |
92 | #content h3,h4,h5,h6 {
93 | border-bottom: none;
94 | font-size: 1em;
95 | margin-bottom: 0;
96 | }
97 |
98 | .codehilite {
99 | background-color: #F00;
100 | padding: 0.01em 1em;
101 | border-radius: 10px;
102 | background-image: url(../images/rave_codehilite_bg.gif);
103 | }
104 |
105 | #navigation {
106 | border: 1px solid #e6ebed;
107 | border-left: none;
108 | -moz-border-radius: 0 10px 10px 0;
109 | border-radius: 0 10px 10px 0;
110 | font-size: 0.9em;
111 | color: #003;
112 | float: left;
113 | padding: 15px 15px 5px 25px;
114 | width: 180px;
115 | background: none repeat scroll 0 0 #f5f8fa;
116 | margin: 20px 0 20px 0;
117 | }
118 |
119 | #navigation img {
120 | padding-bottom: 15px;
121 | margin-left: auto;
122 | margin-right: auto;
123 | display: block;
124 | }
125 |
126 | #navigation h1 {
127 | color: #000;
128 | font-size: 1em;
129 | padding: 0;
130 | margin-top: 0.8em;
131 | margin-bottom: 0;
132 | border-bottom: 1px solid #a3afb6;
133 | }
134 |
135 | #navigation ul {
136 | margin: 0 0;
137 | padding: 0;
138 | list-style: none;
139 | }
140 |
141 | #navigation li {
142 | border-bottom: 1px solid #e6ebed;
143 | margin: 0.2em 0;
144 | padding: 0;
145 | }
146 |
147 | #navigation li a {
148 | margin: 0;
149 | text-decoration:none;
150 | }
151 |
152 | #navigation li a:hover {
153 | color: #193240;
154 | background: none;
155 | }
156 |
157 | #footer {
158 | margin: 20px 150px 20px 250px;
159 | border-top: 1px solid #ccc;
160 | color:#666;
161 | font-size: 0.8em;
162 | padding: 0 8px;
163 | text-align: center;
164 | }
165 |
166 | #asf-logo {
167 | width: 180px;
168 | padding-top: 20px;
169 | }
170 |
171 | #events li {
172 | padding-top: 0.2em;
173 | }
174 |
175 | /* definition lists */
176 | dd {}
177 | dl {}
178 | dt {
179 | display: inline;
180 | float: left;
181 | }
182 |
183 | /* tables */
184 | thead tr, thead th,
185 | tbody tr, tbody td {
186 | margin: 0;
187 | outline: 0 none;
188 | }
189 | thead th {
190 | background: none repeat scroll 0 0 #BBBBBB;
191 | border-bottom: 2px solid #888888;
192 | padding: 0.4em 1em 0.2em;
193 | }
194 | tbody td {
195 | background: none repeat scroll 0 0 #EEEEEE;
196 | border-bottom: 1px solid #BBBBBB;
197 | border-top: 1px solid #BBBBBB;
198 | }
199 | th, td {
200 | padding: 0.2em 1em;
201 | text-align: left;
202 | }
203 |
--------------------------------------------------------------------------------
/Jenkinsfile:
--------------------------------------------------------------------------------
1 | #!groovy
2 | /*
3 | * Licensed to the Apache Software Foundation (ASF) under one or more
4 | * contributor license agreements. See the NOTICE file distributed with
5 | * this work for additional information regarding copyright ownership.
6 | * The ASF licenses this file to You under the Apache License, Version 2.0
7 | * (the "License"); you may not use this file except in compliance with
8 | * the License. You may obtain a copy of the License at
9 | *
10 | * https://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | pipeline {
20 | agent {
21 | // https://cwiki.apache.org/confluence/display/INFRA/ci-builds.apache.org
22 | label 'git-websites'
23 | }
24 |
25 | environment {
26 | DEPLOY_BRANCH = "${env.BRANCH_NAME == "main" ? "asf-site" : "${env.BRANCH_NAME}-staging"}"
27 | HUGO_VERSION = '0.111.3'
28 | HUGO_HASH = 'b382aacb522a470455ab771d0e8296e42488d3ea4e61fe49c11c32ec7fb6ee8b'
29 | PAGEFIND_VERSION = '1.0.3'
30 | PAGEFIND_HASH = 'e84ec7e8cb424022aa70ca14e6735c67c9728596753321dec782a902c3bfe6f0'
31 | }
32 |
33 | stages {
34 | stage('Prepare') {
35 | steps {
36 | script {
37 | // Capture last commit hash for final commit message
38 | env.LAST_SHA = sh(script:'git log -n 1 --pretty=format:\'%H\'', returnStdout: true).trim()
39 | env.HUGO_PATH = sh(script:'which hugo', returnStdout: true).trim()
40 | sh "echo Hugo path: '${env.HUGO_PATH}'"
41 | // Get current Hugo version (looks like hugo v0.111.3-5d4eb5154e1fed125ca8e9b5a0315c4180dab192+extended linux/amd64 ...)
42 | // Use the location found above to ensure same hugo can be used later
43 | env.HUGO_VERSION_CURRENT = sh(script:'${HUGO_PATH} version | cut -f 2 -d" "|cut -d- -f 1|sed -e "s!^v!!"', returnStdout: true).trim()
44 | sh "echo Hugo current: '${env.HUGO_VERSION_CURRENT}'"
45 | sh "echo Hugo target: '${HUGO_VERSION}'"
46 | // create the dir in case it is needed (simplifies tidyup)
47 | env.HUGO_DIR = sh(script:'mktemp -d', returnStdout: true).trim()
48 | }
49 | }
50 | }
51 | stage("Install Hugo") {
52 | when {
53 | expression { env.HUGO_VERSION_CURRENT != HUGO_VERSION }
54 | }
55 | steps {
56 | script {
57 | // Download Hugo
58 | sh "mkdir -p ${env.HUGO_DIR}/bin"
59 | sh "wget --no-verbose -O ${env.HUGO_DIR}/hugo.tar.gz https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_Linux-64bit.tar.gz"
60 | // Verify the checksum
61 | def hugo_hash = sha256 file: "${env.HUGO_DIR}/hugo.tar.gz"
62 | assert hugo_hash == "${HUGO_HASH}"
63 | // Unpack Hugo
64 | sh "tar -C ${env.HUGO_DIR}/bin -xkf ${env.HUGO_DIR}/hugo.tar.gz"
65 | env.HUGO_PATH = "${env.HUGO_DIR}/bin/hugo"
66 | }
67 | }
68 | }
69 | stage("Install Pagefind") {
70 | steps {
71 | script {
72 | // Download Pagefind
73 | env.PAGEFIND_DIR = sh(script:'mktemp -d', returnStdout: true).trim()
74 | sh "mkdir -p ${env.PAGEFIND_DIR}/bin"
75 | sh "wget --no-verbose -O ${env.PAGEFIND_DIR}/pagefind.tar.gz https://github.com/CloudCannon/pagefind/releases/download/v${PAGEFIND_VERSION}/pagefind-v${PAGEFIND_VERSION}-x86_64-unknown-linux-musl.tar.gz"
76 | // Verify the checksum
77 | def pagefind_hash = sha256 file: "${env.PAGEFIND_DIR}/pagefind.tar.gz"
78 | assert pagefind_hash == "${PAGEFIND_HASH}"
79 | // Unpack Pagefind
80 | sh "tar -C ${env.PAGEFIND_DIR}/bin -xkf ${env.PAGEFIND_DIR}/pagefind.tar.gz"
81 |
82 | }
83 | }
84 | }
85 | stage("Setup directory") {
86 | steps {
87 | script {
88 | // Setup directory structure for generated content
89 | env.TMP_DIR = sh(script:'mktemp -d', returnStdout: true).trim()
90 | env.OUT_DIR = "${env.TMP_DIR}/content"
91 | sh "mkdir -p ${env.OUT_DIR}"
92 |
93 | }
94 | }
95 | }
96 | stage('Build') {
97 | steps {
98 | script {
99 | sh "${HUGO_PATH} --destination ${env.OUT_DIR} --cacheDir ${env.HUGO_DIR}"
100 | sh "${PAGEFIND_DIR}/bin/pagefind --site ${env.OUT_DIR} --output-subdir _pagefind"
101 | sh "rm -f .hugo_build.lock"
102 | }
103 | }
104 | }
105 | // https://www.jenkins.io/doc/book/pipeline/syntax/#built-in-conditions
106 | // branch uses Ant-style patterns by default:
107 | // https://ant.apache.org/manual/dirtasks.html#patterns
108 | // Exclude branches ending in '-staging'
109 | // Also try to prevent deploy of top-level branches apart from main
110 | stage('Deploy') {
111 | when {
112 | not {
113 | branch '**/*-staging'
114 | }
115 | anyOf {
116 | branch 'main'
117 | not {
118 | branch '*'
119 | }
120 | }
121 | }
122 |
123 | steps {
124 | script {
125 | // Checkout branch with generated content, creating it if necessary
126 | // We only want the generated content + .asf.yaml
127 | sh """
128 | if git checkout ${DEPLOY_BRANCH}
129 | then
130 | git pull origin ${DEPLOY_BRANCH}
131 | else
132 | echo "branch ${DEPLOY_BRANCH} is new; create basic site"
133 | git checkout --orphan ${DEPLOY_BRANCH} -f
134 | git rm -rf .
135 | # assume we have an asf.yaml file
136 | git checkout origin/${BRANCH_NAME} -- .asf.yaml
137 | git add .asf.yaml -f
138 | fi
139 | """
140 |
141 | // Remove the content of the target branch and replace it with the content of the temp folder
142 | sh """
143 | rm -rf ${WORKSPACE}/content
144 | git rm -r --ignore-unmatch --cached content/*
145 | mkdir -p ${WORKSPACE}/content
146 | cp -rT ${env.TMP_DIR}/* ${WORKSPACE}/content
147 | """
148 |
149 | // Commit the changes to the target branch
150 | env.COMMIT_MESSAGE1 = "Updated ${DEPLOY_BRANCH} from ${BRANCH_NAME} at ${env.LAST_SHA}"
151 | env.COMMIT_MESSAGE2 = "Built from ${BUILD_URL}"
152 | sh """
153 | git add -A
154 | git commit -m "${env.COMMIT_MESSAGE1}" -m "${env.COMMIT_MESSAGE2}" | true
155 | """
156 |
157 | // Push the generated content for deployment
158 | sh "git push -u origin ${DEPLOY_BRANCH}"
159 | }
160 | }
161 | }
162 | }
163 |
164 | post {
165 | always {
166 | script {
167 | sh """
168 | rm -rf ${env.HUGO_DIR}
169 | rm -rf ${env.PAGEFIND_DIR}
170 | rm -rf ${env.TMP_DIR}
171 | """
172 | }
173 | deleteDir() /* clean up our workspace */
174 | }
175 |
176 | // If the build failed, send an email to the list.
177 | failure {
178 | script {
179 | if (env.BRANCH_NAME == 'main') {
180 | emailext(
181 | to: "dev@community.apache.org",
182 | recipientProviders: [[$class: 'DevelopersRecipientProvider']],
183 | from: "Jenkins ",
184 | subject: "[website] Jenkins job ${env.JOB_NAME}#${env.BUILD_NUMBER} failed",
185 | body: """
186 | There is a build failure in ${env.JOB_NAME}.
187 |
188 | Build: ${env.BUILD_URL}
189 | """
190 | )
191 | }
192 | }
193 | }
194 |
195 | // Send an email, if the last build was not successful and this one is.
196 | fixed {
197 | script {
198 | if (env.BRANCH_NAME == 'main') {
199 | emailext(
200 | to: "dev@community.apache.org",
201 | recipientProviders: [[$class: 'DevelopersRecipientProvider']],
202 | from: 'Jenkins ',
203 | subject: "[events-website] Jenkins job ${env.JOB_NAME}#${env.BUILD_NUMBER} back to normal",
204 | body: """
205 | The build for ${env.JOB_NAME} completed successfully and is back to normal.
206 |
207 | Build: ${env.BUILD_URL}
208 | """
209 | )
210 | }
211 | }
212 | }
213 | }
214 | }
215 |
--------------------------------------------------------------------------------
/static/js/calendar-DO-NOT-EDIT.json:
--------------------------------------------------------------------------------
1 | {
2 | "kind": "calendar#events",
3 | "etag": "\"p32nojhuhof2p20o\"",
4 | "summary": "Apache Conferences & Events",
5 | "description": "",
6 | "updated": "2025-12-17T21:07:09.109Z",
7 | "timeZone": "America/Los_Angeles",
8 | "accessRole": "reader",
9 | "defaultReminders": [],
10 | "items": [
11 | {
12 | "kind": "calendar#event",
13 | "etag": "\"3507046785115358\"",
14 | "id": "7db05df3s8c3hi96n4h3gung6j_20260711T080000Z",
15 | "status": "confirmed",
16 | "htmlLink": "https://www.google.com/calendar/event?eid=N2RiMDVkZjNzOGMzaGk5Nm40aDNndW5nNmpfMjAyNjA3MTFUMDgwMDAwWiBuZXJzZWlnb3Nwc2VzMDY4amQ1N2JrNWFyOEBn",
17 | "created": "2025-07-26T09:49:52.000Z",
18 | "updated": "2025-07-26T09:49:52.557Z",
19 | "summary": "Flink Forward 2026",
20 | "location": "Shenzhen, Guangdong Province, China",
21 | "creator": {
22 | "email": "markt@gsuite.cloud.apache.org"
23 | },
24 | "organizer": {
25 | "email": "nerseigospses068jd57bk5ar8@group.calendar.google.com",
26 | "displayName": "Apache Conferences & Events",
27 | "self": true
28 | },
29 | "start": {
30 | "dateTime": "2026-07-11T01:00:00-07:00",
31 | "timeZone": "Europe/London"
32 | },
33 | "end": {
34 | "dateTime": "2026-07-11T09:00:00-07:00",
35 | "timeZone": "Europe/London"
36 | },
37 | "recurringEventId": "7db05df3s8c3hi96n4h3gung6j",
38 | "originalStartTime": {
39 | "dateTime": "2026-07-11T01:00:00-07:00",
40 | "timeZone": "Europe/London"
41 | },
42 | "iCalUID": "7db05df3s8c3hi96n4h3gung6j@google.com",
43 | "sequence": 0,
44 | "eventType": "default"
45 | },
46 | {
47 | "kind": "calendar#event",
48 | "etag": "\"3507046785115358\"",
49 | "id": "7db05df3s8c3hi96n4h3gung6j_20260712T080000Z",
50 | "status": "confirmed",
51 | "htmlLink": "https://www.google.com/calendar/event?eid=N2RiMDVkZjNzOGMzaGk5Nm40aDNndW5nNmpfMjAyNjA3MTJUMDgwMDAwWiBuZXJzZWlnb3Nwc2VzMDY4amQ1N2JrNWFyOEBn",
52 | "created": "2025-07-26T09:49:52.000Z",
53 | "updated": "2025-07-26T09:49:52.557Z",
54 | "summary": "Flink Forward 2026",
55 | "location": "Shenzhen, Guangdong Province, China",
56 | "creator": {
57 | "email": "markt@gsuite.cloud.apache.org"
58 | },
59 | "organizer": {
60 | "email": "nerseigospses068jd57bk5ar8@group.calendar.google.com",
61 | "displayName": "Apache Conferences & Events",
62 | "self": true
63 | },
64 | "start": {
65 | "dateTime": "2026-07-12T01:00:00-07:00",
66 | "timeZone": "Europe/London"
67 | },
68 | "end": {
69 | "dateTime": "2026-07-12T09:00:00-07:00",
70 | "timeZone": "Europe/London"
71 | },
72 | "recurringEventId": "7db05df3s8c3hi96n4h3gung6j",
73 | "originalStartTime": {
74 | "dateTime": "2026-07-12T01:00:00-07:00",
75 | "timeZone": "Europe/London"
76 | },
77 | "iCalUID": "7db05df3s8c3hi96n4h3gung6j@google.com",
78 | "sequence": 0,
79 | "eventType": "default"
80 | },
81 | {
82 | "kind": "calendar#event",
83 | "etag": "\"3530629775611902\"",
84 | "id": "5uo3gjkgdd4pq15sbncplobvmr_20260831T140000Z",
85 | "status": "confirmed",
86 | "htmlLink": "https://www.google.com/calendar/event?eid=NXVvM2dqa2dkZDRwcTE1c2JuY3Bsb2J2bXJfMjAyNjA4MzFUMTQwMDAwWiBuZXJzZWlnb3Nwc2VzMDY4amQ1N2JrNWFyOEBn",
87 | "created": "2025-12-09T21:14:47.000Z",
88 | "updated": "2025-12-09T21:14:47.805Z",
89 | "summary": "Airflow Summit",
90 | "location": "Austin, TX, USA",
91 | "creator": {
92 | "email": "markt@gsuite.cloud.apache.org"
93 | },
94 | "organizer": {
95 | "email": "nerseigospses068jd57bk5ar8@group.calendar.google.com",
96 | "displayName": "Apache Conferences & Events",
97 | "self": true
98 | },
99 | "start": {
100 | "dateTime": "2026-08-31T07:00:00-07:00",
101 | "timeZone": "America/North_Dakota/New_Salem"
102 | },
103 | "end": {
104 | "dateTime": "2026-08-31T16:00:00-07:00",
105 | "timeZone": "America/North_Dakota/New_Salem"
106 | },
107 | "recurringEventId": "5uo3gjkgdd4pq15sbncplobvmr",
108 | "originalStartTime": {
109 | "dateTime": "2026-08-31T07:00:00-07:00",
110 | "timeZone": "America/North_Dakota/New_Salem"
111 | },
112 | "iCalUID": "5uo3gjkgdd4pq15sbncplobvmr@google.com",
113 | "sequence": 0,
114 | "eventType": "default"
115 | },
116 | {
117 | "kind": "calendar#event",
118 | "etag": "\"3530629775611902\"",
119 | "id": "5uo3gjkgdd4pq15sbncplobvmr_20260901T140000Z",
120 | "status": "confirmed",
121 | "htmlLink": "https://www.google.com/calendar/event?eid=NXVvM2dqa2dkZDRwcTE1c2JuY3Bsb2J2bXJfMjAyNjA5MDFUMTQwMDAwWiBuZXJzZWlnb3Nwc2VzMDY4amQ1N2JrNWFyOEBn",
122 | "created": "2025-12-09T21:14:47.000Z",
123 | "updated": "2025-12-09T21:14:47.805Z",
124 | "summary": "Airflow Summit",
125 | "location": "Austin, TX, USA",
126 | "creator": {
127 | "email": "markt@gsuite.cloud.apache.org"
128 | },
129 | "organizer": {
130 | "email": "nerseigospses068jd57bk5ar8@group.calendar.google.com",
131 | "displayName": "Apache Conferences & Events",
132 | "self": true
133 | },
134 | "start": {
135 | "dateTime": "2026-09-01T07:00:00-07:00",
136 | "timeZone": "America/North_Dakota/New_Salem"
137 | },
138 | "end": {
139 | "dateTime": "2026-09-01T16:00:00-07:00",
140 | "timeZone": "America/North_Dakota/New_Salem"
141 | },
142 | "recurringEventId": "5uo3gjkgdd4pq15sbncplobvmr",
143 | "originalStartTime": {
144 | "dateTime": "2026-09-01T07:00:00-07:00",
145 | "timeZone": "America/North_Dakota/New_Salem"
146 | },
147 | "iCalUID": "5uo3gjkgdd4pq15sbncplobvmr@google.com",
148 | "sequence": 0,
149 | "eventType": "default"
150 | },
151 | {
152 | "kind": "calendar#event",
153 | "etag": "\"3530629775611902\"",
154 | "id": "5uo3gjkgdd4pq15sbncplobvmr_20260902T140000Z",
155 | "status": "confirmed",
156 | "htmlLink": "https://www.google.com/calendar/event?eid=NXVvM2dqa2dkZDRwcTE1c2JuY3Bsb2J2bXJfMjAyNjA5MDJUMTQwMDAwWiBuZXJzZWlnb3Nwc2VzMDY4amQ1N2JrNWFyOEBn",
157 | "created": "2025-12-09T21:14:47.000Z",
158 | "updated": "2025-12-09T21:14:47.805Z",
159 | "summary": "Airflow Summit",
160 | "location": "Austin, TX, USA",
161 | "creator": {
162 | "email": "markt@gsuite.cloud.apache.org"
163 | },
164 | "organizer": {
165 | "email": "nerseigospses068jd57bk5ar8@group.calendar.google.com",
166 | "displayName": "Apache Conferences & Events",
167 | "self": true
168 | },
169 | "start": {
170 | "dateTime": "2026-09-02T07:00:00-07:00",
171 | "timeZone": "America/North_Dakota/New_Salem"
172 | },
173 | "end": {
174 | "dateTime": "2026-09-02T16:00:00-07:00",
175 | "timeZone": "America/North_Dakota/New_Salem"
176 | },
177 | "recurringEventId": "5uo3gjkgdd4pq15sbncplobvmr",
178 | "originalStartTime": {
179 | "dateTime": "2026-09-02T07:00:00-07:00",
180 | "timeZone": "America/North_Dakota/New_Salem"
181 | },
182 | "iCalUID": "5uo3gjkgdd4pq15sbncplobvmr@google.com",
183 | "sequence": 0,
184 | "eventType": "default"
185 | },
186 | {
187 | "kind": "calendar#event",
188 | "etag": "\"3532011258218846\"",
189 | "id": "04q3qjccsf5nqqpgtao2qq17sg_20261118T090000Z",
190 | "status": "confirmed",
191 | "htmlLink": "https://www.google.com/calendar/event?eid=MDRxM3FqY2NzZjVucXFwZ3RhbzJxcTE3c2dfMjAyNjExMThUMDkwMDAwWiBuZXJzZWlnb3Nwc2VzMDY4amQ1N2JrNWFyOEBn",
192 | "created": "2025-12-17T21:06:19.000Z",
193 | "updated": "2025-12-17T21:07:09.109Z",
194 | "summary": "CloudStack Collaboration Conference",
195 | "location": "Edinburgh, UK",
196 | "creator": {
197 | "email": "markt@gsuite.cloud.apache.org"
198 | },
199 | "organizer": {
200 | "email": "nerseigospses068jd57bk5ar8@group.calendar.google.com",
201 | "displayName": "Apache Conferences & Events",
202 | "self": true
203 | },
204 | "start": {
205 | "dateTime": "2026-11-18T01:00:00-08:00",
206 | "timeZone": "Europe/London"
207 | },
208 | "end": {
209 | "dateTime": "2026-11-18T09:00:00-08:00",
210 | "timeZone": "Europe/London"
211 | },
212 | "recurringEventId": "04q3qjccsf5nqqpgtao2qq17sg",
213 | "originalStartTime": {
214 | "dateTime": "2026-11-18T01:00:00-08:00",
215 | "timeZone": "Europe/London"
216 | },
217 | "iCalUID": "04q3qjccsf5nqqpgtao2qq17sg@google.com",
218 | "sequence": 1,
219 | "eventType": "default"
220 | },
221 | {
222 | "kind": "calendar#event",
223 | "etag": "\"3532011258218846\"",
224 | "id": "04q3qjccsf5nqqpgtao2qq17sg_20261119T090000Z",
225 | "status": "confirmed",
226 | "htmlLink": "https://www.google.com/calendar/event?eid=MDRxM3FqY2NzZjVucXFwZ3RhbzJxcTE3c2dfMjAyNjExMTlUMDkwMDAwWiBuZXJzZWlnb3Nwc2VzMDY4amQ1N2JrNWFyOEBn",
227 | "created": "2025-12-17T21:06:19.000Z",
228 | "updated": "2025-12-17T21:07:09.109Z",
229 | "summary": "CloudStack Collaboration Conference",
230 | "location": "Edinburgh, UK",
231 | "creator": {
232 | "email": "markt@gsuite.cloud.apache.org"
233 | },
234 | "organizer": {
235 | "email": "nerseigospses068jd57bk5ar8@group.calendar.google.com",
236 | "displayName": "Apache Conferences & Events",
237 | "self": true
238 | },
239 | "start": {
240 | "dateTime": "2026-11-19T01:00:00-08:00",
241 | "timeZone": "Europe/London"
242 | },
243 | "end": {
244 | "dateTime": "2026-11-19T09:00:00-08:00",
245 | "timeZone": "Europe/London"
246 | },
247 | "recurringEventId": "04q3qjccsf5nqqpgtao2qq17sg",
248 | "originalStartTime": {
249 | "dateTime": "2026-11-19T01:00:00-08:00",
250 | "timeZone": "Europe/London"
251 | },
252 | "iCalUID": "04q3qjccsf5nqqpgtao2qq17sg@google.com",
253 | "sequence": 1,
254 | "eventType": "default"
255 | },
256 | {
257 | "kind": "calendar#event",
258 | "etag": "\"3532011258218846\"",
259 | "id": "04q3qjccsf5nqqpgtao2qq17sg_20261120T090000Z",
260 | "status": "confirmed",
261 | "htmlLink": "https://www.google.com/calendar/event?eid=MDRxM3FqY2NzZjVucXFwZ3RhbzJxcTE3c2dfMjAyNjExMjBUMDkwMDAwWiBuZXJzZWlnb3Nwc2VzMDY4amQ1N2JrNWFyOEBn",
262 | "created": "2025-12-17T21:06:19.000Z",
263 | "updated": "2025-12-17T21:07:09.109Z",
264 | "summary": "CloudStack Collaboration Conference",
265 | "location": "Edinburgh, UK",
266 | "creator": {
267 | "email": "markt@gsuite.cloud.apache.org"
268 | },
269 | "organizer": {
270 | "email": "nerseigospses068jd57bk5ar8@group.calendar.google.com",
271 | "displayName": "Apache Conferences & Events",
272 | "self": true
273 | },
274 | "start": {
275 | "dateTime": "2026-11-20T01:00:00-08:00",
276 | "timeZone": "Europe/London"
277 | },
278 | "end": {
279 | "dateTime": "2026-11-20T09:00:00-08:00",
280 | "timeZone": "Europe/London"
281 | },
282 | "recurringEventId": "04q3qjccsf5nqqpgtao2qq17sg",
283 | "originalStartTime": {
284 | "dateTime": "2026-11-20T01:00:00-08:00",
285 | "timeZone": "Europe/London"
286 | },
287 | "iCalUID": "04q3qjccsf5nqqpgtao2qq17sg@google.com",
288 | "sequence": 1,
289 | "eventType": "default"
290 | }
291 | ]
292 | }
293 |
--------------------------------------------------------------------------------
/source/about/commcode/playbook.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ApacheCon playbook
3 | ---
4 |
5 | This playbook is focused at ApacheCon or Roadshow volunteers who are
6 | actively involved in planning and running Apache events. Please be sure
7 | to bring your questions to the planners@ mailing list!
8 |
9 | # What to do before, during, and after an Apache event
10 |
11 | This is a set of recommended actions that an event organizer may do
12 | before, during, and after ApacheCon.
13 |
14 | Many of the recommendations in here can, of course, be applied to any
15 | Apache event or Roadshow, including third-party events, or project events run by
16 | PMCs.
17 |
18 | If you do these things, you gain the benefit of promotion from the
19 | larger Apache community. Also, these are based on our experiences
20 | running ApacheCon.
21 |
22 | This is a work in progress - please feel free to make suggestions!
23 |
24 | ## Before You Start
25 |
26 | Review the Event Branding Policy and secure permission for any
27 | events not produced directly by the ASF or its contracted producer(s).
28 | If you are an Apache PMC running your own event, please review the
29 | policy to ensure you're presenting the best face for ASF brands.
30 |
31 | https://www.apache.org/foundation/marks/events
32 |
33 | ## Planning Topics To Cover
34 |
35 | * Venue requirements/considerations
36 | * Attempt to select venue and date prior to the previous event, so
37 | that it can be announced from stage a year in advance
38 | * BarCamp - having an extra shoulder day before/after the event, with space for group discussions
39 | * Hackathon - central space with power and network, and round tables
40 | for group collaboration
41 | * Wifi - reliable 200+ Mb/s. ApacheCon attendees expect fast wifi. Preferred info: 'apachecon'/'httpd1995'
42 | * Hard network drop in keynote room for streaming video. Hard
43 | network drop for reg desk.
44 | * Room for media training - consult with [ASF Marketing & Publicity](//www.apache.org/press/#contact)
45 | * Board room for monthly board meeting (if the conference falls [during board meeting](//www.apache.org/foundation/board/calendar)). Consult with
46 | secretary@apache.org
47 |
48 | * Communication
49 | * Notify members@, commiters@ and all dev@ and users@ lists of an
50 | upcoming event. **Note special procedures** for committers@ and dev/users@ addresses.
51 | * Notify all PMCs that there is space available for project summits - if they can provide curated content by deadline.
52 | Work from scarcity (ie, only 4 rooms available!) rather than
53 | making this appear to be a free-for-all that people can wander
54 | into later on.
55 |
56 | * Marketing Coordination
57 | - Coordinate with M&P to create, publish, and update event-specific promotions on ASF social media channels including Twitter, LinkedIn, and LinkedIn Showcase page (affiliated page).
58 |
59 | - Establish budget for paid digital ad campaign for Roadshows three months before date of event.
60 |
61 | - Coordinate with M&P to research spend options, negotiate rate, and secure media buy for digital advertising campaigns for Roadshows.
62 |
63 | - Coordinate with M&P/Central Services to create artwork for online promotions and digital ad campaigns.
64 |
65 | * CFP
66 | * Ensure the CFP system is working before announce
67 | * Blog post on blogs.apache.org
68 | * Notify dev@community.apache.org
69 | * Notify trademarks@apache.org (See above for event branding approval)
70 | * Notify committers@, members@, and all users@ mailing lists
71 | * Announce on announce@apachecon.com
72 | * Tweet on @apachecon
73 | * Schedule tweets for CFP deadlines, two months, one month, 2 weeks,
74 | 1 week, and last day before close
75 |
76 | * Talk selection
77 | * Assemble program committee and choose a program chair. Provide
78 | this to producer so they can add everyone's details to the CFP and send
79 | the PC all reviewing instructions.
80 | * Review talks within timeline set by producer. Provide producer with list of
81 | accepted, rejected, and waitlisted talks in a schedule format.
82 | * Come up with a list of desired keynotes. Invite those that you may
83 | know personally and circle producer in on anyone that confirms.
84 | * Prepare slide template to send to speakers with talk acceptance
85 | * Talk acceptance email should contain:
86 | * The title and abstract of their accepted presentation (speakers often submit more than one)
87 | * Registration discount code for speaker, and an **explicit** requirement that they register themselves
88 | * Reminder how they need to register for hotel room block
89 | * Suggested Tweet to encourage them to self-promote
90 | * Information about scheduling a Feathercast recording
91 | * Link to schedule
92 | * Link to Code of Conduct
93 | * Links to apachecon-discuss@apache.org, IRC channel, Twitter
94 | * Room setup details including screen resolution, what connector types available
95 | * Reminder to bring their own laptop
96 | * If audio or video recording is expected
97 | * Requirement that if they can't make it inform us clearly
98 | * Fallback email should contain
99 | * Definition of fallback, and explanation of how/when they might
100 | have their talk accepted
101 | * Registration discount code for fallbacks
102 |
103 | * Conference Schedule Announcement
104 | * Blog post on blogs.apache.org
105 | * Tweet schedule link to @apachecon
106 | * Announce to announce@apachecon.com
107 | * Announce on all users@ mailing list
108 | * Prepare suggested tweets for all sessions
109 | * Schedule tweets for all rate change dates, 1 and 2 weeks, and 1
110 | day out from each date.
111 | * Update https://wiki.apache.org/apachecon/SpeakerResources with
112 | speaker template, email addresses, dates, etc.
113 | * Notify committers@, members@, and all users@ mailing lists
114 |
115 | * Extra events to be scheduled
116 | * State Of The Feather - coordinate with operations@ and President/EVP
117 | * PGP Key signing
118 | * Time/place
119 | * Where to send keys
120 | * Need paper and a printer for the event
121 | * BarCamp - ensure space, signage, room available times, and BarCamp coordinator is ready
122 | * Is the board meeting during ApacheCon? If so, we need a room with
123 | a speaker phone for members to attend "in person". If not, ask
124 | Secretary to consider moving the board meeting so that it is during
125 | ApacheCon. Promote to membership.
126 |
127 | * In months before event
128 | * Etherpad: Who/what/where (many planning teams find etherpad or similar to be helpful), eg
129 | https://public.etherpad-mozilla.org/p/aceu-2016-people
130 | * Etherpad: Hackathon topics, eg
131 | https://public.etherpad-mozilla.org/p/aceu-2016-hackathon
132 | * Blog post on blogs.apache.org announcing the above
133 | * Tweet links to the etherpads
134 | * Mention these on apachecon-discuss@apache.org Also mention
135 | * IRC
136 | * Twitter
137 | * Schedule
138 | * Get the preferred twitter accounts of the sponsors, and thank them
139 | publicly for sponsoring (coordinate with producer/fundraising)
140 | * Twitter
141 | * Blog post on blogs.apache.org
142 | * Ask PMCs about upcoming or recent major releases that we can
143 | announce at the event. Keep press@apache.org in the loop on this,
144 | as well as our press contact at producer.
145 | * Update the wiki - https://wiki.apache.org/apachecon/FrontPage -
146 | every week
147 | * Notify committers@, members@, and all users@ mailing lists
148 | * As we get closer to the event, contact speakers every other week
149 | with updates, and reminders
150 | * Contact keynote speakers frequently to ensure that everything is
151 | planned, booked, and promoted correctly
152 | * Frequent updates to sponsors.
153 |
154 | * Educational outreach
155 | * identify local universities
156 | * Reach out to CS department
157 | * Make posters and offer a free ticket in exchange for printing,
158 | posting them up
159 | * User group outreach
160 | * Identify local usergroups/meetups
161 | * Offer reg code for these groups
162 | * Get local contact to attend meetups and promote the event
163 |
164 | ## During
165 |
166 | * Lots and lots of photos. Tweet them. Put them on Flickr, Google
167 | Images, and so on. Tag them #apache and #apachecon. Encourage the
168 | official photographer to use these tags as well, so that they show up
169 | in our photo feed. See also: https://www.flickr.com/groups/apachecon/
170 | * Man-on-the-street interviews with attendees, sponsors, about why
171 | they're there, and why people should attend the next event. See
172 | rbowen@apache.org or ask on apachecon-discuss@apache.org at least 3
173 | weeks in advance if you want to borrow digital recorders for this
174 | purpose.
175 | * At every plenary session:
176 | * Introduce yourself
177 | * Thank the sponsors (review sponsor prospectus for who gets named specifically)
178 | * Announce the hastags for the event, including #apache, #apachecon,
179 | and #acXXYY where XX is geo (na, eu, etc), and YY is date (eg 18)
180 | * Encourage people to take photos and post them to our ApacheCon Flickr group
181 | * Announce the evening events
182 | * Announce the *next* event after the keynote
183 | * Thank the sponsors of the ASF
184 | * Mention @TheASF and @apachecon Twitter accounts at every
185 | opportunity.
186 | * If this is not ApacheCon (ie, some other project event) mention
187 | that Apache Foo is part of the larger Apache Software Foundation
188 | community, and mention ApacheCon.
189 | * Announce next year's event(s)
190 |
191 |
192 | ## After
193 |
194 | * Tweet photos from the event, mentioning the *next* event. "Did you miss Seville? See you in Miami!"
195 | * Tweet thanks to the sponsors
196 | * Tweet any videos, recordings that we have
197 | * Archive event information from https://wiki.apache.org/apachecon/FrontPage to event-specific page eg https://wiki.apache.org/apachecon/ACNA2016
198 | * Update the https://apachecon.com and https://archive.apachecon.com pages when needed
199 |
200 | ## Websites
201 |
202 | There are several different pages/directories that store event-related
203 | information, both about ApacheCon and other ASF related events.
204 |
205 | Main ApacheCon website, including separate archive.apachecon directories:
206 | https://apachecon.com/
207 | https://svn.apache.org/repos/infra/apachecon/www.apachecon.com
208 | Flat HTML, published instantly upon checkin
209 |
210 | General event info page:
211 | https://events.apache.org/
212 | https://svn.apache.org/repos/asf/concom/site/trunk/content/
213 | Managed by the Apache CMS, publishing is a separate step
214 |
215 | ComDev Event Calendar listing:
216 | https://community.apache.org/calendars/
217 | https://community.apache.org/about/#about-this-website
218 |
219 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | Apache License
3 | Version 2.0, January 2004
4 | http://www.apache.org/licenses/
5 |
6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7 |
8 | 1. Definitions.
9 |
10 | "License" shall mean the terms and conditions for use, reproduction,
11 | and distribution as defined by Sections 1 through 9 of this document.
12 |
13 | "Licensor" shall mean the copyright owner or entity authorized by
14 | the copyright owner that is granting the License.
15 |
16 | "Legal Entity" shall mean the union of the acting entity and all
17 | other entities that control, are controlled by, or are under common
18 | control with that entity. For the purposes of this definition,
19 | "control" means (i) the power, direct or indirect, to cause the
20 | direction or management of such entity, whether by contract or
21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 | outstanding shares, or (iii) beneficial ownership of such entity.
23 |
24 | "You" (or "Your") shall mean an individual or Legal Entity
25 | exercising permissions granted by this License.
26 |
27 | "Source" form shall mean the preferred form for making modifications,
28 | including but not limited to software source code, documentation
29 | source, and configuration files.
30 |
31 | "Object" form shall mean any form resulting from mechanical
32 | transformation or translation of a Source form, including but
33 | not limited to compiled object code, generated documentation,
34 | and conversions to other media types.
35 |
36 | "Work" shall mean the work of authorship, whether in Source or
37 | Object form, made available under the License, as indicated by a
38 | copyright notice that is included in or attached to the work
39 | (an example is provided in the Appendix below).
40 |
41 | "Derivative Works" shall mean any work, whether in Source or Object
42 | form, that is based on (or derived from) the Work and for which the
43 | editorial revisions, annotations, elaborations, or other modifications
44 | represent, as a whole, an original work of authorship. For the purposes
45 | of this License, Derivative Works shall not include works that remain
46 | separable from, or merely link (or bind by name) to the interfaces of,
47 | the Work and Derivative Works thereof.
48 |
49 | "Contribution" shall mean any work of authorship, including
50 | the original version of the Work and any modifications or additions
51 | to that Work or Derivative Works thereof, that is intentionally
52 | submitted to Licensor for inclusion in the Work by the copyright owner
53 | or by an individual or Legal Entity authorized to submit on behalf of
54 | the copyright owner. For the purposes of this definition, "submitted"
55 | means any form of electronic, verbal, or written communication sent
56 | to the Licensor or its representatives, including but not limited to
57 | communication on electronic mailing lists, source code control systems,
58 | and issue tracking systems that are managed by, or on behalf of, the
59 | Licensor for the purpose of discussing and improving the Work, but
60 | excluding communication that is conspicuously marked or otherwise
61 | designated in writing by the copyright owner as "Not a Contribution."
62 |
63 | "Contributor" shall mean Licensor and any individual or Legal Entity
64 | on behalf of whom a Contribution has been received by Licensor and
65 | subsequently incorporated within the Work.
66 |
67 | 2. Grant of Copyright License. Subject to the terms and conditions of
68 | this License, each Contributor hereby grants to You a perpetual,
69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 | copyright license to reproduce, prepare Derivative Works of,
71 | publicly display, publicly perform, sublicense, and distribute the
72 | Work and such Derivative Works in Source or Object form.
73 |
74 | 3. Grant of Patent License. Subject to the terms and conditions of
75 | this License, each Contributor hereby grants to You a perpetual,
76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 | (except as stated in this section) patent license to make, have made,
78 | use, offer to sell, sell, import, and otherwise transfer the Work,
79 | where such license applies only to those patent claims licensable
80 | by such Contributor that are necessarily infringed by their
81 | Contribution(s) alone or by combination of their Contribution(s)
82 | with the Work to which such Contribution(s) was submitted. If You
83 | institute patent litigation against any entity (including a
84 | cross-claim or counterclaim in a lawsuit) alleging that the Work
85 | or a Contribution incorporated within the Work constitutes direct
86 | or contributory patent infringement, then any patent licenses
87 | granted to You under this License for that Work shall terminate
88 | as of the date such litigation is filed.
89 |
90 | 4. Redistribution. You may reproduce and distribute copies of the
91 | Work or Derivative Works thereof in any medium, with or without
92 | modifications, and in Source or Object form, provided that You
93 | meet the following conditions:
94 |
95 | (a) You must give any other recipients of the Work or
96 | Derivative Works a copy of this License; and
97 |
98 | (b) You must cause any modified files to carry prominent notices
99 | stating that You changed the files; and
100 |
101 | (c) You must retain, in the Source form of any Derivative Works
102 | that You distribute, all copyright, patent, trademark, and
103 | attribution notices from the Source form of the Work,
104 | excluding those notices that do not pertain to any part of
105 | the Derivative Works; and
106 |
107 | (d) If the Work includes a "NOTICE" text file as part of its
108 | distribution, then any Derivative Works that You distribute must
109 | include a readable copy of the attribution notices contained
110 | within such NOTICE file, excluding those notices that do not
111 | pertain to any part of the Derivative Works, in at least one
112 | of the following places: within a NOTICE text file distributed
113 | as part of the Derivative Works; within the Source form or
114 | documentation, if provided along with the Derivative Works; or,
115 | within a display generated by the Derivative Works, if and
116 | wherever such third-party notices normally appear. The contents
117 | of the NOTICE file are for informational purposes only and
118 | do not modify the License. You may add Your own attribution
119 | notices within Derivative Works that You distribute, alongside
120 | or as an addendum to the NOTICE text from the Work, provided
121 | that such additional attribution notices cannot be construed
122 | as modifying the License.
123 |
124 | You may add Your own copyright statement to Your modifications and
125 | may provide additional or different license terms and conditions
126 | for use, reproduction, or distribution of Your modifications, or
127 | for any such Derivative Works as a whole, provided Your use,
128 | reproduction, and distribution of the Work otherwise complies with
129 | the conditions stated in this License.
130 |
131 | 5. Submission of Contributions. Unless You explicitly state otherwise,
132 | any Contribution intentionally submitted for inclusion in the Work
133 | by You to the Licensor shall be under the terms and conditions of
134 | this License, without any additional terms or conditions.
135 | Notwithstanding the above, nothing herein shall supersede or modify
136 | the terms of any separate license agreement you may have executed
137 | with Licensor regarding such Contributions.
138 |
139 | 6. Trademarks. This License does not grant permission to use the trade
140 | names, trademarks, service marks, or product names of the Licensor,
141 | except as required for reasonable and customary use in describing the
142 | origin of the Work and reproducing the content of the NOTICE file.
143 |
144 | 7. Disclaimer of Warranty. Unless required by applicable law or
145 | agreed to in writing, Licensor provides the Work (and each
146 | Contributor provides its Contributions) on an "AS IS" BASIS,
147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 | implied, including, without limitation, any warranties or conditions
149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 | PARTICULAR PURPOSE. You are solely responsible for determining the
151 | appropriateness of using or redistributing the Work and assume any
152 | risks associated with Your exercise of permissions under this License.
153 |
154 | 8. Limitation of Liability. In no event and under no legal theory,
155 | whether in tort (including negligence), contract, or otherwise,
156 | unless required by applicable law (such as deliberate and grossly
157 | negligent acts) or agreed to in writing, shall any Contributor be
158 | liable to You for damages, including any direct, indirect, special,
159 | incidental, or consequential damages of any character arising as a
160 | result of this License or out of the use or inability to use the
161 | Work (including but not limited to damages for loss of goodwill,
162 | work stoppage, computer failure or malfunction, or any and all
163 | other commercial damages or losses), even if such Contributor
164 | has been advised of the possibility of such damages.
165 |
166 | 9. Accepting Warranty or Additional Liability. While redistributing
167 | the Work or Derivative Works thereof, You may choose to offer,
168 | and charge a fee for, acceptance of support, warranty, indemnity,
169 | or other liability obligations and/or rights consistent with this
170 | License. However, in accepting such obligations, You may act only
171 | on Your own behalf and on Your sole responsibility, not on behalf
172 | of any other Contributor, and only if You agree to indemnify,
173 | defend, and hold each Contributor harmless for any liability
174 | incurred by, or claims asserted against, such Contributor by reason
175 | of your accepting any such warranty or additional liability.
176 |
177 | END OF TERMS AND CONDITIONS
178 |
179 | APPENDIX: How to apply the Apache License to your work.
180 |
181 | To apply the Apache License to your work, attach the following
182 | boilerplate notice, with the fields enclosed by brackets "[]"
183 | replaced with your own identifying information. (Don't include
184 | the brackets!) The text should be enclosed in the appropriate
185 | comment syntax for the file format. We also recommend that a
186 | file or class name and description of purpose be included on the
187 | same "printed page" as the copyright notice for easier
188 | identification within third-party archives.
189 |
190 | Copyright [yyyy] [name of copyright owner]
191 |
192 | Licensed under the Apache License, Version 2.0 (the "License");
193 | you may not use this file except in compliance with the License.
194 | You may obtain a copy of the License at
195 |
196 | http://www.apache.org/licenses/LICENSE-2.0
197 |
198 | Unless required by applicable law or agreed to in writing, software
199 | distributed under the License is distributed on an "AS IS" BASIS,
200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201 | See the License for the specific language governing permissions and
202 | limitations under the License.
203 |
--------------------------------------------------------------------------------
/static/js/jquery.min.js:
--------------------------------------------------------------------------------
1 | /*! jQuery v3.6.4 | (c) OpenJS Foundation and other contributors | jquery.org/license */
2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.4",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssHas=ce(function(){try{return C.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssHas||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"