<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>The Interledger Community 🌱: Sid Vishnoi</title>
    <description>The latest articles on The Interledger Community 🌱 by Sid Vishnoi (@sid).</description>
    <link>https://community.interledger.org/sid</link>
    <image>
      <url>https://community.interledger.org/images/BfXGwz-DS0F9l1epW74fZtdEipkZ89V5lp657KCGpAA/rs:fill:90:90/g:sm/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL3VzZXIv/cHJvZmlsZV9pbWFn/ZS8xOS85YTE1YTYz/YS02NTgxLTQ0ZWEt/YWJlOS0wNTZjMGI2/OWFhZTIuanBn</url>
      <title>The Interledger Community 🌱: Sid Vishnoi</title>
      <link>https://community.interledger.org/sid</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://community.interledger.org/feed/sid"/>
    <language>en</language>
    <item>
      <title>Memorable wallet addresses on your own domain</title>
      <dc:creator>Sid Vishnoi</dc:creator>
      <pubDate>Tue, 02 Sep 2025 11:34:33 +0000</pubDate>
      <link>https://community.interledger.org/sid/memorable-wallet-addresses-on-your-domain-4iag</link>
      <guid>https://community.interledger.org/sid/memorable-wallet-addresses-on-your-domain-4iag</guid>
      <description>&lt;p&gt;Wallet addresses are meant to be easy to remember or identify, unless your wallet provider chooses them for you. The address might include a long subdomain or even a random series of numbers and characters. But did you know that if you own a domain, you can set your wallet address to be the same as your domain?&lt;/p&gt;

&lt;p&gt;So, instead of &lt;code&gt;https://ilp.wallet.example/12345432/usd&lt;/code&gt;, you can have &lt;code&gt;$mywebsite.com&lt;/code&gt; as your wallet address (well, technically, a &lt;a href="https://paymentpointers.org/" rel="noopener noreferrer"&gt;payment pointer&lt;/a&gt;)! It’s as easy as pie to remember.&lt;/p&gt;

&lt;p&gt;I personally use &lt;code&gt;$sidvishnoi.com&lt;/code&gt; (which maps to my GateHub wallet). Feel free to send me money now that you remember the address!&lt;/p&gt;

&lt;p&gt;Alright, so how do we get that address?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://interledger.org/developers/blog/memorable-wallet-addresses-custom-domain/" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;Continue reading on the Interledger Tech Blog&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>webmonetization</category>
      <category>openpayments</category>
      <category>paymentpointers</category>
    </item>
    <item>
      <title>CityJS Singapore 2024 - Web Monetization extension demo booth</title>
      <dc:creator>Sid Vishnoi</dc:creator>
      <pubDate>Fri, 06 Sep 2024 12:26:35 +0000</pubDate>
      <link>https://community.interledger.org/sid/cityjs-singapore-2024-web-monetization-extension-demo-booth-6ef</link>
      <guid>https://community.interledger.org/sid/cityjs-singapore-2024-web-monetization-extension-demo-booth-6ef</guid>
      <description>&lt;p&gt;On July 26th 2024, we (&lt;a class="mentioned-user" href="https://community.interledger.org/ioana"&gt;@ioana&lt;/a&gt;, &lt;a class="mentioned-user" href="https://community.interledger.org/devcer"&gt;@devcer&lt;/a&gt; and &lt;a class="mentioned-user" href="https://community.interledger.org/sid"&gt;@sid&lt;/a&gt;) attended &lt;a href="https://singapore.cityjsconf.org/" rel="noopener noreferrer"&gt;CityJS Singapore&lt;/a&gt;. This post summarizes our activities and booth presence for Web Monetization. I’ll recap our attendance from the technical perspective (not marketing), specifically the live demo of the extension.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/TNYzJtRcYk1yYxqs7mKO2EYDD0g7USBDk7jOXfOsyw0/rt:fit/w:800/g:sm/q:0/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3A4Y2l5eXh2/NThoZGNvcG94d3lr/LmpwZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/TNYzJtRcYk1yYxqs7mKO2EYDD0g7USBDk7jOXfOsyw0/rt:fit/w:800/g:sm/q:0/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3A4Y2l5eXh2/NThoZGNvcG94d3lr/LmpwZw" title="Ioana and Sid at the booth, with demo in background and lots of tshirts in front. Photo by @devcer" alt="Ioana and Sid at the booth, with demo in background and lots of tshirts in front. Photo by @devcer" width="800" height="717"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One important note is that the audience there was primarily JS developers. From my understanding, most of them (if not all) weren't aware of the existence of Web Monetization prior.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Demo
&lt;/h2&gt;

&lt;p&gt;We demonstrated the extension over the Web Monetization playground (as of that date) using wallet addresses from the Rafiki test net. The live demo of the extension ran smoothly for the most part.&lt;/p&gt;

