`jshint` and `jscs` have been slowly removed from Wikimedia's [Continuous Integration](https://www.mediawiki.org/wiki/Continuous_integration) (CI) [linting](https://en.wikipedia.org/wiki/Lint_(software)) process. They get replaced with `eslint`, which handles both [static analysis](https://en.w@Qikipedia.org/wiki/Static_program_analysis) and [code style](https://www.mediawiki.org/wiki/Manual:Coding_conventions).
Here is an [[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/DismissableSiteNotice/+/475841|example conversion]]. You should use the config that's currently on <https://www.mediawiki.org/wiki/Manual:Coding_conventions/JavaScript#Linting>.
You'll need to remove any references to `jshint`/`jscs`, update the dependencies in the file `package.json` for `eslint`and `eslint-config-wikimedia`, configure it to run in `Gruntfile.js`, and then fix any failures.
The extensions in the list below are candidates for conversion for GCI. Please check them off (means: replace `[ ]` by `[x]`) in this Phabricator task if you start working on them, by clicking "Edit Task" in the upper right corner and updating the task description. (You need to be logged into Phabricator to do this. If you do not have an account in Wikimedia Phabricator yet, see the [Phabricator help](https://www.mediawiki.org/wiki/Phabricator/Help#Creating_your_account) how to create an account here.)
## For Wikimedia production extensions/skins, see T195542
## Other extensions/skins
[x] AnonPrivacy @Zoranzoki21
[x] ApprovedRevs @Zoranzoki21
[x] ArticleIndex @Zoranzoki21
[x] BaseHooks @Zoranzoki21
[x] BiblioPlus @Zoranzoki21
[x] BibManager @Bjornskjald
[x] BlogPage @Bjornskjald
[x] BlueSpiceFoundation @Bjornskjald
[x] BreadCrumbs @Umherirrender
[ ] Buggy
[x] Calendar @Zoranzoki21
[x] Cargo
[x] CollapsibleVector @Paladox
[x] ConfirmAccount @Umherirrender
[x] ContributionScores @Umherirrender
[ ] ContributionsList @Zoranzoki21
[ ] CreatePage @Zoranzoki21
[x] CreateRedirect @Zoranzoki21
[ ] DeviceMapLogCapture @Zoranzoki21
[ ] DisableAccount @Zoranzoki21
[x] Drafts @Zoranzoki21
[x] EditSimilar @Zoranzoki21
[x] EditUser @Umherirrender
[x] EmailAuth @Umherirrender
[ ] ExtTab
[ ] FanBoxes
[x] Farmer @Zoranzoki21
[ ] FundraisingEmailUnsubscribe
[ ] Genealogy
[x] Git2Pages @Umherirrender
[x] HeaderTabs @Zoranzoki21
[x] HoverGallery @Zoranzoki21
[x] ImageTweaks @Umherirrender
[x] ImportArticles @Umherirrender
[ ] IndexFunction @Zoranzoki21
[ ] InlineCategorizer @Zoranzoki21
[x] InviteSignup @Umherirrender
[ ] JSBreadCrumbs @Zoranzoki21
[ ] JsonData @Zoranzoki21
[ ] LanguageSelector @Zoranzoki21
[x] LanguageTool @Umherirrender
[x] LastModified @Umherirrender
[ ] LifeWeb
[ ] Lingo
[ ] LinkFilter
[ ] LinkSuggest
[x] Maintenance @Umherirrender
[x] MaintenanceShell @Umherirrender
[x] MarkAsHelpful @Zoranzoki21
[x] MathSearch @Zoranzoki21
[x] MetaMaster @Umherirrender
[ ] MixedNamespaceSearchSuggestions
[ ] MsUpload
[ ] MultiMaps
[ ] NamespacePopups
[x] NamespaceSidebar @Umherirrender
[ ] NSFileRepo
[ ] NukeDPL
[ ] NumberFormat
[ ] Numbertext
[ ] NumerAlpha
[ ] OdbcDatabase
[ ] OfflineImportLexicon
[x] OnlineStatus
[ ] OnlineStatusBar @Zoranzoki21
[ ] OnlyRecentRecentChanges
[ ] OOJsUIAjaxLogin
[ ] OpenBadges
[ ] OpenGraphMeta
[ ] OpenID
[x] OpenLayers @Umherirrender
[ ] OracleTextSearch @Zoranzoki21
[ ] PageBlock
[ ] PageCreationNotif
[ ] PageDisqus
[ ] PageInCat
[ ] PageLanguage
[ ] PageNotice
[ ] PagePopups
[ ] PageTools
[ ] PanScroll
[ ] PerPageLicense
[ ] PGFTikZ
[ ] PhpHighlight
[ ] PhpTags
[ ] PhpTagsFunctions
[ ] PhpTagsMaps
[ ] PhpTagsSMW
[ ] PhpTagsStorage
[ ] PhpTagsWidgets
[ ] PhpTagsWiki
[ ] PictureGame
[ ] PipeEscape
[ ] Poll
[ ] PollNY
[ ] Polyglot
[ ] PrivateDomains
[ ] ProtectSite
[ ] PurgeClickThrough
[x] PushToWatch @Zoranzoki21
[x] Quantcast @Zoranzoki21
[x] QuickSearchLookup @Zoranzoki21
[x] QuizGame @Umherirrender
[x] RandomArea @Zoranzoki21
[x] RandomGameUnit @Zoranzoki21
[x] RandomImage @Zoranzoki21
[x] RandomImageByCategory @Zoranzoki21
[x] RandomInCategory @Zoranzoki21
[x] RandomPages @Zoranzoki21
[ ] ReassignEdits
[ ] RefreshSpecial
[ ] RegexFun
[ ] RegexFunctions
[ ] RelatedSites
[ ] ReplaceSet
[ ] RevisionCommentSupplement
[ ] RightFunctions
[ ] RT
[ ] SafeDelete
[ ] Sarcasm
[ ] ScanSet
[ ] Screenplay
[ ] SecureHTML
[ ] SecureSessions
[ ] SelectTag
[ ] SemanticACL
[ ] SemanticBundle
[x] SemanticDrilldown @Umherirrender
[ ] SemanticGenealogy
[ ] SemanticInternalObjects
[ ] SemanticPageSeries
[ ] SemanticRating
[ ] SemanticSifter
[ ] SemanticTasks
[ ] SemanticWebBrowser
[x] ShoutWikiAds @Umherirrender
[ ] SidebarDonateBox
[ ] SideBarMenu
[ ] SimpleChanges
[ ] SimpleFarm
[ ] SimpleSecurity
[ ] SiteMetrics
[ ] SkinPerNamespace
[x] SmiteSpam @Umherirrender
[ ] SmoothGallery
[ ] SocialLogin
[ ] SocialProfile
[ ] SoftRedirector
[ ] SoftwareVersion
[ ] Solarium
[x] SpamDiffTool @Umherirrender
[ ] SpamRegex
[ ] Spark
[ ] Special404
[ ] SpellingApi
[ ] SphinxSearch
[ ] SSLClientAuthentication
[ ] StaffEdits
[ ] StalkerLog
[ ] StarterWiki
[ ] StickToThatLanguage
[ ] SubpageFun
[ ] Sudo
[ ] Survey
[ ] SVGEdit
[ ] SwiftMailer
[ ] Tabs
[x] Theme @Umherirrender
[x] ThrottleOverride @Zoranzoki21
[x] TimelineTable @Zoranzoki21
[x] TimeMachine @Zoranzoki21
[x] TitleIcon @Zoranzoki21
[x] TitleKey @Zoranzoki21
[x] TweetANew @RetroCraft
[x] TwitterLogin @Umherirrender
[ ] UnicodeConverter
[ ] UploadBlacklist
[ ] UploadLogo
[ ] UserGroups
[ ] UserOptionStats
[ ] UserStatus
[ ] UserThrottle
[ ] Variables
[x] VEForAll @Umherirrender
[x] VoteNY @Zoranzoki21
[x] WebChat @Zoranzoki21
[x] Widgets @Zoranzoki21
[] WikiArticleFeeds @Zoranzoki21
[x] WikiCategoryTagCloud @Zoranzoki21
[ ] WikiForum
[ ] WikiLexicalData
[ ] Amethyst (skin)
[ ] Anisa (skin)
[ ] BlueSky (skin)
[ ] Bouquet (skin)
[ ] Example (skin)
[ ] Nimbus (skin)
[ ] WoOgLeShades (skin)
I can add plenty more extensions if there's demand.
Mentors: @legoktm, @Jdforrester-WMF and @Esanders