diff --git a/content/jobs/project-manager.md b/content/jobs/project-manager.md index 54999e45..131ac019 100644 --- a/content/jobs/project-manager.md +++ b/content/jobs/project-manager.md @@ -4,7 +4,7 @@ order: 3 status: active url: https://hire.withgoogle.com/public/jobs/lbryio/view/P_AAAAAADAAADDIQ-YUHEtOA?trackingTag=joinUs --- -Being a project manager at LBRY requires skillful facilitation and coaching of a menagerie of full-time engineers and community contributors. Additionally, it demands the ability to break down big goals into practical plans and keep track of a wide variety of tasks and small details. +Being a project manager at LBRY requires skillful facilitation and coaching of a menagerie of full-time engineers and community contributors. It demands the ability to break down big goals into practical plans and keep track of a wide variety of tasks and small details. This isn't a typical project management position. LBRY is an open-source, community driven company with few externally driven deadlines and a big focus on transparency. diff --git a/content/jobs/protocol-engineer.md b/content/jobs/protocol-engineer.md index 6dfa63c9..50bb2e6a 100644 --- a/content/jobs/protocol-engineer.md +++ b/content/jobs/protocol-engineer.md @@ -1,7 +1,7 @@ --- title: Protocol Engineer order: 4 -status: rolling +status: active url: https://hire.withgoogle.com/public/jobs/lbryio/view/P_AAAAAADAAADALc6v5NkAOf?trackingTag=joinUs --- The LBRY protocol consists of a [set of APIs](https://lbry.io/api) provided via a daemon. This daemon is comprised of several sub-components, and interacts with the blockchain, wallet, and other remote daemons that constitute the LBRY data network. diff --git a/controller/Controller.class.php b/controller/Controller.class.php index 18720e49..51a95cc9 100644 --- a/controller/Controller.class.php +++ b/controller/Controller.class.php @@ -109,7 +109,6 @@ class Controller $router->get(['/press-kit.zip', 'press-kit'], 'ContentActions::executePressKit'); - $router->get('/join-us', 'ContentActions::executeJobs'); $router->post('/postcommit', 'OpsActions::executePostCommit'); $router->post('/log-upload', 'OpsActions::executeLogUpload'); $router->get(static::CACHE_CLEAR_PATH, 'OpsActions::executeClearCache'); diff --git a/controller/action/ContentActions.class.php b/controller/action/ContentActions.class.php index 66be2eab..c06d9406 100644 --- a/controller/action/ContentActions.class.php +++ b/controller/action/ContentActions.class.php @@ -16,7 +16,6 @@ class ContentActions extends Actions URL_PRESS = '/' . self::SLUG_PRESS, URL_BOUNTY = '/' . self::SLUG_BOUNTY, URL_CREDIT_REPORTS = '/' . self::SLUG_CREDIT_REPORTS, - URL_JOBS = '/' . self::SLUG_JOBS, CONTENT_DIR = ROOT_DIR . '/content', @@ -392,33 +391,21 @@ class ContentActions extends Actions ]]; } - public static function executeJobs() + public static function prepareJobsPartial(array $vars) { - Response::enableHttpCache(); + $jobs = + array_filter( + array_map('View::parseMarkdown', glob(static::VIEW_FOLDER_JOBS . '/*')), + function($job) { return $job[0]['status'] !== 'closed'; } + ); - $jobs = array(); - - $jobs = array_filter(glob(static::VIEW_FOLDER_JOBS . '/*'), function($job){ - list($metadata, $jobHTML) = View::parseMarkdown($job); - - return $metadata['status'] != 'closed'; + usort($jobs, function($jobA, $jobB){ + if ($jobA[0]['status'] === 'active' xor $jobB[0]['status'] === 'active') { + return $jobA[0]['status'] === 'active' ? -1 : 1; + } + return $jobA[0]['order'] <=> $jobB[0]['order']; }); - usort($jobs, function($job1, $job2){ - list($metadataA, $jobHTMLA) = View::parseMarkdown($job1); - list($metadataB, $jobHTMLB) = View::parseMarkdown($job2); - return $metadataA['order'] <=> $metadataB['order']; - }); - - return ['content/join-us', ['jobs' => $jobs]]; - } - - public static function prepareJobPartial(array $vars) - { - - list($metadata, $jobHTML) = View::parseMarkdown($vars['job']); - return $vars + ['metadata' => $metadata, 'jobHTML' => $jobHTML]; - - + return $vars + ['jobs' => $jobs]; } } diff --git a/view/template/content/_job.php b/view/template/content/_job.php index a711697e..74933d2b 100644 --- a/view/template/content/_job.php +++ b/view/template/content/_job.php @@ -1,7 +1,14 @@
- Contact joinus@lbry.io if interested in a position. Please include the following: -
-- We use a 3-step hiring process: + Click "Apply" next to any job listed above to begin the process. We use a 3-step hiring process:
A compensated code contribution (4 hours minimum) on the repository you'd be working on.
++ All technical hires are required to complete compensated code contribution on the repository they'd be working on. + Non-technical hires will also be asked to complete a compensated trial task after they apply and complete step 1. +
++ Issues tagged "good first issue" are suitable for this purpose, though you are welcome to work on another issue or even something not filed at all. +
Project | +Project(s) | Position | Issues | ||
---|---|---|---|---|---|
lbry | -Protocol Engineer | +lbrycrd | +Blockchain Engineer | +good first issues | +|
+ lbry (daemon) + lbryum (wallet) + |
+ Protocol Engineer | good first issues | |||
lbry-app | -Application or UX Engineer | -good first issues | +
+ lbry-desktop + lbry-android + spee.ch + |
+ Lead Application Engineer | +good first issues |
lbrycrd | -Blockchain Engineer | -good first issues | -|||
lbry.io | -Web Developer | -good first issues | +(not public) | +API engineer | +contact us / apply first |
- We ask all potential full-time contributors to take on a potential issue on the project they'd be working on. Issues tagged "good first issue" are suitable for this purpose, though you are welcome to work on another issue or even something not filed at all. -
The issue you choose does not necessarily need to be fully completed, and we don't expect a perfect first contribution. Open a pull request as soon as you'd like any feedback from one of our developers. We compensate at or above market rates for all accepted pull requests.
- For questions or problems with a particular issue, please comment directly on the GitHub issue. For setup or environment trouble, open a separate issue. You can also join #dev in our chat to interact with other community members.
+ For questions or problems with a particular issue, please comment directly on the GitHub issue. For setup or environment trouble, open a separate issue or email the contact listed in the project README
. You can also join #dev in our chat to interact with other community members.
A longer (1-2 hours) meeting with the team members you'd be working directly with, as well as the CEO and/or CTO.
+A longer meeting with the team members you'd be working directly with, as well as the CEO and/or CTO.
Steps 1 and 2 may be completed in either order (i.e. you're welcome to try contributing before the introductory call).
diff --git a/web/scss/_badge.scss b/web/scss/_badge.scss index 197e8d76..d13aca84 100644 --- a/web/scss/_badge.scss +++ b/web/scss/_badge.scss @@ -22,4 +22,12 @@ $badge-height: $spacing-vertical * 3/4; { background-color: $color-info-bg; } +} + +h1, h2, h3, h4, h5, h6 +{ + > .badge + { + vertical-align: middle; + } } \ No newline at end of file