&lt;p&gt;However, towards the second half of the day, &lt;a href="https://rafiki.money" rel="noopener noreferrer"&gt;https://rafiki.money&lt;/a&gt; started running into performance issues, causing the payments to not go through within the extension's request timeout period (10s). These issues hindered the ability to demonstrate the extension further, but over the entire duration, there was at least one visible MonetizationEvent on the page as a demo.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: This post was originally written on Aug 13. The performance of rafiki.money has improved a lot since then, so we don't expect our next such demo to have a slow down.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Despite this setback, attendees were keenly interested in our booth (I suspect our t-shirts attracted them a lot).&lt;/p&gt;

&lt;p&gt;We also mentioned that we're working on a native browser implementation, which will make the extension redundant in the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  Audience Perception of the Extension + WM
&lt;/h2&gt;

&lt;p&gt;The attendees perceived the Web Monetization interface as simple and intuitive, noting that the implementation (adding a link tag to HTML) was straightforward.&lt;/p&gt;

&lt;p&gt;People also asked how they knew if the payments went through, which is when we demonstrated the JS API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notably, people were more curious about the backend - Open Payments, rather than the extension or WM. The extension got very little attention.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The audience expressed disappointment over limited support for wallets in their regions/currencies, given only Fynbos and Gatehub exist. We encouraged them to play using the test wallet to help promote WM until we've more wallets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Concerns
&lt;/h2&gt;

&lt;p&gt;Several attendees had concerns about legal compliance and potential abuse of the system. Explaining that wallet addresses are synonymous with banks, which follow their due diligence when connecting with other wallets, eased their doubts. But then they were asking if this is an alternative to tech like SWIFT transfers (it’s an abstraction over all those things).&lt;/p&gt;

&lt;p&gt;Additionally, a pair of individuals inquired about the security of the extension, particularly the origin and safety of the private/public keys.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;p&gt;Despite the primary focus on open payments, the concept of Web Monetization resonated with developers. Several expressed enthusiasm for the potential of WM to support content creators, particularly those operating blogs or art websites.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The core technology (open payments) is a more prominent interest area than the extension/WM itself!
&lt;/li&gt;
&lt;li&gt;The extension's UI is considered user-friendly enough, but there are not enough data points to claim it as is.
&lt;/li&gt;
&lt;li&gt;Expanded wallet support is crucial for adoption.
&lt;/li&gt;
&lt;li&gt;Addressing legal and security concerns is essential for building trust.
&lt;/li&gt;
&lt;li&gt;Developer interest in Web Monetization is promising.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Recommendations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;For future demonstrations about Web Monetization and the extension, we need a way to explain the extension and WM-specific features and benefits while avoiding people getting distracted by the Open Payments side.
&lt;/li&gt;
&lt;li&gt;Clarify communication to address legal and security concerns:

&lt;ul&gt;
&lt;li&gt;Show how their money is safe (the security keys).
&lt;/li&gt;
&lt;li&gt;Clarify they can avoid supporting something they don't wish to support (via the continuous payments toggle)
&lt;/li&gt;
&lt;li&gt;Show users that the website won’t know “who is paying” (privacy)
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Engage with the non-developer community to foster adoption, as it's mostly "simple and clear" from the dev side.
&lt;/li&gt;

&lt;li&gt;Instead of a live demo as the main screen, use prettier slides, videos, and promotional banners. We used a QR code for the challenge and more-info links, which was very useful.&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>webmonetization</category>
      <category>conference</category>
    </item>
    <item>
      <title>Bringing Web Monetization to the Web Platform — Grant Report #2</title>
      <dc:creator>Sid Vishnoi</dc:creator>
      <pubDate>Wed, 24 Feb 2021 12:46:29 +0000</pubDate>
      <link>https://community.interledger.org/wmfirefox/bringing-web-monetization-to-the-web-platform-grant-report-2-2fff</link>
      <guid>https://community.interledger.org/wmfirefox/bringing-web-monetization-to-the-web-platform-grant-report-2-2fff</guid>
      <description>&lt;h2&gt;
  
  
  Project Update
&lt;/h2&gt;

&lt;p&gt;I'm thrilled to share that we now have a Firefox version with native Web Monetization support!&lt;/p&gt;

&lt;p&gt;The goal for this final milestone was to bring the actual Web Monetization support to Firefox. In my previous post, I discussed &lt;a href="https://community.webmonetization.org/wmfirefox/browser-extension-vs-payment-handler-api-4jp5" rel="noopener noreferrer"&gt;two approaches to support web monetization in browsers&lt;/a&gt; and explained why I'm prototyping with the browser extension approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Progress on objectives
&lt;/h2&gt;

