{"id":82,"date":"2019-03-27T19:08:09","date_gmt":"2019-03-28T02:08:09","guid":{"rendered":"https:\/\/www.golinks.com\/blog\/?p=82"},"modified":"2024-10-01T13:13:12","modified_gmt":"2024-10-01T20:13:12","slug":"go-links-contributes-to-open-source-a-tale-of-two-browsers","status":"publish","type":"post","link":"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/","title":{"rendered":"GoLinks Contributes to Open Source: A Tale of Two Browsers."},"content":{"rendered":"\n<p id=\"4a5f\">Contributing to open source software is a great way for companies and engineers to influence new ideas, and improve public projects over time. In this post, we describe our journey of identifying and fixing a bug in the open source browser Firefox from a feature in Chrome.<\/p>\n\n\n\n<p id=\"e714\">When we first implemented the&nbsp;<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">GoLinks<\/a>&nbsp;browser extension, we used the keyword \u201c<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">go<\/a>\u201d to trigger a search for&nbsp;go links&nbsp;in the browser. This allowed users to just type \u201c<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">go<\/a>\u201d and then a \u201cspace\u201d to trigger the search functionality.<\/p>\n\n\n\n<p id=\"2cab\">In order to do&nbsp;this, we added a keyword under the \u201comnibox\u201d property in the manifest file of our extension.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ manifest.json\"omnibox\": {<br>    \"keyword\": \"go\",<br>}<\/pre>\n\n\n\n<p id=\"10c1\">This omnibox&nbsp;go links&nbsp;search feature is a power feature that our users love and continue to use. The feature worked great, except in one particular use case. If you wanted to do a Google search for anything that started with \u201c<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">go<\/a>\u201d it would trigger the&nbsp;<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">GoLinks<\/a>&nbsp;omnibox search, and prevent you from doing a Google search.<\/p>\n\n\n\n<p id=\"a44d\">Go is a very common word to search if you write code in golang or if you search for other \u201c<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">go<\/a>\u201d related items.<\/p>\n\n\n\n<ul>\n<li>\u201cgo lang switch syntax\u201d<\/li>\n\n\n\n<li>\u201cgo fund me\u201d<\/li>\n\n\n\n<li>\u201cgo forward\u201d<\/li>\n\n\n\n<li>\u201cGo Daddy\u201d<\/li>\n\n\n\n<li>\u201cGo Blue!\u201d<\/li>\n<\/ul>\n\n\n\n<p id=\"ffc9\">Each of these searches would trigger the&nbsp;<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">GoLinks<\/a>&nbsp;omnibox search feature and frustrate our users from doing their work. So we had to seek out a solution.<\/p>\n\n\n\n<p id=\"712d\">Our solution was to change the \u201c<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">go<\/a>\u201d term to \u201c<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">go\/<\/a>\u201d to ensure that the omnibox functionality was triggered intentionally. It also followed the same syntax as a&nbsp;go link&nbsp;so it was a sound solution. This fix worked great in Chrome, however, it caused Firefox to throw an error and prevent the extension from loading.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"810\" height=\"350\" src=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190718\/image-6.png\" alt=\"\" class=\"wp-image-84\" srcset=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190718\/image-6.png 810w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190718\/image-6-300x130.png 300w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190718\/image-6-768x332.png 768w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190718\/image-6-40x17.png 40w\" sizes=\"(max-width: 810px) 100vw, 810px\" \/><\/figure>\n\n\n\n<p id=\"4443\">In Chrome, you are allowed to use special characters in the keyword that triggers the omnibox functionality, however in Firefox 62.0, adding a slash would throw this message:&nbsp;<code>There was an error during installation: Extension is invalid<\/code>. So we filed a bug with Mozilla since the Web Extension standard should allow this behavior.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"317\" src=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190720\/image-7-1024x317.png\" alt=\"\" class=\"wp-image-85\" srcset=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190720\/image-7-1024x317.png 1024w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190720\/image-7-300x93.png 300w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190720\/image-7-768x238.png 768w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190720\/image-7-1536x476.png 1536w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190720\/image-7-40x12.png 40w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190720\/image-7.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1500320\">https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1500320<\/a><\/figcaption><\/figure>\n\n\n\n<p id=\"c3db\">We continued to receive customer complaints about users searching for \u201cgolang\u201d syntaxes or \u201cgo fund me\u201d campaigns, and they would have to uninstall the extension in order to search for \u201cgo\u201d related items. The bug was filed as a&nbsp;<strong>low priority (P3)&nbsp;<\/strong>by the Mozilla community, however, for us, this was a high priority issue.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"302\" src=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190724\/image-8-1024x302.png\" alt=\"\" class=\"wp-image-86\" srcset=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190724\/image-8-1024x302.png 1024w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190724\/image-8-300x88.png 300w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190724\/image-8-768x226.png 768w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190724\/image-8-1536x453.png 1536w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190724\/image-8-2048x603.png 2048w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190724\/image-8-40x12.png 40w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p id=\"5b86\">It was also marked as a&nbsp;<strong>good-first-bug&nbsp;<\/strong>followed by a link on how to contribute if someone wanted to take on this bug. So, as any good engineering team would do, we planned a way to solve this issue for our customers directly: by fixing the bug in Firefox.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"187\" src=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190730\/image-9-1024x187.png\" alt=\"\" class=\"wp-image-87\" srcset=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190730\/image-9-1024x187.png 1024w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190730\/image-9-300x55.png 300w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190730\/image-9-768x140.png 768w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190730\/image-9-1536x280.png 1536w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190730\/image-9-2048x374.png 2048w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190730\/image-9-40x7.png 40w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p id=\"8ae0\">We realized that fixing the bug directly was a more proactive approach to solving the issue, than waiting around for someone else to fix the problem. Firefox is an open source browser, so anyone can go in and fix any issues in the backlog, including engineering teams like us. None of us had ever worked on writing code for a browser before, but when your customers have an issue, you have to do everything in your ability to solve their issue.<\/p>\n\n\n\n<p id=\"b730\">On&nbsp;<a href=\"https:\/\/www.golinks.io\/about.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">our team<\/a>, we use the common version control software: Git. However, to contribute to Firefox you must use a version control called Mercurial. Once the repository is downloaded you can run the build command to build the browser. This took a very long time to compile the first time, so we let it run overnight.<\/p>\n\n\n\n<p id=\"6ce9\">Next, we found the bug and made the necessary changes. We compiled the browser and tested to see if it worked manually. In addition to manual tests, we had to write unit tests for our change. Tests are important because it gives the reviewers confidence that the code change does what is expected, and it prevents unexpected code from breaking the current functionality.<\/p>\n\n\n\n<p id=\"46d4\">Once the code changes and tests were in, we submitted the changes to Phabricator which is the software used to review code.<a href=\"https:\/\/phabricator.services.mozilla.com\/D12242\" target=\"_blank\" rel=\"noreferrer noopener\">\u2699 D12242 Updating the omnibox keyword regex to allow trailing slashesPreviously the omnibox keyword would not allow trailing slashes, such as go\/ Chrome allows this keyword, and Firefox\u2026phabricator.services.mozilla.com<\/a><\/p>\n\n\n\n<p id=\"bfe1\">From here we did a normal code review with the community. The reviewer, Rob Wu, suggested that our Regular Expression could be further simplified.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"341\" src=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190735\/image-10-1024x341.png\" alt=\"\" class=\"wp-image-88\" srcset=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190735\/image-10-1024x341.png 1024w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190735\/image-10-300x100.png 300w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190735\/image-10-768x256.png 768w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190735\/image-10-40x13.png 40w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190735\/image-10.png 1230w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p id=\"4790\">With the necessary edits, our code was approved.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"293\" src=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190738\/image-11-1024x293.png\" alt=\"\" class=\"wp-image-89\" srcset=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190738\/image-11-1024x293.png 1024w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190738\/image-11-300x86.png 300w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190738\/image-11-768x220.png 768w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190738\/image-11-1536x440.png 1536w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190738\/image-11-40x11.png 40w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190738\/image-11.png 1844w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p id=\"d7be\">Next, it needed to be accepted by a module peer before it landed.<\/p>\n\n\n\n<p id=\"da0a\">When the revision was ready to land it got merged into master and was ready to be released in a future version.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"257\" src=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190742\/image-12-1024x257.png\" alt=\"\" class=\"wp-image-90\" srcset=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190742\/image-12-1024x257.png 1024w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190742\/image-12-300x75.png 300w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190742\/image-12-768x193.png 768w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190742\/image-12-1536x385.png 1536w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190742\/image-12-2048x513.png 2048w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190742\/image-12-40x10.png 40w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p id=\"4138\">For us this was great, but there was also a small problem that prevented us from getting the new feature out to our users. The fix was now available in 65.0a1, which is the Alpha version of Firefox Nightly, but all of our users were using the latest publicly available version which, at the time, was 63.0.3.<\/p>\n\n\n\n<p id=\"fca5\">At this point, it was just a waiting game. We would need customer support to let our users know that a fix was on the way, but it was out of our control to release this feature.<\/p>\n\n\n\n<p id=\"34f8\">Eventually, version 65 was released to the public, and our fix could go out. We updated our extension with the changes, updated our users about the change, and responded to the happy customers that have been waiting for a fix for this feature.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"1006\" src=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190746\/image-13-1024x1006.png\" alt=\"\" class=\"wp-image-91\" srcset=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190746\/image-13-1024x1006.png 1024w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190746\/image-13-300x295.png 300w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190746\/image-13-768x755.png 768w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190746\/image-13-40x40.png 40w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190746\/image-13.png 1264w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">Email to our customers<\/a><\/figcaption><\/figure>\n\n\n\n<p id=\"3e82\">This whole process took about 3\u20134 months to go from identifying the bug to releasing a fix to the feature available to the public, but we moved as fast as we could once we learned customers were having an issue.<\/p>\n\n\n\n<p id=\"a132\">If you are a current user of&nbsp;<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">GoLinks<\/a>, be sure to check out the new omnibox feature which is triggered with \u201c<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">go\/<\/a>\u201d in the address bar of Chrome and Firefox.<\/p>\n\n\n\n<p id=\"e3a0\">If you aren\u2019t a user of\u00a0<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">GoLinks<\/a>, sign up today at\u00a0<a href=\"https:\/\/www.golinks.io\/golinks.php?utm_source=golinks.com&amp;utm_medium=blog&amp;utm_campaign=firefox_open_source&amp;utm_content=golinks\">https:\/\/www.golinks.io\/<\/a>, and learn how companies are improving productivity and communication within their organizations.<\/p>\n\n\n\n<div class=\"row bg-dark rounded p-3 my-1\">\n<div class=\"col col-12 col-md-8 my-auto\">\n<h4 class=\"wp-block-heading text-white\" id=\"h-access-and-share-resources-instantly-with-golinks\">Access and share resources instantly with GoLinks<\/h4>\n\n\n\n<a class=\"btn btn-primary\" href=\"https:\/\/www.golinks.io\/signup.php?utm_source=blog&amp;utm_medium=blog&amp;utm_campaign=blog-cta&amp;utm_content=free-trial\" role=\"button\">Try for free<\/a>\n\n\n\n<p><\/p>\n<\/div>\n\n\n\n<div class=\"col col-12 col-md-4\">\n<figure class=\"wp-block-image size-full rounded my-auto\"><img decoding=\"async\" loading=\"lazy\" width=\"624\" height=\"448\" src=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2024\/09\/25102826\/golinks_blog_footer_cta_2x_2x-1.webp\" alt=\"\" class=\"wp-image-6957\" srcset=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2024\/09\/25102826\/golinks_blog_footer_cta_2x_2x-1.webp 624w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2024\/09\/25102826\/golinks_blog_footer_cta_2x_2x-1-300x215.webp 300w, https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2024\/09\/25102826\/golinks_blog_footer_cta_2x_2x-1-40x29.webp 40w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contributing to open source software is a great way for companies and engineers to influence new ideas, and improve public projects over time. In this post, we describe our journey of identifying and\u2026<\/p>\n","protected":false},"author":1,"featured_media":83,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":""},"categories":[2],"tags":[35,36,33,34,8],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v17.1.2 (Yoast SEO v20.11) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>GoLinks Contributes to Open Source: A Tale of Two Browsers.<\/title>\n<meta name=\"description\" content=\"Contributing to open-source software is a great way for companies and engineers to influence new ideas, and improve public projects over time.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GoLinks Contributes to Open Source: A Tale of Two Browsers.\" \/>\n<meta property=\"og:description\" content=\"Contributing to open-source software is a great way for companies and engineers to influence new ideas, and improve public projects over time.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/\" \/>\n<meta property=\"og:site_name\" content=\"The GoLinks\u00ae blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/golinksio\" \/>\n<meta property=\"article:published_time\" content=\"2019-03-28T02:08:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-01T20:13:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190704\/image-5.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sean Burke\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@golinks\" \/>\n<meta name=\"twitter:site\" content=\"@golinks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sean Burke\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/\",\"url\":\"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/\",\"name\":\"GoLinks Contributes to Open Source: A Tale of Two Browsers.\",\"isPartOf\":{\"@id\":\"https:\/\/www.golinks.com\/blog\/#website\"},\"datePublished\":\"2019-03-28T02:08:09+00:00\",\"dateModified\":\"2024-10-01T20:13:12+00:00\",\"author\":{\"@id\":\"https:\/\/www.golinks.com\/blog\/#\/schema\/person\/6acaa6e49f03817ce0b885fa2077c63f\"},\"description\":\"Contributing to open-source software is a great way for companies and engineers to influence new ideas, and improve public projects over time.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/www.golinks.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Product\",\"item\":\"https:\/\/golinks.io\/golinks.com\/blog\/product\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"GoLinks Contributes to Open Source: A Tale of Two Browsers.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.golinks.com\/blog\/#website\",\"url\":\"https:\/\/www.golinks.com\/blog\/\",\"name\":\"The GoLinks\u00ae blog\",\"description\":\"Your hub for all things knowledge management and workplace productivity.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.golinks.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.golinks.com\/blog\/#\/schema\/person\/6acaa6e49f03817ce0b885fa2077c63f\",\"name\":\"Sean Burke\",\"url\":\"https:\/\/www.golinks.com\/blog\/author\/sean\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"GoLinks Contributes to Open Source: A Tale of Two Browsers.","description":"Contributing to open-source software is a great way for companies and engineers to influence new ideas, and improve public projects over time.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/","og_locale":"en_US","og_type":"article","og_title":"GoLinks Contributes to Open Source: A Tale of Two Browsers.","og_description":"Contributing to open-source software is a great way for companies and engineers to influence new ideas, and improve public projects over time.","og_url":"http:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/","og_site_name":"The GoLinks\u00ae blog","article_publisher":"https:\/\/www.facebook.com\/golinksio","article_published_time":"2019-03-28T02:08:09+00:00","article_modified_time":"2024-10-01T20:13:12+00:00","og_image":[{"width":960,"height":600,"url":"https:\/\/images.golinks.io\/blog\/wp-content\/uploads\/2021\/02\/18190704\/image-5.png","type":"image\/png"}],"author":"Sean Burke","twitter_card":"summary_large_image","twitter_creator":"@golinks","twitter_site":"@golinks","twitter_misc":{"Written by":"Sean Burke","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/","url":"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/","name":"GoLinks Contributes to Open Source: A Tale of Two Browsers.","isPartOf":{"@id":"https:\/\/www.golinks.com\/blog\/#website"},"datePublished":"2019-03-28T02:08:09+00:00","dateModified":"2024-10-01T20:13:12+00:00","author":{"@id":"https:\/\/www.golinks.com\/blog\/#\/schema\/person\/6acaa6e49f03817ce0b885fa2077c63f"},"description":"Contributing to open-source software is a great way for companies and engineers to influence new ideas, and improve public projects over time.","breadcrumb":{"@id":"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.golinks.com\/blog\/go-links-contributes-to-open-source-a-tale-of-two-browsers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.golinks.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Product","item":"https:\/\/golinks.io\/golinks.com\/blog\/product\/"},{"@type":"ListItem","position":3,"name":"GoLinks Contributes to Open Source: A Tale of Two Browsers."}]},{"@type":"WebSite","@id":"https:\/\/www.golinks.com\/blog\/#website","url":"https:\/\/www.golinks.com\/blog\/","name":"The GoLinks\u00ae blog","description":"Your hub for all things knowledge management and workplace productivity.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.golinks.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.golinks.com\/blog\/#\/schema\/person\/6acaa6e49f03817ce0b885fa2077c63f","name":"Sean Burke","url":"https:\/\/www.golinks.com\/blog\/author\/sean\/"}]}},"_links":{"self":[{"href":"https:\/\/www.golinks.com\/blog\/wp-json\/wp\/v2\/posts\/82"}],"collection":[{"href":"https:\/\/www.golinks.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.golinks.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.golinks.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.golinks.com\/blog\/wp-json\/wp\/v2\/comments?post=82"}],"version-history":[{"count":7,"href":"https:\/\/www.golinks.com\/blog\/wp-json\/wp\/v2\/posts\/82\/revisions"}],"predecessor-version":[{"id":7226,"href":"https:\/\/www.golinks.com\/blog\/wp-json\/wp\/v2\/posts\/82\/revisions\/7226"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.golinks.com\/blog\/wp-json\/wp\/v2\/media\/83"}],"wp:attachment":[{"href":"https:\/\/www.golinks.com\/blog\/wp-json\/wp\/v2\/media?parent=82"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.golinks.com\/blog\/wp-json\/wp\/v2\/categories?post=82"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.golinks.com\/blog\/wp-json\/wp\/v2\/tags?post=82"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}