diff --git a/.github/workflows/platform.yml b/.github/workflows/platform.yml
new file mode 100644
index 0000000..dfcf6cd
--- /dev/null
+++ b/.github/workflows/platform.yml
@@ -0,0 +1,38 @@
+name: Process Package
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+  workflow_dispatch:
+
+jobs:
+  correctness:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
+      - uses: dart-lang/setup-dart@9a04e6d73cca37bd455e0608d7e5092f881fd603
+        with:
+          sdk: dev
+      - name: Install dependencies
+        run: dart pub upgrade
+      - name: Verify formatting
+        run: dart format --output=none --set-exit-if-changed .
+      - name: Analyze project source
+        run: dart analyze --fatal-infos
+  test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        os: [ubuntu-latest, macos-latest, windows-latest]
+        sdk: [stable, beta, dev]
+    steps:
+      - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
+      - uses: dart-lang/setup-dart@9a04e6d73cca37bd455e0608d7e5092f881fd603
+        with:
+          sdk: ${{ matrix.sdk }}
+      - name: Install dependencies
+        run: dart pub upgrade
+      - name: Run Tests
+        run: dart test
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 5722c5b..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-language: dart
-sudo: false
-dart:
-  - dev
-install:
-  - gem install coveralls-lcov
-before_script:
-  - ./dev/setup.sh
-script:
-  - ./dev/travis.sh
-after_success:
-  - (coveralls-lcov coverage/lcov.info)
-cache:
-  directories:
-    - $HOME/.pub-cache
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 1b14e09..8fbd2e4 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,62 +1,6 @@
+include: package:lints/recommended.yaml
+
 analyzer:
-  enable-experiment:
-    - non-nullable
   errors:
     # Allow having TODOs in the code
     todo: ignore
-
-linter:
-  rules:
-    # these rules are documented on and in the same order as
-    # the Dart Lint rules page to make maintenance easier
-    # http://dart-lang.github.io/linter/lints/
-
-    # === error rules ===
-    - avoid_empty_else
-    - comment_references
-    - cancel_subscriptions
-    - close_sinks
-    - control_flow_in_finally
-    - empty_statements
-    - hash_and_equals
-    - invariant_booleans
-    - iterable_contains_unrelated_type
-    - list_remove_unrelated_type
-    - literal_only_boolean_expressions
-    - test_types_in_equals
-    - throw_in_finally
-    - unrelated_type_equality_checks
-    - valid_regexps
-
-    # === style rules ===
-    - always_declare_return_types
-    - always_specify_types
-    - annotate_overrides
-    - avoid_as
-    - avoid_init_to_null
-    - avoid_return_types_on_setters
-    - await_only_futures
-    - camel_case_types
-    - constant_identifier_names
-    - empty_constructor_bodies
-    - implementation_imports
-    - library_names
-    - library_prefixes
-    - non_constant_identifier_names
-    - one_member_abstracts
-    - only_throw_errors
-    - overridden_fields
-    - package_api_docs
-    - package_prefixed_library_names
-    - prefer_is_not_empty
-    - public_member_api_docs
-    - slash_for_doc_comments
-    - sort_constructors_first
-    - sort_unnamed_constructors_first
-    - type_annotate_public_apis
-    - type_init_formals
-    - unawaited_futures
-    - unnecessary_getters_setters
-
-    # === pub rules ===
-    - package_names
diff --git a/dev/setup.sh b/dev/setup.sh
deleted file mode 100755
index 99ec284..0000000
--- a/dev/setup.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
-# for details. All rights reserved. Use of this source code is governed by a
-# BSD-style license that can be found in the LICENSE file.
-
-pub upgrade
diff --git a/dev/travis.sh b/dev/travis.sh
deleted file mode 100755
index 03d489c..0000000
--- a/dev/travis.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
-# for details. All rights reserved. Use of this source code is governed by a
-# BSD-style license that can be found in the LICENSE file.
-
-# Make sure dartfmt is run on everything
-echo "Checking dart format..."
-needs_dart_format="$(dart format --set-exit-if-changed --output=none lib test dev 2>&1)"
-if [[ $? != 0 ]]; then
-  echo "FAILED"
-  echo "$needs_dart_format"
-  exit 1
-fi
-echo "PASSED"
-
-# Make sure we pass the analyzer
-echo "Checking dartanalyzer..."
-fails_analyzer="$(find lib test dev -name "*.dart" --print0 | xargs -0 dartanalyzer --options analysis_options.yaml 2>&1)"
-if [[ "$fails_analyzer" == *"[error]"* ]]; then
-  echo "FAILED"
-  echo "$fails_analyzer"
-  exit 1
-fi
-echo "PASSED"
-
-# Make sure we could publish if we wanted to.
-echo "Checking publishing..."
-fails_publish="$(pub publish --dry-run 2>&1)"
-if [[ $? != 0 ]]; then
-  echo "FAILED"
-  echo "$fails_publish"
-  exit 1
-fi
-echo "PASSED"
-
-# Fast fail the script on failures.
-set -e
-
-# Run the tests.
-pub run test
diff --git a/lib/src/interface/local_platform.dart b/lib/src/interface/local_platform.dart
index c8573bd..2abd434 100644
--- a/lib/src/interface/local_platform.dart
+++ b/lib/src/interface/local_platform.dart
@@ -42,8 +42,7 @@
   List<String> get executableArguments => io.Platform.executableArguments;
 
   @override