&lt;p&gt;The primary objectives under this milestone were:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Figure out a way to support WebMonetization in browsers,&lt;/li&gt;
&lt;li&gt;Implement it in the browser, and&lt;/li&gt;
&lt;li&gt;Provide feedback to the stakeholders.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As explained in &lt;a href="https://community.webmonetization.org/wmfirefox/browser-extension-vs-payment-handler-api-4jp5" rel="noopener noreferrer"&gt;my previous post&lt;/a&gt;, I decided to prototype WebMonetization in Firefox by defining a new browser extension API. I proposed a minimal API and asked the folks in Interledger Slack channel for their feedback. The API design was based on the &lt;a href="https://github.com/coilhq/web-monetization-projects/tree/189b612/packages/coil-extension" rel="noopener noreferrer"&gt;Coil Web Monetization extension&lt;/a&gt;. We refined the API following some discussions on various requirements - like manually refreshing SPSP response on expiration and pause-resume events.&lt;/p&gt;

&lt;p&gt;I also explored whether exposing only the &lt;code&gt;"monetizationprogress"&lt;/code&gt; event is enough as the WebAPI and if we can achieve similar results by removing the &lt;code&gt;monetization.state&lt;/code&gt; attribute and start/stop events. So, the present WebAPI is as simple as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;monetization&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;progress&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="k"&gt;instanceof&lt;/span&gt; &lt;span class="nx"&gt;MonetizationProgressEvent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;assetScale&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;assetCode&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// paymentPointer as a URL&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;receipt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isValidReceipt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;verifyReceipt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;receipt&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key activities
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Figure out Extension vs PaymentHandler
&lt;/h3&gt;

&lt;p&gt;When I first proposed this project, the aim was to study (and support) if any new protocols need to be implemented in browsers to support Web Monetization. It turned out that no new protocols were needed, as ILP can work over HTTP and WebSocket protocol.&lt;/p&gt;

&lt;p&gt;Later, when I started the project, the Payment Handler API appeared to be the proposed way to support various payment providers. Another approach was to make use of browser extensions, though it comes across as less than ideal.&lt;/p&gt;

&lt;p&gt;My decision became simpler as Firefox doesn't support Payment Handler API and implementing it would be beyond the scope of this project. It means the "WebMonetization Agent" now has two responsibilities: making payment decisions, as well as paying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Define a minimal extension API
&lt;/h3&gt;

&lt;p&gt;I proposed &lt;a href="https://gist.github.com/sidvishnoi/270b9b0e58e8d7df109507cdc2d069d3" rel="noopener noreferrer"&gt;multiple variants&lt;/a&gt; of the browser extension API in the Interledger/WebMonetization Slack channel and asked for their feedback. The API essentially lets extensions know when to start/stop/pause/resume payments, where to send the money (i.e., the SPSP response), and provides a way to notify the website when a payment is successful. Extensions can build upon this basic API, while still being able to request additional information through other extension permissions.&lt;/p&gt;

&lt;p&gt;As of now, we've settled on &lt;a href="https://gist.github.com/sidvishnoi/270b9b0e58e8d7df109507cdc2d069d3#file-api-js" rel="noopener noreferrer"&gt;this API&lt;/a&gt; (alternatively, &lt;a href="https://gist.github.com/sublimator/0520f70fa7dab9d7d373759fdd60aa3e" rel="noopener noreferrer"&gt;see TypeScript definition&lt;/a&gt;) and hope it will be taken up by the WM community.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understand how to develop an extension API in Firefox
&lt;/h3&gt;

&lt;p&gt;Developing an extension API in Firefox was uncharted territory for me. Thankfully the documentation for extension APIs is much better maintained than the rest of the code I've worked with. After going through the docs, referencing the implementation of different extension APIs, and exploring a lot of indirectly related code, I figured out how to implement the WM BrowserExt API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup communication between extension, browser and websites
&lt;/h3&gt;

&lt;p&gt;Once I had mock implementations in place, the next thing was to stitch them all together. The communication model involves passing messages across three different kinds of processes. Firefox already had the infrastructure in place, so the implementation was pretty straight-forward (apart from avoiding race conditions due to the event-driven behavior).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/remoteimages/uploads/articles/l3y4hwlonude78b8h9np.png"&gt;&lt;img src="https://community.interledger.org/images/A9D2fzhkJ1RTgwBE0ZhARlpfiORgXHQPg7iNyzAoYGM/rt:fit/w:800/g:sm/q:0/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2J4aGxyY3pl/Z3ZhcXU4dGN6c2Yz/LnBuZw" alt="Communication from document to the browser, and from the browser to the extension" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/remoteimages/uploads/articles/u4mr7oe4sb8qd147icvn.png"&gt;&lt;img src="https://community.interledger.org/images/yTNzDktCJkshodri2lg0T0Qz7nJtfbkpZTtSjuvgW2o/rt:fit/w:800/g:sm/q:0/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2NxZDR5Ym1u/NjR5anBqb3AxbjJw/LnBuZw" alt="Communication from extension to the browser" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Implement the WebAPI
&lt;/h3&gt;

&lt;p&gt;Until now, the browser "communicated" monetization progress to the webpage by logging messages to the JS-console, so the next step was to emit real MonetizationProgress events that websites can monitor.&lt;/p&gt;

