diff --git a/conferences/2016/ux.json b/conferences/2016/ux.json index 83e7b59d6..1756b99d0 100644 --- a/conferences/2016/ux.json +++ b/conferences/2016/ux.json @@ -151,14 +151,6 @@ "city": "Minneapolis, MN", "country": "U.S.A." }, - { - "name": "Enterprise UX", - "url": "http://promo.rosenfeldmedia.com/euxsignup2017", - "startDate": "2016-06-07", - "endDate": "2016-06-09", - "city": "San Francisco, CA", - "country": "U.S.A." - }, { "name": "UX Scotland", "url": "http://uxscotland.net/2016", @@ -250,7 +242,7 @@ }, { "name": "The Conference", - "url": "http://2017.theconference.se", + "url": "http://theconference.se", "startDate": "2016-09-04", "endDate": "2016-09-05", "city": "Malmö", @@ -258,7 +250,7 @@ }, { "name": "MobileHCI", - "url": "http://mobilehci.acm.org/2017", + "url": "http://mobilehci.acm.org", "startDate": "2016-09-04", "endDate": "2016-09-07", "city": "Vienna", @@ -266,7 +258,7 @@ }, { "name": "MOBX (Mobile UX)", - "url": "https://2017.mobxcon.com", + "url": "https://mobxcon.com", "startDate": "2016-09-07", "endDate": "2016-09-08", "city": "Berlin", @@ -320,14 +312,6 @@ "city": "Minneapolis, MN", "country": "U.S.A." }, - { - "name": "Interact", - "url": "https://www.interact2017.org", - "startDate": "2016-09-25", - "endDate": "2016-09-29", - "city": "Mumbai", - "country": "India" - }, { "name": "Design Matters", "url": "https://designmatters.io", @@ -352,14 +336,6 @@ "city": "Melbourne", "country": "Australia" }, - { - "name": "SmashingConf", - "url": "https://smashingconf.com/barcelona-2017", - "startDate": "2016-10-17", - "endDate": "2016-10-18", - "city": "Barcelona", - "country": "Spain" - }, { "name": "GIANT Conference", "url": "http://www.giantconf.com/details", @@ -370,7 +346,7 @@ }, { "name": "Design Thinkers", - "url": "https://www.designthinkers.com/News/2017/DesignThinkers-Montreal-2017.aspx", + "url": "https://www.designthinkers.com", "startDate": "2016-10-19", "endDate": "2016-10-20", "city": "Montreal", @@ -418,7 +394,7 @@ }, { "name": "LavaCon", - "url": "https://lavacon.org/2017/portland", + "url": "https://lavacon.org", "startDate": "2016-11-05", "endDate": "2016-11-08", "city": "Portland, OR", @@ -426,7 +402,7 @@ }, { "name": "Taxonomy boot camp", - "url": "http://www.taxonomybootcamp.com/2017/default.aspx", + "url": "http://www.taxonomybootcamp.com", "startDate": "2016-11-06", "endDate": "2016-11-07", "city": "Washington, DC", diff --git a/conferences/2017/ruby.json b/conferences/2017/ruby.json index dc50eb16e..3b7498251 100644 --- a/conferences/2017/ruby.json +++ b/conferences/2017/ruby.json @@ -250,15 +250,6 @@ "country": "U.S.A.", "twitter": "@keeprubyweird" }, - { - "name": "RubyWorld Conference", - "url": "http://2016.rubyworld-conf.org/en/news/2017/01/rwc2017", - "startDate": "2017-11-01", - "endDate": "2017-11-02", - "city": "Matsue", - "country": "Japan", - "twitter": "@rubyworldconf" - }, { "name": "Kiwi Ruby", "url": "http://kiwi.ruby.nz", diff --git a/conferences/2018/ux.json b/conferences/2018/ux.json index 4b7502588..df7605e89 100644 --- a/conferences/2018/ux.json +++ b/conferences/2018/ux.json @@ -35,7 +35,7 @@ }, { "name": "The UX Conference", - "url": "https://theuxconf.com/feb2019/", + "url": "https://theuxconf.com", "startDate": "2018-02-20", "endDate": "2018-02-20", "city": "London", diff --git a/conferences/2019/devops.json b/conferences/2019/devops.json index 8c51bd213..91c298558 100644 --- a/conferences/2019/devops.json +++ b/conferences/2019/devops.json @@ -229,8 +229,6 @@ "endDate": "2019-05-15", "city": "Salt Lake City, UT", "country": "U.S.A.", - "cfpUrl": "https://www.papercall.io/slcdod2018", - "cfpEndDate": "2019-02-01", "twitter": "@devopsdaysslc" }, { diff --git a/conferences/2019/general.json b/conferences/2019/general.json index 36b506818..d88812c36 100644 --- a/conferences/2019/general.json +++ b/conferences/2019/general.json @@ -1330,7 +1330,6 @@ "endDate": "2019-07-12", "city": "Falmouth, Cornwall", "country": "U.K.", - "cfpUrl": "https://agileonthebeach.com/2018/11/call-for-submissions-agile-on-the-beach-2019/", "cfpEndDate": "2018-12-21", "twitter": "@Agileonthebeach" }, diff --git a/conferences/2019/networking.json b/conferences/2019/networking.json index e69f0180c..e51f02262 100644 --- a/conferences/2019/networking.json +++ b/conferences/2019/networking.json @@ -406,14 +406,5 @@ "city": "Copenhagen", "country": "Denmark", "twitter": "@gotocph" - }, - { - "name": "600Minutes Executive IT", - "url": "https://managementevents.com/events/2834/600minutes-executive-it/2020/norway", - "startDate": "2019-12-05", - "endDate": "2019-12-05", - "city": "Fornebu", - "country": "Norway", - "twitter": "@ManagementEv" } ] \ No newline at end of file diff --git a/conferences/2019/ux.json b/conferences/2019/ux.json index c16246447..5ed059d48 100644 --- a/conferences/2019/ux.json +++ b/conferences/2019/ux.json @@ -10,7 +10,7 @@ }, { "name": "UX Vietnam Festival", - "url": "https://www.uxvn.org/uxvn-festival-2018", + "url": "https://www.uxvn.org", "startDate": "2019-01-13", "endDate": "2019-01-14", "city": "Ho Chi Minh City", diff --git a/conferences/2021/android.json b/conferences/2021/android.json index c6a361496..725418331 100644 --- a/conferences/2021/android.json +++ b/conferences/2021/android.json @@ -8,7 +8,7 @@ }, { "name": "ADDC - App Design & Development", - "url": "https://addconf.com/2020", + "url": "https://addconf.com", "startDate": "2021-06-23", "endDate": "2021-06-24", "online": true, diff --git a/conferences/2021/data.json b/conferences/2021/data.json index 818e3822c..f1f667165 100644 --- a/conferences/2021/data.json +++ b/conferences/2021/data.json @@ -221,17 +221,6 @@ "offersSignLanguageOrCC": true, "twitter": "@InterConWorld" }, - { - "name": "Women Data Summit", - "url": "https://www.2020twenty.net/women-data-summit-2021", - "startDate": "2021-06-25", - "endDate": "2021-06-25", - "online": true, - "cocUrl": "https://www.2020twenty.net/women-data-summit-2021/code-of-conduct/", - "cfpUrl": "https://sessionize.com/women-data-summit-2021", - "cfpEndDate": "2021-05-30", - "twitter": "@csharpcorner" - }, { "name": "Apache Airflow Summit", "url": "https://airflowsummit.org", diff --git a/conferences/2021/devops.json b/conferences/2021/devops.json index 6ade3c11b..3ff69ecf0 100644 --- a/conferences/2021/devops.json +++ b/conferences/2021/devops.json @@ -354,12 +354,11 @@ }, { "name": "Lead Dev London", - "url": "https://london2020.theleaddeveloper.com/", + "url": "https://theleaddeveloper.com/", "startDate": "2021-06-08", "endDate": "2021-06-09", "city": "London", "country": "U.K.", - "cocUrl": "https://london2020.theleaddeveloper.com/code-of-conduct", "twitter": "@TheLeadDev" }, { diff --git a/conferences/2021/dotnet.json b/conferences/2021/dotnet.json index 816dd7f9a..ff7fa2ee7 100644 --- a/conferences/2021/dotnet.json +++ b/conferences/2021/dotnet.json @@ -61,17 +61,6 @@ "cfpEndDate": "2021-03-31", "twitter": "@CloudLunchLearn" }, - { - "name": "Code Quality & Performance Virtual Conference", - "url": "https://www.2020twenty.net/code-quality-and-performance-virtual-conference-2021", - "startDate": "2021-06-18", - "endDate": "2021-06-18", - "online": true, - "cocUrl": "https://www.2020twenty.net/code-quality-and-performance-virtual-conference-2021/code-of-conduct/", - "cfpUrl": "https://forms.gle/Y872ttumqUskpEyW9", - "cfpEndDate": "2021-05-30", - "twitter": "@csharpcorner" - }, { "name": "Nebraska Code", "url": "https://nebraskacode.amegala.com", @@ -92,16 +81,6 @@ "cocUrl": "https://bit.ly/3xgRcJL", "twitter": "@fwdays" }, - { - "name": "Visual Studio Live! Microsoft Headquarters", - "url": "https://vslive.com/events/redmond-2020/home.aspx", - "startDate": "2021-08-09", - "endDate": "2021-08-13", - "city": "Redmond, WA", - "country": "U.S.A.", - "cocUrl": "https://vslive.com/pages/harassment.aspx", - "twitter": "@vslive" - }, { "name": "Code PaLOUsa", "url": "http://www.codepalousa.com", @@ -113,16 +92,6 @@ "cfpEndDate": "2021-04-23", "twitter": "@CodePaLOUsa" }, - { - "name": "Visual Studio Live! San Diego", - "url": "https://vslive.com/events/san-diego-2020/home.aspx", - "startDate": "2021-09-12", - "endDate": "2021-09-16", - "city": "San Diego, CA", - "country": "U.S.A.", - "cocUrl": "https://vslive.com/pages/harassment.aspx", - "twitter": "@vslive" - }, { "name": "Music City Code", "url": "https://www.musiccitytech.com/conferences/music-city-code", diff --git a/conferences/2021/ios.json b/conferences/2021/ios.json index ce1cb6364..226aa60e1 100644 --- a/conferences/2021/ios.json +++ b/conferences/2021/ios.json @@ -28,7 +28,7 @@ }, { "name": "ADDC - App Design & Development", - "url": "https://addconf.com/2020", + "url": "https://addconf.com", "startDate": "2021-06-23", "endDate": "2021-06-24", "online": true, diff --git a/conferences/2021/javascript.json b/conferences/2021/javascript.json index 371af0098..b452e8b29 100644 --- a/conferences/2021/javascript.json +++ b/conferences/2021/javascript.json @@ -277,17 +277,6 @@ "cfpEndDate": "2021-04-02", "twitter": "@Frontend_Love" }, - { - "name": "Angular Virtual Conference", - "url": "https://www.2020twenty.net/angular-virtual-conference-2021/", - "startDate": "2021-05-28", - "endDate": "2021-05-28", - "online": true, - "cocUrl": "https://www.2020twenty.net/angular-virtual-conference/code-of-conduct/", - "cfpUrl": "https://forms.gle/SNDT8KoCoi7pE6Go8", - "cfpEndDate": "2021-05-10", - "twitter": "@csharpcorner" - }, { "name": "Online Angular Global Summit", "url": "https://angular.geekle.us", @@ -357,17 +346,6 @@ "cfpEndDate": "2021-02-28", "twitter": "@webdirections" }, - { - "name": "React Virtual Conference", - "url": "https://www.2020twenty.net/react-virtual-conference-2021/", - "startDate": "2021-06-11", - "endDate": "2021-06-11", - "online": true, - "cocUrl": "https://www.2020twenty.net/react-virtual-conference-2021/code-of-conduct/", - "cfpUrl": "https://forms.gle/912gNrPYr41Rcw4HA", - "cfpEndDate": "2021-05-15", - "twitter": "@csharpcorner" - }, { "name": "NextJs Conf", "url": "https://nextjs.org/conf", diff --git a/conferences/2021/security.json b/conferences/2021/security.json index 9cc8c9963..23e545fef 100644 --- a/conferences/2021/security.json +++ b/conferences/2021/security.json @@ -75,12 +75,11 @@ }, { "name": "RuhrSec", - "url": "https://www.ruhrsec.de/2020", + "url": "https://www.ruhrsec.de", "startDate": "2021-05-18", "endDate": "2021-05-21", "city": "Bochum", "country": "Germany", - "cocUrl": "https://www.ruhrsec.de/2020/codeofconduct.html", "twitter": "@ruhrsec" }, { diff --git a/conferences/2021/testing.json b/conferences/2021/testing.json index f08347ce7..60eaef894 100644 --- a/conferences/2021/testing.json +++ b/conferences/2021/testing.json @@ -57,13 +57,6 @@ "endDate": "2021-09-16", "online": true }, - { - "name": "QA Financial Forum New York", - "url": "https://www.qa-financial.com/events/the-qa-financial-forum-new-york-2020", - "startDate": "2021-09-21", - "endDate": "2021-09-21", - "online": true - }, { "name": "ICSTPMA - International Conference on Software Testing Process, Methods and Approaches", "url": "https://waset.org/software-testing-process-methods-and-approaches-conference-in-september-2021-in-london/", diff --git a/conferences/2023/general.json b/conferences/2023/general.json index 340cbeea8..c04bcb566 100644 --- a/conferences/2023/general.json +++ b/conferences/2023/general.json @@ -74,13 +74,12 @@ }, { "name": "Fosdem", - "url": "https://fosdem.org/2022/news/2022-09-14-fosdem-2023-dates", + "url": "https://fosdem.org", "startDate": "2023-02-04", "endDate": "2023-02-05", "city": "Brussels", "country": "Belgium", "online": false, - "cocUrl": "https://fosdem.org/2022/practical/conduct/", "twitter": "@fosdem" }, { diff --git a/conferences/2024/android.json b/conferences/2024/android.json index 6720bd665..223ad585f 100644 --- a/conferences/2024/android.json +++ b/conferences/2024/android.json @@ -62,7 +62,7 @@ "online": false, "locales": "EN", "cocUrl": "https://sf.droidcon.com/code-of-conduct/", - "cfpUrl": "https://sessionize.com/droidcon-san-francisco-2023", + "cfpUrl": "https://sessionize.com/droidcon-san-francisco-2024", "cfpEndDate": "2024-04-14", "twitter": "@droidconSF", "mastodon": "@droidcon@androiddev.social" @@ -77,7 +77,7 @@ "online": false, "locales": "EN", "cocUrl": "https://berlin.droidcon.com/code-of-conduct/", - "cfpUrl": "https://sessionize.com/droidcon-berlin-2022", + "cfpUrl": "https://sessionize.com/droidcon-berlin-2024", "cfpEndDate": "2024-04-01", "twitter": "@droidconBerlin", "mastodon": "@droidcon@androiddev.social" diff --git a/conferences/2024/devops.json b/conferences/2024/devops.json index 1f092bfb6..47f53056c 100644 --- a/conferences/2024/devops.json +++ b/conferences/2024/devops.json @@ -13,13 +13,13 @@ }, { "name": "Devopsdays Tel Aviv", - "url": "https://devopsdays.org/events/2023-tel-aviv/welcome/", + "url": "https://devopsdays.org/events/2024-tel-aviv/welcome/", "startDate": "2024-01-21", "endDate": "2024-01-22", "city": "Tel Aviv", "country": "Israel", "locales": "EN", - "cocUrl": "https://devopsdays.org/events/2023-tel-aviv/conduct", + "cocUrl": "https://devopsdays.org/events/2024-tel-aviv/conduct", "twitter": "@devopsdaystlv" }, { @@ -287,7 +287,7 @@ "city": "Istanbul", "country": "Turkey", "cocUrl": "https://devopsdays.org/events/2024-istanbul/conduct", - "cfpUrl": "https://www.papercall.io/devopsdays-istanbul-2023", + "cfpUrl": "https://www.papercall.io/devopsdays-istanbul-2024", "cfpEndDate": "2024-01-19", "twitter": "@devopsdaysist" }, @@ -574,7 +574,7 @@ "online": true, "locales": "EN", "cocUrl": "https://www.devnetwork.com/code-of-conduct/", - "cfpUrl": "https://sessionize.com/developerweek-latin-america-2023", + "cfpUrl": "https://sessionize.com/developerweek-latin-america-2024", "cfpEndDate": "2024-04-21", "twitter": "@DeveloperWeek" }, diff --git a/conferences/2024/general.json b/conferences/2024/general.json index 0a4af00dd..689921746 100644 --- a/conferences/2024/general.json +++ b/conferences/2024/general.json @@ -577,7 +577,7 @@ "online": true, "locales": "EN", "cocUrl": "https://www.devnetwork.com/code-of-conduct/", - "cfpUrl": "https://sessionize.com/developerweek-latin-america-2023", + "cfpUrl": "https://sessionize.com/developerweek-latin-america-2024", "cfpEndDate": "2024-04-21", "twitter": "@DeveloperWeek" }, diff --git a/conferences/2024/javascript.json b/conferences/2024/javascript.json index 986c61d9d..e16153540 100644 --- a/conferences/2024/javascript.json +++ b/conferences/2024/javascript.json @@ -360,7 +360,7 @@ "online": true, "locales": "EN", "cocUrl": "https://www.devnetwork.com/code-of-conduct/", - "cfpUrl": "https://sessionize.com/developerweek-latin-america-2023", + "cfpUrl": "https://sessionize.com/developerweek-latin-america-2024", "cfpEndDate": "2024-04-21", "twitter": "@DeveloperWeek" }, diff --git a/conferences/2024/kotlin.json b/conferences/2024/kotlin.json index 7db80478c..2cc762087 100644 --- a/conferences/2024/kotlin.json +++ b/conferences/2024/kotlin.json @@ -46,7 +46,7 @@ "online": false, "locales": "EN", "cocUrl": "https://sf.droidcon.com/code-of-conduct/", - "cfpUrl": "https://sessionize.com/droidcon-san-francisco-2023", + "cfpUrl": "https://sessionize.com/droidcon-san-francisco-2024", "cfpEndDate": "2024-04-14", "twitter": "@droidconSF", "mastodon": "@droidcon@androiddev.social" @@ -61,7 +61,7 @@ "online": false, "locales": "EN", "cocUrl": "https://berlin.droidcon.com/code-of-conduct/", - "cfpUrl": "https://sessionize.com/droidcon-berlin-2022", + "cfpUrl": "https://sessionize.com/droidcon-berlin-2024", "cfpEndDate": "2024-04-01", "twitter": "@droidconBerlin", "mastodon": "@droidcon@androiddev.social" diff --git a/conferences/2024/networking.json b/conferences/2024/networking.json index fb5d44997..5bd24cd96 100644 --- a/conferences/2024/networking.json +++ b/conferences/2024/networking.json @@ -248,7 +248,7 @@ "online": false, "locales": "EN", "cocUrl": "https://sf.droidcon.com/code-of-conduct/", - "cfpUrl": "https://sessionize.com/droidcon-san-francisco-2023", + "cfpUrl": "https://sessionize.com/droidcon-san-francisco-2024", "cfpEndDate": "2024-04-14", "twitter": "@droidconSF", "mastodon": "@droidcon@androiddev.social" @@ -330,7 +330,7 @@ "online": false, "locales": "EN", "cocUrl": "https://berlin.droidcon.com/code-of-conduct/", - "cfpUrl": "https://sessionize.com/droidcon-berlin-2022", + "cfpUrl": "https://sessionize.com/droidcon-berlin-2024", "cfpEndDate": "2024-04-01", "twitter": "@droidconBerlin", "mastodon": "@droidcon@androiddev.social" diff --git a/scripts/utils/checkConference.js b/scripts/utils/checkConference.js index 255830fd3..cacafe79a 100644 --- a/scripts/utils/checkConference.js +++ b/scripts/utils/checkConference.js @@ -4,8 +4,7 @@ const validLocations = require('../../config/validLocations'); const validFields = require('../../config/validFields'); const maxDurationInDays = 10; -const twitterRegex = /^@\w([\w\.]){1,15}$/; -const mastodonRegex = /^@\w+@\w+(\.\w+)+$/; +const twitterRegex = /@\w([\w\.]){1,15}$/; const httpRegex = /^http(s?):\/\//; const httpNoQuestionmarkRegex = /\?/; const urlShortener = /(\/bit\.ly)|(\/t\.co)/; @@ -14,11 +13,12 @@ const emptyStringRegex = /^\s+$|^$/gi; const onlineRegex = /online|remote|everywhere|world|web|global|virtual|www|http/i; const dateFormat = 'yyyy-MM-dd'; const dateRegex = /(2\d\d\d)-(0[1-9])|(1[012])-(0[1-9])|([12][0-9])|(3[01])/; +const year2000Regex = /20\d{2}/; const REQUIRED_KEYS = ['name', 'url', 'startDate', 'endDate']; const validLocationsHint = ' - Check/Maintain the file "config/validLocations.js"'; module.exports = function checkConference(year, conference, assertField) { - const { name, url, cfpUrl, twitter, mastodon } = conference; + const { name, url, cfpUrl, twitter } = conference; REQUIRED_KEYS.forEach(requiredKey => { assertField(conference.hasOwnProperty(requiredKey), requiredKey, `is missing`); @@ -60,9 +60,6 @@ module.exports = function checkConference(year, conference, assertField) { if (twitter && twitter.length > 0 && !twitterRegex.test(twitter)) { assertField(twitterRegex.test(twitter), 'twitter', 'should be formatted like @twitter', twitter); } - if (mastodon && mastodon.length > 0 && !mastodonRegex.test(mastodon)) { - assertField(mastodonRegex.test(mastodon), 'mastodon', 'should be formatted like @username@domain.tld', mastodon); - } function checkLocation(country, city) { const isCountryValid = validLocations[country]; @@ -84,5 +81,29 @@ module.exports = function checkConference(year, conference, assertField) { assertField(httpRegex.test(value), property, 'should start with http', value); assertField(!httpNoQuestionmarkRegex.test(value), property, 'should not contain a "?"', value); assertField(!urlShortener.test(value), property, 'should not use url shorteners', value); + checkYearInUrl(conference, property, value); + } + + function checkYearInUrl(conference, property, value) { + const urlContainsYear = value.match(year2000Regex); + + // If a 4-digit number starting with "20" is found in the URL + if (urlContainsYear) { + const year = parseInt(urlContainsYear[0]); + const eventStartYear = new Date(conference.startDate).getFullYear(); + const diffInYears = Math.abs(year - eventStartYear); + if (diffInYears == 0 || diffInYears > 5) { + return; + } + const eventEndYear = new Date(conference.endDate).getFullYear(); + + // Check if the year in the URL matches the event start or end year + assertField( + year === eventStartYear.toString() || year === eventEndYear.toString(), + property, + `If a year is present in the URL, it should match the event start or end year`, + value + ); + } } };