-  String? get packageRoot =>
-      io.Platform.packageRoot; // ignore: deprecated_member_use
+  String? get packageRoot => null;
 
   @override
   String? get packageConfig => io.Platform.packageConfig;
diff --git a/lib/src/interface/platform.dart b/lib/src/interface/platform.dart
index 7f9262f..70a7130 100644
--- a/lib/src/interface/platform.dart
+++ b/lib/src/interface/platform.dart
@@ -159,12 +159,14 @@
   /// list containing the flags passed to the executable.
   List<String> get executableArguments;
 
-  /// The value of the `--package-root` flag passed to the executable
-  /// used to run the script in this isolate.  This is the directory in which
-  /// Dart packages are looked up.
+  /// Deprecated, do not use.
   ///
-  /// If there is no `--package-root` flag, `null` is returned.
-  @deprecated
+  /// This used to be the value of the `--package-root` flag passed to the
+  /// executable used to run the script in this isolate, but is no longer
+  /// supported in Dart 2.
+  ///
+  /// Always returns null.
+  @Deprecated('packages/ directory resolution is not supported in Dart 2.')
   String? get packageRoot;
 
   /// The value of the `--packages` flag passed to the executable
diff --git a/lib/src/testing/fake_platform.dart b/lib/src/testing/fake_platform.dart
index 046dd0a..8fe49c9 100644
--- a/lib/src/testing/fake_platform.dart
+++ b/lib/src/testing/fake_platform.dart
@@ -72,8 +72,8 @@
   /// [json] must be a JSON string that matches the encoding produced by
   /// [toJson].
   factory FakePlatform.fromJson(String json) {
-    Map<String, dynamic> map = new JsonDecoder().convert(json);
-    return new FakePlatform(
+    Map<String, dynamic> map = JsonDecoder().convert(json);
+    return FakePlatform(
       numberOfProcessors: map['numberOfProcessors'],
       pathSeparator: map['pathSeparator'],
       operatingSystem: map['operatingSystem'],
diff --git a/pubspec.yaml b/pubspec.yaml
index efe79e0..123723b 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -7,4 +7,5 @@
   sdk: '>=2.12.0 <3.0.0'
 
 dev_dependencies:
+  lints: ^1.0.1
   test: ^1.16.8
diff --git a/test/fake_platform_test.dart b/test/fake_platform_test.dart
index 3f954b6..2203852 100644
--- a/test/fake_platform_test.dart
+++ b/test/fake_platform_test.dart
@@ -32,13 +32,13 @@
     late LocalPlatform local;
 
     setUp(() {
-      fake = new FakePlatform();
-      local = new LocalPlatform();
+      fake = FakePlatform();
+      local = LocalPlatform();
     });
 
     group('fromPlatform', () {
       setUp(() {
-        fake = new FakePlatform.fromPlatform(local);
+        fake = FakePlatform.fromPlatform(local);
       });
 
       test('copiesAllProperties', () {
@@ -61,7 +61,7 @@
 
     group('copyWith', () {
       setUp(() {
-        fake = new FakePlatform.fromPlatform(local);
+        fake = FakePlatform.fromPlatform(local);
       });
 
       test('overrides a value, but leaves others intact', () {
@@ -85,7 +85,7 @@
         expect(copy.localeName, local.localeName);
       });
       test('can override all values', () {
-        fake = new FakePlatform(
+        fake = FakePlatform(
           numberOfProcessors: 8,
           pathSeparator: ':',
           operatingSystem: 'fake',
@@ -94,7 +94,7 @@
           environment: <String, String>{'PATH': '.'},
           executable: 'executable',
           resolvedExecutable: '/executable',
-          script: new Uri.file('/platform/test/fake_platform_test.dart'),
+          script: Uri.file('/platform/test/fake_platform_test.dart'),
           executableArguments: <String>['scriptarg'],
           version: '0.1.1',
           stdinSupportsAnsi: false,
@@ -125,8 +125,8 @@
 
     group('json', () {
       test('fromJson', () {
-        String json = new io.File('test/platform.json').readAsStringSync();
-        fake = new FakePlatform.fromJson(json);
+        String json = io.File('test/platform.json').readAsStringSync();
+        fake = FakePlatform.fromJson(json);
         expect(fake.numberOfProcessors, 8);
         expect(fake.pathSeparator, '/');
         expect(fake.operatingSystem, 'macos');
@@ -139,7 +139,7 @@
         expect(fake.executable, '/bin/dart');
         expect(fake.resolvedExecutable, '/bin/dart');
         expect(fake.script,
-            new Uri.file('/platform/test/fake_platform_test.dart'));
+            Uri.file('/platform/test/fake_platform_test.dart'));
         expect(fake.executableArguments, <String>['--checked']);
         expect(fake.packageRoot, null);
         expect(fake.packageConfig, null);
@@ -148,7 +148,7 @@
       });
 
       test('fromJsonToJson', () {
-        fake = new FakePlatform.fromJson(local.toJson());
+        fake = FakePlatform.fromJson(local.toJson());
         _expectPlatformsEqual(fake, local);
       });
     });