&lt;p&gt;Based on some conversations in the Interledger community, I decided to expose only &lt;code&gt;"progress"&lt;/code&gt; events to the global monetization API. It appears that we can achieve similar results with only progress events, and the &lt;code&gt;monetization.state&lt;/code&gt; attribute and start/stop/pending events might be redundant. Though, websites might need a way to know if the user can make payments.&lt;/p&gt;

&lt;p&gt;There is also a &lt;a href="https://github.com/WICG/webmonetization/issues/24" rel="noopener noreferrer"&gt;discussion in WM repo&lt;/a&gt; to move &lt;code&gt;document.monetization&lt;/code&gt; to a global namespace (&lt;code&gt;Window&lt;/code&gt;), or attach it to the &lt;code&gt;Navigator&lt;/code&gt; interface. I initially added it to the &lt;code&gt;Navigator&lt;/code&gt;, but later moved it to &lt;code&gt;Window&lt;/code&gt;, as &lt;code&gt;Navigator&lt;/code&gt; is typically used with hardware related APIs. In other words, &lt;code&gt;document.monetization&lt;/code&gt; is now &lt;code&gt;window.monetization&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write Usage Examples
&lt;/h3&gt;

&lt;p&gt;I developed a &lt;a href="https://github.com/sidvishnoi/wm-firefox-extension-coil" rel="noopener noreferrer"&gt;WebMonetization Firefox extension&lt;/a&gt; using the above prototyped APIs. The extension is a proof-of-concept and doesn’t include many features that a real world extension might. It is mainly a payment handler without any user interface.&lt;/p&gt;

&lt;p&gt;As a companion to the extension, I also created several &lt;a href="https://github.com/sidvishnoi/wm-playground/" rel="noopener noreferrer"&gt;playgrounds&lt;/a&gt; to test various aspects of the WebMonetization implementation in Firefox. The tests include the behavior of dynamic monetization tags, content security policy, caching, in addition to a few modified examples from the WebMonetization website like payment counters and receipts.&lt;/p&gt;

&lt;p&gt;You can follow the &lt;a href="https://github.com/sidvishnoi/wm-firefox-extension-coil" rel="noopener noreferrer"&gt;instructions to run the tests and the extension here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Share feedback with WM community and Mozilla
&lt;/h3&gt;

&lt;p&gt;I've shared my implementation notes and recommendations with Mozilla, which you can also access in the &lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/wiki/Architectural-Notes" rel="noopener noreferrer"&gt;wiki&lt;/a&gt;. I'm sharing my feedback with the WM community through this report.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remaining activities
&lt;/h2&gt;

&lt;p&gt;Even though my grant period concludes with this report and all required tasks accomplished, I'll still participate in the WebMonetization community and hopefully provide useful feedback.&lt;/p&gt;

&lt;h2&gt;
  
  
  What community support would benefit your project?
&lt;/h2&gt;

&lt;p&gt;As I discussed in my previous post, a roadblock in the adoption of WebMonetization through browser extensions is the installation process itself. It's not a long process, but it certainly has more friction than merely viewing an ad. I am curious to know what you feel about the friction of installing an extension for WebMonetization and the aspects of having a default built-in extension.&lt;/p&gt;

&lt;p&gt;I would also love your feedback on how the Extension and Web APIs work for you. Please feel free to ask questions and suggest improvements!&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional comments
&lt;/h2&gt;

&lt;p&gt;I'll be writing some technical blog posts on how I prototyped Web Monetization in Firefox. &lt;a href="https://twitter.com/sid_vishnoi" rel="noopener noreferrer"&gt;Follow me on Twitter&lt;/a&gt; if you're interested!&lt;/p&gt;

&lt;h2&gt;
  
  
  Relevant links/resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Implementation of Web Monetization in Mozilla Firefox:

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/compare/bookmarks/central...webmonetization-dev" rel="noopener noreferrer"&gt;Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/releases/" rel="noopener noreferrer"&gt;Downloads&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/sidvishnoi/wm-firefox-extension-coil" rel="noopener noreferrer"&gt;Extension with Native APIs&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/sidvishnoi/wm-playground" rel="noopener noreferrer"&gt;Playground&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>grantreports</category>
    </item>
    <item>
      <title>Browser Extension vs Payment Handler API</title>
      <dc:creator>Sid Vishnoi</dc:creator>
      <pubDate>Thu, 14 Jan 2021 11:45:09 +0000</pubDate>
      <link>https://community.interledger.org/wmfirefox/browser-extension-vs-payment-handler-api-4jp5</link>
      <guid>https://community.interledger.org/wmfirefox/browser-extension-vs-payment-handler-api-4jp5</guid>
      <description>&lt;p&gt;There are two fundamental requirements to satisfy while implementing Web Monetization natively in browsers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ability to make cross-site authenticated payments in the background, and&lt;/li&gt;
&lt;li&gt;provide some context to the WM Agent to guide a payment decision (whether to pay, how much to pay etc.).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both requirements must be fulfilled while preserving the user's privacy.&lt;/p&gt;

&lt;p&gt;At a technical level, two strategies become apparent: Browser Extension and Payment Handler API. In this article, I'll weigh the pros and cons of each.&lt;/p&gt;

&lt;h2&gt;
  
  
  Browser Extension
&lt;/h2&gt;

&lt;p&gt;Extensions have been around in web browsers &lt;a href="https://en.wikipedia.org/wiki/Browser_extension#History" rel="noopener noreferrer"&gt;almost since forever&lt;/a&gt;. So, their existence is arguably known to most users.&lt;/p&gt;

&lt;p&gt;Extensions run the most privileged user-land code and have access to powerful APIs not available to regular web pages, which can come in handy with Web Monetization:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authentication:&lt;/strong&gt; An extension can access cookies at the payment provider's website to authenticate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser Sync:&lt;/strong&gt; An extension can synchronize payment decision models and stats on various devices for a user without sending the user's data to a third-party.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browsing history and payment decision:&lt;/strong&gt; Having some access to a user's browsing history and behavior can help understand whether they would be happy to pay a website more or less, ensuring money goes where the user prefers. Partial access to history (i.e., metrics like how often the user visits the current website) can help with payment decisions without disclosing what website the user is viewing - a big win for privacy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's also a bit easier to support browser-specific extension APIs than adding features to the Web Platform.&lt;/p&gt;

&lt;p&gt;The biggest roadblock in the adoption of Web Monetization as a browser extension is requiring users to install the extension in the first place. This is difficult as browser extensions appear to be more of a power user thing. The most popular Firefox add-on has &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/" rel="noopener noreferrer"&gt;4.5M users&lt;/a&gt; compared to total &lt;a href="https://data.firefox.com/dashboard/user-activity" rel="noopener noreferrer"&gt;210M Firefox users&lt;/a&gt;. That's 2% of total users. The next most popular extensions have 2M and 1M users each. Chrome has around 0.3% extension users (10M of 3B). These numbers aren't very encouraging.&lt;/p&gt;

&lt;p&gt;It's also essential to educate the users of the cost and benefits of the extension. Does the extension have too broad permissions? Is there enough incentive to learn about and install a browser extension, compared to viewing an ad that required nothing to install? Privacy-aware users agree, but what about the rest?&lt;/p&gt;

&lt;p&gt;Also, Chrome, the most used browser, doesn't support extensions on mobile at all. Though not all hope is lost as Firefox on Android supports extensions very well. Samsung Internet and iOS Safari also have partial support.&lt;/p&gt;

&lt;p&gt;A natural approach to removing the friction above could be adding a default built-in Web Monetization extension in the browser. It could be similar to how browsers let users choose search engines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Payment Handler API
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://w3c.github.io/payment-handler/" rel="noopener noreferrer"&gt;Payment Handler API&lt;/a&gt; is a proposed API that enables WebApps to handle payment requests. Technically, it lets a service worker (a kind of background worker script) of a website handle payment at another site. Presently, the API is experimental and only supported in Chrome and Edge.&lt;/p&gt;

&lt;p&gt;As a first impression, a website can conveniently request the user to install a payment handler - in a way, it's as simple as visiting a website. The browser extension certainly requires more clicks. Also, using Payment Handler and Payment Request APIs means reusing the Web Platform, and preventing &lt;a href="https://xkcd.com/927/" rel="noopener noreferrer"&gt;an entirely new standard&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It's relatively less work for a payment provider to create and publish a payment handler when compared to a browser extension. There will be the same API across all browsers, unlike extensions (though extensions should also be &lt;a href="https://github.com/browserext/browserext/" rel="noopener noreferrer"&gt;standardized&lt;/a&gt;). Publishing is as straightforward as hosting a JavaScript file on their own website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt; in a payment handler is smoother as the service worker runs on its website as a first-party, hence can authenticate requests on the same origin easily. It's also safer as a payment handler by some website X cannot authorize requests for some other website Y (unlike allowing an extension made by website X to access cookies on another site Y).&lt;/p&gt;

&lt;p&gt;Though, as a payment handler doesn't have access to a user's browsing history, it becomes difficult to model &lt;strong&gt;payment decisions&lt;/strong&gt;. A workaround could be to provide additional context in the &lt;code&gt;PaymentRequest&lt;/code&gt; call. Nevertheless, determining what context is needed by a handler, and how more or less information can be requested is difficult, and could quickly lead to privacy concerns. With extensions, browsers can provide some primitive context, and extensions can ask for more permissions if needed. Also, once added, removing things from the web platform becomes difficult.&lt;/p&gt;

&lt;p&gt;Also, the lack of a &lt;strong&gt;browser-sync&lt;/strong&gt; capability in a payment handler means user details will need to be sent to the payment provider's website if they're to be shared across devices.&lt;/p&gt;

&lt;p&gt;My initial thoughts for using the Payment Handler API were to treat the browser as an intermediary and not expose the payment handler method to the website. That is, the browser invokes the &lt;code&gt;PaymentRequest&lt;/code&gt; instead of the website. This allows the browser to supervise payments (and not the website) and provide the additional context needed for the payment decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  The way forward
&lt;/h2&gt;

&lt;p&gt;Initially, I wanted to prototype the native Web Monetization implementation using the Payment Handler API because that meant reusing the Web Platform. Unfortunately, Firefox does not support the  Payment Handler API, nor they intend to implement it any time soon. So, I went with the next best approach: a browser extension API. (It would be great if someone gets to experiment with the Payment Handler approach also!)&lt;/p&gt;

&lt;p&gt;You might wonder we can already use Web Monetization with Coil's browser extension, so &lt;strong&gt;what benefit does adding an extension API add?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most significant benefit is privacy. Presently, any extension will require complete read-write access to every website you visit. Read access is required to find the payment pointer on the current website. A malicious extension can read more than just the payment pointer. Write access is required to notify the website of the monetization progress. A malicious extension can write a lot more than monetization progress. With an extension API, the browser acts as an intermediary between the extension and a website. It provides the extension with details like whether to pay and where to pay in a privacy-preserving manner. It also provides secure communication of monetization progress to the website.&lt;/p&gt;

&lt;p&gt;Secondly, as the browser is acting as an intermediary, it can consistently inform the user of payment status and record, and allow the user more control over which sites get paid and how much.&lt;/p&gt;

&lt;p&gt;Additionally, fundamental logic can be handled by the browser, demanding less effort from extension authors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;I have already created a working implementation of the Web Monetization with the extension API in &lt;a href="https://github.com/sidvishnoi/gecko-webmonetization" rel="noopener noreferrer"&gt;my fork on Firefox&lt;/a&gt;. Shortly, I'll share with you a Firefox release that you can test and provide feedback on. I'll also try to work with Coil folks so we can have a working extension that uses the native APIs.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Edit (Jan 18, 2021):&lt;/strong&gt; Came across a &lt;a href="https://data.firefox.com/dashboard/usage-behavior" rel="noopener noreferrer"&gt;Firefox Data Dashboard&lt;/a&gt;, that shows the most popular add-on has 3.9% users (my 2% calculation was incorrect). Even better, around 35% Firefox users worldwide have at least one add-on installed. Now that's more encouraging!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Exploring integration of Web Monetization into the Web Platform — Grant Report #1</title>
      <dc:creator>Sid Vishnoi</dc:creator>
      <pubDate>Wed, 02 Dec 2020 11:20:43 +0000</pubDate>
      <link>https://community.interledger.org/wmfirefox/exploring-integration-of-web-monetization-into-the-web-platform-grant-report-1-5ama</link>
      <guid>https://community.interledger.org/wmfirefox/exploring-integration-of-web-monetization-into-the-web-platform-grant-report-1-5ama</guid>
      <description>&lt;h2&gt;
  
  
  Project Update
&lt;/h2&gt;

&lt;p&gt;The primary objectives for this milestone were to decide whether to use the &lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag and then implement the same in Gecko (Firefox's browser engine). I'm happy to inform you that both of these goals have been successfully accomplished!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spoiler alert:&lt;/strong&gt; using &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; is my recommended way forward for the Web Monetization community. More details below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Progress on objectives
&lt;/h2&gt;

&lt;p&gt;The objectives under the current milestone were:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Study relevant specifications and Gecko infrastructure.&lt;/li&gt;
&lt;li&gt;Discuss and decide whether to use the &lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; element.&lt;/li&gt;
&lt;li&gt;Integrate the said element's behavior in Gecko.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; is the way forward
&lt;/h3&gt;

&lt;p&gt;Following a &lt;a href="https://github.com/WICG/webmonetization/issues/19" rel="noopener noreferrer"&gt;discussion&lt;/a&gt; outlining various pros and cons of each tag, and a deep dive into various specifications and Gecko infrastructure, we decided to go with the &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag. This means the browser should support:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"monetization"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"URL"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"monetization"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"$paymentPointer"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a breaking change to the specification, and, because of the impact of the change, a difficult decision for the WM community to adopt. We would essentially be abandoning "payment pointers" — which are well-known in the Web Monetization community — with something that better aligns with the web platform: using regular URLs. I won't get into the technical details here, but you can read the &lt;a href="https://github.com/WICG/webmonetization/issues/19#issuecomment-705407129" rel="noopener noreferrer"&gt;summary of my research in the GitHub issue&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bringing it to the browser
&lt;/h3&gt;

&lt;p&gt;Once the WM community reached consensus to to go with the &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt;, I proceeded to implement this declarative API in a &lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/" rel="noopener noreferrer"&gt;fork of Firefox at GitHub&lt;/a&gt;. Note that the present implementation only handles the fetching and processing of the monetization endpoint (payment pointer), and not the actual monetization.&lt;/p&gt;

&lt;p&gt;You can &lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/wiki/Downloads" rel="noopener noreferrer"&gt;download&lt;/a&gt; the current implementation from GitHub. At the time of writing, it supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Getting monetization details from the first valid &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; element at any time. That is, if you add or remove or modify the link elements, the monetization info is updated. This way, dynamic monetization tags support revenue sharing and single-page applications (SPA) use cases.&lt;/li&gt;
&lt;li&gt;Monetizing only the currently visible tab in the browser (no background tabs).&lt;/li&gt;
&lt;li&gt;Fetching the payment info with proper HTTP headers, while respecting CORS policy and cache-control behavior, as defined by the &lt;a href="https://interledger.org/rfcs/0009-simple-payment-setup-protocol/" rel="noopener noreferrer"&gt;SPSP protocol&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To preserve user's privacy, no referrer information (i.e., the URL of current website) or cookies are sent to the monetization receiver (e.g. Uphold).&lt;/li&gt;
&lt;li&gt;Allowing only legitimate payment pointers through the use of a Content Security Policy (CSP). By using the &lt;code&gt;monetization-src &amp;lt;source&amp;gt;;&lt;/code&gt; CSP directive, we can enforce monetizing only certain payment pointers so that malicious actors cannot steal your money.&lt;/li&gt;
&lt;li&gt;Logging error messages and other information to the browser console.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A more up-to-date &lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/wiki/Implementation-Status" rel="noopener noreferrer"&gt;implementation status&lt;/a&gt; can be read in the project's &lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/wiki" rel="noopener noreferrer"&gt;wiki&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The implementation presently does not support monetization of embedded content like iframes. That needs more discussion from the security and performance perspective, and also requires specification of various edge cases. Nevertheless, those cases have been captured in a &lt;a href="https://github.com/WICG/webmonetization/issues/28" rel="noopener noreferrer"&gt;GitHub issue&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key activities
&lt;/h2&gt;

&lt;p&gt;Note: This section contains some technical details and my journey.&lt;/p&gt;

&lt;h3&gt;
  
  
  Initial research
&lt;/h3&gt;

&lt;p&gt;I started with going through with various specifications, specifically HTML, DOM, Fetch, InterLedger Protocol, Payment Pointers, Web Monetization, W3C Tag Design Principles, RFC8288 (Web Linking) and RFC2718 (Guidelines for new URL Schemes), to get a better understanding of the platform as a whole.&lt;/p&gt;

&lt;p&gt;After familiarizing myself with the specs, I went through Firefox code-base and documentation to analyze how the existing Gecko infrastructure can be used to support &lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; monetization tags.&lt;/p&gt;

&lt;p&gt;After studying for a few weeks and various discussions with &lt;a href="https://github.com/marcoscaceres/" rel="noopener noreferrer"&gt;Marcos Cáceres&lt;/a&gt;, I started to summarize my notes into a &lt;a href="https://github.com/WICG/webmonetization/issues/19#issuecomment-705407129" rel="noopener noreferrer"&gt;write-up&lt;/a&gt; that can be used by the Web Monetization community to settle the debate whether we should move forward with &lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag.&lt;/p&gt;

&lt;p&gt;As of today, we've settled on using the &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set up development environment
&lt;/h3&gt;

&lt;p&gt;Now as we can't just implement a specification that is not presently on standards track into a browser, I created my own &lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/" rel="noopener noreferrer"&gt;fork&lt;/a&gt; of Firefox on GitHub. This allowed me to prototype quickly, without the hassle of integrating a particular feature flag for Web Monetization (generally, something that can be time consuming to add).&lt;/p&gt;

&lt;p&gt;Aside: One thing I found interesting is that GitHub doesn't let you push a large repository (4GB in this case) in one go. I had to write a script to split the repository into smaller batches of commits and push them instead (that took a while).&lt;/p&gt;

&lt;p&gt;I'll write more on temporarily maintaining a fork of a project as large as Firefox, and my Firefox development workflow some other day on my website.&lt;/p&gt;

&lt;h3&gt;
  
  
  Let the coding begin!
&lt;/h3&gt;

&lt;p&gt;The easiest part was to support the &lt;code&gt;HTMLLinkElement.relList.supports()&lt;/code&gt; API. I just had to &lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/commit/540aee09e2cbbeed74b60c1e3a54d66cbd275171" rel="noopener noreferrer"&gt;add&lt;/a&gt; a new string literal for &lt;code&gt;rel="monetization"&lt;/code&gt;. This can be easily used to detect whether a browser supports Web Monetization. Feels good to see some quick progress - git commit!&lt;/p&gt;

&lt;p&gt;During the earlier prototyping, I decided to implement the &lt;code&gt;&amp;lt;link rel=monetization&amp;gt;&lt;/code&gt; support &lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/compare/webmonetization-cpp" rel="noopener noreferrer"&gt;entirely in C++&lt;/a&gt;, as it would've been more performant and would &lt;em&gt;easily&lt;/em&gt; allow low level communication with the WM agent. But after getting stuck at various times to reach a half working implementation, I asked some Mozilla engineers and &lt;a href="https://github.com/emilio" rel="noopener noreferrer"&gt;Emilio&lt;/a&gt; advised me to try prototyping in JSM (a Mozilla dialect of JavaScript modules that can talk directly to privileged browser code). Let's say that turned out to be a much more delightful experience than fighting with the linker in C++! Funnily, 2 lines of JS had the same effect as 300 lines of C++ (this is not a language comparison, but related to Gecko's architecture).&lt;/p&gt;

&lt;p&gt;The JSM approach required a change in thinking — from low level hyper-optimized stuff to high level design. Though, it felt weird to not have any type-checking/hinting support in the editor — I had to jump into WebIDL definitions to understand what JSM can do. Fast forward a few days, I had a working implementation of what's mentioned above (except CSP, which required a lot more fiddling across 18 files).&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a Nightly release
&lt;/h3&gt;

&lt;p&gt;Satisfied with the current implementation, I created a Firefox Nightly release for you to try! You can find the download links in the &lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/wiki/Downloads" rel="noopener noreferrer"&gt;wiki&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After extracting the downloaded archives, you need to run it from command line as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./firefox &lt;span class="nt"&gt;--jsconsole&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--jsconsole&lt;/code&gt; flag opens Firefox with a "multi process browser console" window, which will display various Web Monetization metadata, logs and error messages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remaining activities
&lt;/h2&gt;

&lt;p&gt;Next, I'll work towards bringing the actual Web Monetization support in Firefox. For this, we'll first need to specify the role of WM agent (browser extension) and the communication between the WM agent, browser, and the website. Once that's done, we'll hopefully have a working native implementation of Web Monetization. While we discuss and decide above, we'll try to formalize the specification based on the things we've learned so far.&lt;/p&gt;

&lt;p&gt;We're already discussing the &lt;a href="https://github.com/WICG/webmonetization/issues/133" rel="noopener noreferrer"&gt;role of WM agent&lt;/a&gt; over GitHub. Feel free to join!&lt;/p&gt;

&lt;h2&gt;
  
  
  What community support would benefit your project?
&lt;/h2&gt;

&lt;p&gt;I'm curious to understand how we should go with the monetization of iframes and other embedded content like images and videos. Say, you're the page owner, how do you think we should monetize third party content embedded in your site? Conversely, how would you like your content to be monetized if it's embedded in some other website? One idea that comes to mind is to only allow the visible content to be monetized as the user scrolls through the site, but it adds quite a lot of complexity to the browser and has many edge cases. Is this something you would love to see in the first version of the Web Monetization standard, or it can be deferred for later? Let us know what you think in comments below or at &lt;a href="https://github.com/WICG/webmonetization/issues/28" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional comments
&lt;/h2&gt;

&lt;p&gt;Thanks to the Grant for the Web for supporting my workstation purchase. I can't emphasize enough what a difference this has made to my development flow: I'm able to compile Gecko in record time - nearly 7 minutes, compared to 80 minutes on my previous laptop. This enabled me to quickly prototype various implementation strategies without wasting hours waiting for Gecko to compile!&lt;/p&gt;

&lt;h2&gt;
  
  
  Relevant links/resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Implementation of Web Monetization in Mozilla Firefox:

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/compare/webmonetization" rel="noopener noreferrer"&gt;Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sidvishnoi/gecko-webmonetization/wiki/Downloads" rel="noopener noreferrer"&gt;Downloads&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>grantreports</category>
    </item>
    <item>
      <title>Hello from the browser side</title>
      <dc:creator>Sid Vishnoi</dc:creator>
      <pubDate>Sun, 22 Nov 2020 18:04:39 +0000</pubDate>
      <link>https://community.interledger.org/wmfirefox/hello-from-the-browser-side-14g8</link>
      <guid>https://community.interledger.org/wmfirefox/hello-from-the-browser-side-14g8</guid>
      <description>&lt;p&gt;Hello! I'm Sid, an independent software developer and a technical scholar for Grant for the Web. I am exploring how Web Monetization can be integrated into a web browser, in this case, Mozilla Firefox. For Web Monetization to become viable, native support in browsers seems somewhat critical. &lt;/p&gt;

&lt;p&gt;The goals of this project are two-fold:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create a reference implementation&lt;/strong&gt; of the Web Monetization specification in Gecko/Firefox (Desktop). This would allow the WM community to evaluate the implementability and feasibility of Web Monetization in a browser's engine. This would also allow the WM community to see what existing web infrastructure can be leveraged and also figure out if any new technology or protocols are needed - and things that may need to be standardized.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify the specification&lt;/strong&gt; through implementation, which allows us to inform the standardization process (i.e., what is and isn’t feasible, as well as anything that might be under-specified).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me know in comments if you would like additional details on the scope of the project. In my next post, I'll share details on the progress we've made so far and where we're headed.&lt;/p&gt;

</description>
      <category>research</category>
      <category>welcome</category>
    </item>
  </channel>
</rss>
