<?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>Forem: azu</title>
    <description>The latest articles on Forem by azu (@azu).</description>
    <link>https://forem.com/azu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F36853%2Fe84f3e3c-3098-4ba3-8197-a0831631fb44.png</url>
      <title>Forem: azu</title>
      <link>https://forem.com/azu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/azu"/>
    <language>en</language>
    <item>
      <title>JSer.info 15th Anniversary: Looking Back at 15 Years of JavaScript</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Fri, 16 Jan 2026 11:25:00 +0000</pubDate>
      <link>https://forem.com/azu/jserinfo-15th-anniversary-looking-back-at-15-years-of-javascript-4fhe</link>
      <guid>https://forem.com/azu/jserinfo-15th-anniversary-looking-back-at-15-years-of-javascript-4fhe</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This article is a translation of the Japanese article: &lt;a href="https://jser.info/2026/01/16/jser-info-15th/" rel="noopener noreferrer"&gt;JSer.info 15周年: 15年間のJavaScriptを振り返る&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is JSer.info?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://jser.info" rel="noopener noreferrer"&gt;JSer.info&lt;/a&gt; is a weekly JavaScript newsletter that has been running since January 16, 2011. It curates and summarizes the latest JavaScript-related articles, libraries, and tools from around the web, delivering them to readers every week. The goal is to "organize JavaScript information and deliver it accurately."&lt;/p&gt;




&lt;p&gt;&lt;a href="https://jser.info" rel="noopener noreferrer"&gt;JSer.info&lt;/a&gt;, which started on January 16, 2011, celebrates its 15th anniversary on January 16, 2026 🎉&lt;/p&gt;

&lt;p&gt;Over 15 years, JSer.info has published 820 articles and introduced 13,606 sites/articles/libraries. Weekly updates have continued for 15 years straight.&lt;/p&gt;

&lt;p&gt;In this article, we'll look back at JSer.info's data over 15 years and see how the JavaScript ecosystem has changed.&lt;/p&gt;

&lt;p&gt;Note that the data in this article reflects trends in articles introduced on JSer.info and doesn't represent the entire JavaScript ecosystem.&lt;br&gt;
Also, please note that JSer.info's posting frequency decreased in 2024-2025, which affects the 2025 data showing a declining trend.&lt;/p&gt;


&lt;h2&gt;
  
  
  Basic Statistics Over 15 Years
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total Posts&lt;/td&gt;
&lt;td&gt;820&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Articles Introduced&lt;/td&gt;
&lt;td&gt;13,606&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operating Period&lt;/td&gt;
&lt;td&gt;January 2011 - January 2026 (15 years)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average Update Frequency&lt;/td&gt;
&lt;td&gt;Weekly&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Looking at articles introduced per year, the peak was 1,269 in 2013, and recent years have stabilized around 600-700. Meanwhile, the average length of article descriptions has roughly doubled over 15 years, showing a shift from "quantity to quality."&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Articles Introduced&lt;/th&gt;
&lt;th&gt;Posts&lt;/th&gt;
&lt;th&gt;Per Post&lt;/th&gt;
&lt;th&gt;Avg. Description Length&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2011&lt;/td&gt;
&lt;td&gt;915&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;14.1&lt;/td&gt;
&lt;td&gt;62 chars&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2013&lt;/td&gt;
&lt;td&gt;1,269&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;22.3&lt;/td&gt;
&lt;td&gt;58 chars&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2017&lt;/td&gt;
&lt;td&gt;1,068&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;td&gt;19.8&lt;/td&gt;
&lt;td&gt;79 chars&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2019&lt;/td&gt;
&lt;td&gt;790&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;14.9&lt;/td&gt;
&lt;td&gt;90 chars&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2021&lt;/td&gt;
&lt;td&gt;789&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;14.9&lt;/td&gt;
&lt;td&gt;101 chars&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025&lt;/td&gt;
&lt;td&gt;552&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;13.5&lt;/td&gt;
&lt;td&gt;108 chars&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_basic_stats_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvmr592rmb1c441ha25n3.png" alt="Basic Statistics Over 15 Years" width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, the posting pace dropped slightly in 2025, reducing the number of posts.&lt;br&gt;
Therefore, please note that the subsequent data also shows a declining trend in 2025.&lt;/p&gt;


&lt;h2&gt;
  
  
  Changes in Information Sources: From Personal Blogs to Official Documentation
&lt;/h2&gt;

&lt;p&gt;The most significant change over 15 years is the composition of information sources.&lt;/p&gt;
&lt;h3&gt;
  
  
  Early Period (2011-2013) Main Sources
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;github.com (327)&lt;/li&gt;
&lt;li&gt;d.hatena.ne.jp (154)&lt;/li&gt;
&lt;li&gt;slideshare.net (147)&lt;/li&gt;
&lt;li&gt;amazon.co.jp (98)&lt;/li&gt;
&lt;li&gt;amazon.com (83)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Middle Period (2017-2019) Main Sources
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;github.com (828)&lt;/li&gt;
&lt;li&gt;medium.com (134)&lt;/li&gt;
&lt;li&gt;developers.google.com (103)&lt;/li&gt;
&lt;li&gt;webkit.org (69)&lt;/li&gt;
&lt;li&gt;nodejs.org (64)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Late Period (2023-2025) Main Sources
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;github.com (568)&lt;/li&gt;
&lt;li&gt;nodejs.org (98)&lt;/li&gt;
&lt;li&gt;bun.sh (62)&lt;/li&gt;
&lt;li&gt;zenn.dev (56)&lt;/li&gt;
&lt;li&gt;developer.chrome.com (55)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While GitHub has consistently been the largest information source, the surrounding landscape has changed significantly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_info_sources_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2lr36os7hyabdxduc3p0.png" alt="Changes in Information Sources" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the early period, &lt;strong&gt;Hatena Diary&lt;/strong&gt;, &lt;strong&gt;SlideShare&lt;/strong&gt;, and &lt;strong&gt;Amazon (books)&lt;/strong&gt; ranked high. It was an era when personal blogs, conference slides, and books were primary information sources.&lt;/p&gt;

&lt;p&gt;In the middle period, &lt;strong&gt;Medium&lt;/strong&gt; became prominent, and browser vendors' &lt;strong&gt;official documentation/blogs&lt;/strong&gt; (like developers.google.com and webkit.org) entered the top ranks. Personal blog platforms shifted from Hatena to Medium, while primary information from browser vendors became more valued.&lt;/p&gt;

&lt;p&gt;In the late period, &lt;strong&gt;official documentation/blogs&lt;/strong&gt; (nodejs.org, developer.chrome.com, bun.sh) and &lt;strong&gt;zenn.dev&lt;/strong&gt; rank high. Medium has disappeared, and direct access to primary sources has increased.&lt;/p&gt;
&lt;h3&gt;
  
  
  Changes in Content Types
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;2011-2013&lt;/th&gt;
&lt;th&gt;2014-2016&lt;/th&gt;
&lt;th&gt;2017-2019&lt;/th&gt;
&lt;th&gt;2020-2022&lt;/th&gt;
&lt;th&gt;2023-2025&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Release Notes&lt;/td&gt;
&lt;td&gt;560&lt;/td&gt;
&lt;td&gt;750&lt;/td&gt;
&lt;td&gt;862&lt;/td&gt;
&lt;td&gt;937&lt;/td&gt;
&lt;td&gt;986&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tutorial Articles&lt;/td&gt;
&lt;td&gt;719&lt;/td&gt;
&lt;td&gt;692&lt;/td&gt;
&lt;td&gt;813&lt;/td&gt;
&lt;td&gt;617&lt;/td&gt;
&lt;td&gt;526&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Libraries/Tools&lt;/td&gt;
&lt;td&gt;371&lt;/td&gt;
&lt;td&gt;599&lt;/td&gt;
&lt;td&gt;446&lt;/td&gt;
&lt;td&gt;397&lt;/td&gt;
&lt;td&gt;191&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slides/Videos&lt;/td&gt;
&lt;td&gt;292&lt;/td&gt;
&lt;td&gt;309&lt;/td&gt;
&lt;td&gt;170&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;49&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Book-related&lt;/td&gt;
&lt;td&gt;192&lt;/td&gt;
&lt;td&gt;203&lt;/td&gt;
&lt;td&gt;135&lt;/td&gt;
&lt;td&gt;73&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tutorials&lt;/td&gt;
&lt;td&gt;97&lt;/td&gt;
&lt;td&gt;154&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_content_types_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8mfzlos4zybvazokipjw.png" alt="Changes in Content Types" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Release notes have consistently increased. Meanwhile, learning content like slides/videos, books, and tutorials has decreased. This reflects how official documentation has become richer and GitHub release notes have become the center of information sharing, reducing the introduction of conference slides and books.&lt;/p&gt;


&lt;h2&gt;
  
  
  Evolution of Japanese Blog Platforms
&lt;/h2&gt;

&lt;p&gt;Japanese tech blogs introduced on JSer.info have seen major platform shifts over 15 years.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Hatena&lt;/th&gt;
&lt;th&gt;Qiita&lt;/th&gt;
&lt;th&gt;Zenn&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2011&lt;/td&gt;
&lt;td&gt;92&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2014&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2016&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2021&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2024&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The platform flow has been &lt;strong&gt;Hatena Diary/Hatena Blog → Qiita → Zenn&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_jp_platforms_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffawsu1y7duoh2g4nwigz.png" alt="Evolution of Japanese Blog Platforms" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, the proportion of Japanese sources overall has gradually decreased, stabilizing around 5%.&lt;br&gt;
(This is based on titles only, so the actual percentage might be slightly higher.)&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Japanese Sources&lt;/th&gt;
&lt;th&gt;Total&lt;/th&gt;
&lt;th&gt;Percentage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2011&lt;/td&gt;
&lt;td&gt;203&lt;/td&gt;
&lt;td&gt;915&lt;/td&gt;
&lt;td&gt;22.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2012&lt;/td&gt;
&lt;td&gt;194&lt;/td&gt;
&lt;td&gt;1126&lt;/td&gt;
&lt;td&gt;17.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2013&lt;/td&gt;
&lt;td&gt;150&lt;/td&gt;
&lt;td&gt;1269&lt;/td&gt;
&lt;td&gt;11.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2014&lt;/td&gt;
&lt;td&gt;114&lt;/td&gt;
&lt;td&gt;1147&lt;/td&gt;
&lt;td&gt;9.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2015&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;1043&lt;/td&gt;
&lt;td&gt;7.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2016&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;td&gt;1078&lt;/td&gt;
&lt;td&gt;8.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2017&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;1068&lt;/td&gt;
&lt;td&gt;6.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2018&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;921&lt;/td&gt;
&lt;td&gt;6.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2019&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;790&lt;/td&gt;
&lt;td&gt;3.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;810&lt;/td&gt;
&lt;td&gt;3.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2021&lt;/td&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;789&lt;/td&gt;
&lt;td&gt;5.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;712&lt;/td&gt;
&lt;td&gt;4.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;737&lt;/td&gt;
&lt;td&gt;5.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2024&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;638&lt;/td&gt;
&lt;td&gt;6.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;552&lt;/td&gt;
&lt;td&gt;4.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_japanese_rate_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnd2o3d2znpzh5cidw5z0.png" alt="Japanese Source Percentage Trend" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This isn't because JSer.info intentionally avoids Japanese sources, but rather reflects that primary JavaScript information sources are almost entirely in English. Browser vendors, official sites/projects, and maintainers of major libraries almost always publish information in English.&lt;/p&gt;


&lt;h2&gt;
  
  
  Technology Trend Changes
&lt;/h2&gt;
&lt;h3&gt;
  
  
  UI Frameworks: jQuery → Angular → React
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;jQuery&lt;/th&gt;
&lt;th&gt;Angular&lt;/th&gt;
&lt;th&gt;React&lt;/th&gt;
&lt;th&gt;Vue&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2011&lt;/td&gt;
&lt;td&gt;109&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2013&lt;/td&gt;
&lt;td&gt;86&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2014&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;49&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2015&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;103&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2017&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;153&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2019&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;84&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2021&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;84&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;82&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;jQuery was most mentioned in 2011, Angular/React/Vue started increasing around 2013/2014, and React grew significantly in 2015. React peaked at 153 mentions in 2017, then entered a stable period.&lt;/p&gt;

&lt;p&gt;In 2025, React mentions are about half of the peak, indicating that React itself has matured and there's less weekly news to cover.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_ui_frameworks_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqz7meifz1vlv639gaqdw.png" alt="UI Framework Trends" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Build Tools: webpack → Vite
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;webpack&lt;/th&gt;
&lt;th&gt;Rollup&lt;/th&gt;
&lt;th&gt;esbuild&lt;/th&gt;
&lt;th&gt;Vite&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2016&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2017&lt;/td&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;webpack peaked in 2017 and was frequently discussed until 2020.&lt;br&gt;
Meanwhile, esbuild emerged in 2020, and by 2022, Vite mentions surpassed webpack.&lt;/p&gt;

&lt;p&gt;Since esbuild's emergence, JSer.info has introduced more tools written in Rust and Go. This reflects a change in expectations around performance, breaking the assumption that "JavaScript tools are written in JavaScript."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_build_tools_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuf1gb6sinvbzfph8q2wv.png" alt="Build Tool Trends" width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Runtimes: From Node.js Dominance to Diversification
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Deno&lt;/th&gt;
&lt;th&gt;Bun&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2020&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2021&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2024&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Deno 1.0 was released in 2020, and Bun emerged in 2022. The era transitioned from Node.js dominance to multiple competing runtimes.&lt;/p&gt;

&lt;p&gt;Particularly Bun, with regular releases since its 1.0 release in 2023, has been frequently introduced on JSer.info.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_runtimes_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6unhxqionqut4kxyddfw.png" alt="Runtime Diversification" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Technologies with Changed Mentions on JSer.info
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Technologies That Disappeared (2011-2013 → 2023-2025)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Early&lt;/th&gt;
&lt;th&gt;Late&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Backbone.js&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CoffeeScript&lt;/td&gt;
&lt;td&gt;71&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AMD/RequireJS&lt;/td&gt;
&lt;td&gt;74&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grunt&lt;/td&gt;
&lt;td&gt;49&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PhantomJS&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bower&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These technologies were widely used at the time but are no longer covered on JSer.info.&lt;/p&gt;

&lt;p&gt;Backbone.js and CoffeeScript were frequently introduced around 2011-2012. AMD and RequireJS pioneered module systems but completed their role with ES Modules standardization. Grunt/Gulp were replaced by npm scripts and build tools, and PhantomJS was superseded by Puppeteer/Playwright.&lt;/p&gt;
&lt;h3&gt;
  
  
  Technologies with Increased Mentions
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Early&lt;/th&gt;
&lt;th&gt;Late&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESM/import&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;117&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rust&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WebAssembly&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;51&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;monorepo&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;ECMAScript Modules were specified in ES2015, but became practically usable in both browsers and Node.js after 2020.&lt;/p&gt;

&lt;p&gt;Rust mentions relate to toolchains like SWC/Rspack/Biome/OxC. Performance-critical parts of the JavaScript ecosystem are increasingly written in Rust or Go.&lt;br&gt;
In 2025, &lt;a href="https://devblogs.microsoft.com/typescript/typescript-native-port/" rel="noopener noreferrer"&gt;TypeScript compiler itself was announced to be rewritten in Go&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;WebAssembly was announced in 2015, and JSer.info mentions increased around 2017. While the monorepo concept existed long before, it gained attention in the JavaScript ecosystem after Lerna (2016) and npm/yarn workspaces.&lt;br&gt;
Now, package managers like npm/yarn/pnpm officially support monorepos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_tech_changes_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqgs3piue6c5fkcqy24i.png" alt="Technologies with Changed Mentions" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Changes in Cross-Cutting Topics
&lt;/h2&gt;

&lt;p&gt;Let's look at the trends of technology-agnostic, cross-cutting topics.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Types&lt;/th&gt;
&lt;th&gt;Testing&lt;/th&gt;
&lt;th&gt;Performance&lt;/th&gt;
&lt;th&gt;Security&lt;/th&gt;
&lt;th&gt;a11y&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2011&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2014&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;87&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2017&lt;/td&gt;
&lt;td&gt;108&lt;/td&gt;
&lt;td&gt;86&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020&lt;/td&gt;
&lt;td&gt;123&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2021&lt;/td&gt;
&lt;td&gt;129&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025&lt;/td&gt;
&lt;td&gt;88&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Types (TypeScript)&lt;/strong&gt; mentions peaked in 2021 (129) and have since declined. This is likely because TypeScript has become "standard," making "using TypeScript" itself less newsworthy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing&lt;/strong&gt; mentions peaked in 2014 (87). This was when many test frameworks like Jasmine, Mocha, and Karma were competing, and JSer.info frequently covered them. Now they've converged to Jest, Vitest, Playwright, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt; mentions peaked in 2017 (93). This was when JSer.info frequently covered webpack optimization, Tree Shaking, and code splitting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a11y (Accessibility)&lt;/strong&gt; has consistently increased, growing from 6 to 23 mentions—about 4x.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_cross_topics_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwludo0eudrud3wsoqcb2.png" alt="Cross-Cutting Topic Trends" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Changes in Information Source Types
&lt;/h2&gt;

&lt;p&gt;We classified article sources into "Official (Project/Documentation)," "GitHub," and "Personal Blogs."&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;2011-2013&lt;/th&gt;
&lt;th&gt;2014-2016&lt;/th&gt;
&lt;th&gt;2017-2019&lt;/th&gt;
&lt;th&gt;2020-2022&lt;/th&gt;
&lt;th&gt;2023-2025&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Official&lt;/td&gt;
&lt;td&gt;204&lt;/td&gt;
&lt;td&gt;294&lt;/td&gt;
&lt;td&gt;467&lt;/td&gt;
&lt;td&gt;471&lt;/td&gt;
&lt;td&gt;479&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;506&lt;/td&gt;
&lt;td&gt;1,015&lt;/td&gt;
&lt;td&gt;910&lt;/td&gt;
&lt;td&gt;903&lt;/td&gt;
&lt;td&gt;596&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Personal Blogs&lt;/td&gt;
&lt;td&gt;213&lt;/td&gt;
&lt;td&gt;194&lt;/td&gt;
&lt;td&gt;141&lt;/td&gt;
&lt;td&gt;76&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Official: Official sites/documentation like nodejs.org, webkit.org, reactjs.org, eslint.org&lt;/li&gt;
&lt;li&gt;GitHub: github.com, github.io&lt;/li&gt;
&lt;li&gt;Personal Blogs: Hatena, Qiita, Zenn, medium.com/@personal, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_publisher_types_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F963wckawcef3o9wqzh89.png" alt="Changes in Information Source Types" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In comparison, in 2011-2013, personal blogs and official sources were almost equal (213 vs 204), but in 2023-2025, official blogs/documentation is about 7x personal blogs (479 vs 70). As official documentation and project sites have enriched their information sharing, JSer.info's featured sources have become centered on official sites.&lt;/p&gt;


&lt;h2&gt;
  
  
  Changes in Development Practices
&lt;/h2&gt;

&lt;p&gt;Topics related to development methods have also changed.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Practice&lt;/th&gt;
&lt;th&gt;2011-2013&lt;/th&gt;
&lt;th&gt;2017-2019&lt;/th&gt;
&lt;th&gt;2023-2025&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CI/CD&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Migration&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RFC/Proposal&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;73&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breaking Change&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Increased &lt;strong&gt;RFC/Proposal&lt;/strong&gt; mentions reflect ECMAScript adopting the Stage system in ES2015, making Proposals more frequently introduced, and more libraries/frameworks adopting RFC processes.&lt;/p&gt;

&lt;p&gt;Increased &lt;strong&gt;Migration&lt;/strong&gt; mentions indicate ecosystem maturity. "How to update existing codebases" has become an important theme—migration to new technologies, major version upgrades, and legacy code renewal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_dev_practices_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1qo0566zwheljve2uoj.png" alt="Changes in Development Practices" width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Summary of 15 Years of Change
&lt;/h2&gt;

&lt;p&gt;Here's a summary of changes visible from JSer.info's 15 years of data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_summary_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fun0w6k3m55mgoxc1novi.png" alt="Summary of 15 Years of Change" width="800" height="588"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Changes to JSer.info Itself
&lt;/h2&gt;

&lt;p&gt;JSer.info itself has changed over 15 years.&lt;/p&gt;
&lt;h3&gt;
  
  
  Technical Changes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;2014: Migrated from Tumblr to GitHub Pages&lt;/li&gt;
&lt;li&gt;2015: Realtime JSer.info launched&lt;/li&gt;
&lt;li&gt;2016: HTTPS enabled, Ping feature added&lt;/li&gt;
&lt;li&gt;2021: &lt;a href="https://jser.info/policy/" rel="noopener noreferrer"&gt;JSer.info Policy&lt;/a&gt; published&lt;/li&gt;
&lt;li&gt;2023: &lt;a href="https://jser.info/watch-list/" rel="noopener noreferrer"&gt;JSer.info Watch List&lt;/a&gt; published&lt;/li&gt;
&lt;li&gt;2025: MCP writing assistance, AI-generated headlines introduced&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Operational Changes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Weekly updates maintained for 15 years&lt;/li&gt;
&lt;li&gt;Workflow built entirely on GitHub&lt;/li&gt;
&lt;li&gt;Introduced automatic categorization, auto-tagging, and headline generation&lt;/li&gt;
&lt;li&gt;Article posting via &lt;a href="https://github.com/azu/postem" rel="noopener noreferrer"&gt;postem&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jser.info/ko/" rel="noopener noreferrer"&gt;Korean version&lt;/a&gt; translation (thanks to @uyeong, &lt;a class="mentioned-user" href="https://dev.to/rewrite0w0"&gt;@rewrite0w0&lt;/a&gt;, and @Serzhul)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Progress on the "Make It Replaceable" Goal
&lt;/h3&gt;

&lt;p&gt;In &lt;a href="https://jser.info/2022/01/16/11-years/" rel="noopener noreferrer"&gt;JSer.info 11th Anniversary&lt;/a&gt;, we set a goal to "make it replaceable by 2025." While complete replaceability hasn't been achieved, the update workflow has changed significantly through AI utilization.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjser.info%2Fuploads%2Fmedia%2F2026%2F15th%2F15th_jser_info_flow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjser.info%2Fuploads%2Fmedia%2F2026%2F15th%2F15th_jser_info_flow.png" alt="JSer.info Update Flow" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;JSer.info Update Flow 2025 - From &lt;a href="https://azu.github.io/slide/2025/yapc/opensource-15years.html" rel="noopener noreferrer"&gt;YAPC::Fukuoka 2025 presentation&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In &lt;a href="https://jser.info/about/" rel="noopener noreferrer"&gt;About JSer.info&lt;/a&gt;, we wrote "minimizing the burden on me for updates and enabling smooth operation is key to continuity." Current JSer.info has automated many parts from information gathering to PR creation, tagging, grouping, and headline generation. Human focus has shifted to information judgment—what to introduce and how to communicate it.&lt;br&gt;
Boring tasks are automated, allowing concentration on the valuable part: judgment.&lt;/p&gt;

&lt;p&gt;For details, see the &lt;a href="https://azu.github.io/slide/2025/yapc/opensource-15years.html" rel="noopener noreferrer"&gt;YAPC::Fukuoka 2025 presentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  About 2025 Update Frequency
&lt;/h3&gt;

&lt;p&gt;Update frequency has dropped slightly in 2025. Analyzing personal bookmarks (input for information gathering), we've identified some causes.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Bookmarks&lt;/th&gt;
&lt;th&gt;Posts&lt;/th&gt;
&lt;th&gt;Post Interval&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2021&lt;/td&gt;
&lt;td&gt;2,862&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;6.9 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023&lt;/td&gt;
&lt;td&gt;2,373&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;6.9 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025&lt;/td&gt;
&lt;td&gt;1,033&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;8.9 days&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Bookmarks (input) have decreased 64% from the 2021 peak. Meanwhile, the bookmark-to-article rate has more than doubled. In 2021, 4 bookmarks led to 1 article; in 2025, 2 bookmarks lead to 1 article. As a result, while input decreased 64%, posts only decreased 23%.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jser.info/uploads/media/2026/15th/15th_bookmark_correlation_en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faq42osdx0p0kzfzbeol0.png" alt="Correlation Between Bookmarks and JSer.info Updates" width="800" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The cause of decrease seems to be that while I read articles, the burden of writing descriptions during bookmarking causes some to be missed.&lt;br&gt;
Now that we have numerical data, we hope to track and improve this.&lt;br&gt;
Recently, we've been adding Claude integration and other bookmark assistance features to tools like &lt;a href="https://github.com/azu/postem" rel="noopener noreferrer"&gt;postem&lt;/a&gt;, so we expect improvements.&lt;/p&gt;

&lt;p&gt;Also, I've been building an RSS reader recently, allowing JSer.info's entire information system—from RSS to collection to judgment to publication—to run on code I wrote myself.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;General flow of JSer.info's information system:

RSS Feeds → Collection → Judgment → Publication
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjser.info%2Fuploads%2Fmedia%2F2026%2F15th%2F15th_jser_info_system.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjser.info%2Fuploads%2Fmedia%2F2026%2F15th%2F15th_jser_info_system.png" alt="JSer.info Information System" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://azu.github.io/slide/2025/yapc/opensource-15years.html" rel="noopener noreferrer"&gt;YAPC::Fukuoka 2025 presentation&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This should make it technically easier to remove friction points that existed before.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;JSer.info started on January 16, 2011, and 15 years have passed.&lt;/p&gt;

&lt;p&gt;15 years ago, JavaScript was in the era of jQuery (&lt;a href="https://x.com/jquery/status/2011453468834505054" rel="noopener noreferrer"&gt;jQuery celebrated its 20th anniversary on January 14, 2026!&lt;/a&gt;) and Backbone.js/CoffeeScript. Now React, TypeScript, and Vite are frequently featured, and runtimes other than Node.js are viable options.&lt;/p&gt;

&lt;p&gt;The information sources featured on JSer.info have also changed. From conference slides and books to official documentation and GitHub release notes.&lt;/p&gt;

&lt;p&gt;In the ever-changing JavaScript ecosystem, we hope JSer.info has fulfilled its role of "organizing JavaScript information and delivering it accurately."&lt;/p&gt;




&lt;p&gt;For opinions and feedback about this article or JSer.info, please share at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;X/Twitter: &lt;a href="https://twitter.com/search?f=realtime&amp;amp;q=%23jserinfo" rel="noopener noreferrer"&gt;#jserinfo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://join.slack.com/t/jserinfo/shared_invite/zt-g2shzp7o-f_tj6OaphCAFw5Qlt2Jw0A" rel="noopener noreferrer"&gt;JSer.info Slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you to everyone who has been reading for 15 years and those who have supported us!&lt;/p&gt;




&lt;h2&gt;
  
  
  JSer.info Sponsors
&lt;/h2&gt;

&lt;p&gt;We thank those who support JSer.info through GitHub Sponsors.&lt;br&gt;
Special thanks to &lt;a href="https://cybozu.co.jp/" rel="noopener noreferrer"&gt;Cybozu, Inc.&lt;/a&gt; for their long-term support.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sponsors/azu" rel="noopener noreferrer"&gt;GitHub Sponsors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Related Links
&lt;/h2&gt;

&lt;p&gt;The JSer.info dataset used to write this article is available at &lt;a href="https://github.com/jser/dataset" rel="noopener noreferrer"&gt;jser/dataset&lt;/a&gt;.&lt;br&gt;
The DuckDB queries used for analysis are available at &lt;a href="https://github.com/jser/jser.github.io/pull/1343" rel="noopener noreferrer"&gt;jser/jser.github.io#1343&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Example of a query using DuckDB to directly load the JSer.info dataset and aggregate cross-cutting topics by year:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;duckdb &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"
SELECT
    YEAR(CAST(date AS TIMESTAMP)) as year,
    SUM(CASE WHEN LOWER(content) LIKE '%security%' OR LOWER(content) LIKE '%セキュリティ%'
        OR LOWER(content) LIKE '%脆弱性%' THEN 1 ELSE 0 END) as security,
    SUM(CASE WHEN LOWER(content) LIKE '%performance%' OR LOWER(content) LIKE '%パフォーマンス%'
        OR LOWER(content) LIKE '%高速化%' THEN 1 ELSE 0 END) as performance,
    SUM(CASE WHEN LOWER(content) LIKE '%accessib%' OR LOWER(content) LIKE '%a11y%'
        OR LOWER(content) LIKE '%アクセシビリティ%' THEN 1 ELSE 0 END) as a11y,
    SUM(CASE WHEN LOWER(content) LIKE '%test%' OR LOWER(content) LIKE '%テスト%' THEN 1 ELSE 0 END) as testing,
    SUM(CASE WHEN LOWER(content) LIKE '%型%' OR LOWER(content) LIKE '%type%' THEN 1 ELSE 0 END) as typing
FROM read_json_auto('https://jser.info/source-data/items.json', ignore_errors=true)
GROUP BY year
ORDER BY year;
"&lt;/span&gt;

┌───────┬──────────┬─────────────┬────────┬─────────┬────────┐
│ year  │ security │ performance │  a11y  │ testing │ typing │
│ int64 │  int128  │   int128    │ int128 │ int128  │ int128 │
├───────┼──────────┼─────────────┼────────┼─────────┼────────┤
│  2010 │        0 │           0 │      0 │       0 │      0 │
│  2011 │        6 │          19 │      3 │      34 │     29 │
│  2012 │        7 │          31 │      2 │      98 │     43 │
│  2013 │       11 │          28 │      7 │     118 │     69 │
│  2014 │        6 │          39 │      4 │      82 │     52 │
│  2015 │        9 │          20 │      8 │      66 │     72 │
│  2016 │       10 │          39 │     22 │      60 │     75 │
│  2017 │       13 │          69 │      5 │      72 │    104 │
│  2018 │       11 │          68 │     14 │      50 │     90 │
│  2019 │       20 │          54 │     14 │      55 │    103 │
│  2020 │       11 │          65 │      9 │      34 │    117 │
│  2021 │       23 │          54 │      8 │      39 │    124 │
│  2022 │       18 │          39 │      7 │      57 │    114 │
│  2023 │       13 │          66 │      6 │      57 │    111 │
│  2024 │       12 │          36 │      9 │      46 │     90 │
│  2025 │       14 │          30 │      9 │      34 │     86 │
│  2026 │        2 │           4 │      1 │       2 │      5 │
├───────┴──────────┴─────────────┴────────┴─────────┴────────┤
│ 17 rows                                          6 columns │
└────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://jser.info/2021/01/16/jser-10th/" rel="noopener noreferrer"&gt;JSer.info 10th Anniversary: How to Collect, Write, and Organize JavaScript Information&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jser.info/2022/01/16/11-years/" rel="noopener noreferrer"&gt;JSer.info 11th Anniversary: Goal is to Make It Replaceable by 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jser.info/2023/01/16/jser-12th/" rel="noopener noreferrer"&gt;JSer.info 12th Anniversary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jser.info/2024/01/16/jser-13th/" rel="noopener noreferrer"&gt;JSer.info 13th Anniversary: Organizing JavaScript Information Sources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jser.info/2025/05/24/jser-14th/" rel="noopener noreferrer"&gt;JSer.info 14th Anniversary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>newsletter</category>
      <category>opensource</category>
    </item>
    <item>
      <title>My GitHub Sponsors Revenue @ 2023</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Tue, 26 Dec 2023 11:05:48 +0000</pubDate>
      <link>https://forem.com/azu/my-github-sponsors-revenue-2023-1m3d</link>
      <guid>https://forem.com/azu/my-github-sponsors-revenue-2023-1m3d</guid>
      <description>&lt;p&gt;I summarized the income from &lt;a href="https://github.com/sponsors"&gt;GitHub Sponsors&lt;/a&gt; in 2023.&lt;br&gt;
For the results of last year (2022), see the following article.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/azu/my-github-sponsors-revenue-2022-38ab"&gt;My GitHub Sponsors Revenue @ 2022 - DEV Community&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub Sponsors is a system that mainly supports open source activities financially.&lt;/p&gt;

&lt;p&gt;GitHub Sponsors supports individuals and organizations, but here I summarize GitHub Sponsors for individuals.&lt;br&gt;
My GitHub Sponsors is published on the following page.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sponsors/azu"&gt;Sponsor @azu on GitHub Sponsors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reason for publishing this article is to get people who are doing open source activities and people who support open source activities interested in financial support systems such as GitHub Sponsors.&lt;br&gt;
Personally, I think it is important that people who use open source can choose to pay for it.&lt;/p&gt;

&lt;p&gt;If you are interested in supporting open source, please consider using GitHub Sponsors.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/sponsors/sponsoring-open-source-contributors"&gt;Sponsoring open source contributors - GitHub Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Types of open source activities
&lt;/h2&gt;

&lt;p&gt;My open source activities are mainly as follows.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Software development: &lt;a href="https://github.com/textlint/textlint"&gt;textlint&lt;/a&gt;, &lt;a href="https://github.com/secretlint/secretlint"&gt;Secretlint&lt;/a&gt;, &lt;a&gt;HonKit&lt;/a&gt; and other development and maintenance.&lt;/li&gt;
&lt;li&gt;Web service development: &lt;a href="https://philan.net/"&gt;philan.net&lt;/a&gt;, &lt;a href="https://komesan.pages.dev/"&gt;Komesan&lt;/a&gt;, &lt;a href="https://irodr.netlify.app/"&gt;Irodr&lt;/a&gt;, etc.&lt;/li&gt;
&lt;li&gt;Blogs: Posting on &lt;a href="https://jser.info/"&gt;JSer.info&lt;/a&gt; and &lt;a href="https://ecmascript-daily.github.io/"&gt;ECMAScript Daily&lt;/a&gt; blogs&lt;/li&gt;
&lt;li&gt;Books: Writing for &lt;a href="https://jsprimer.net/"&gt;JavaScript Primer&lt;/a&gt; and &lt;a href="https://azu.github.io/promises-book/"&gt;JavaScript Promise book&lt;/a&gt; in Japanese&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically, I do it as a hobby.&lt;/p&gt;

&lt;h2&gt;
  
  
  Amount of income
&lt;/h2&gt;

&lt;p&gt;There are also two types of support options for GitHub Sponsors: Monthly and One-time.&lt;br&gt;
The amounts listed here include both amounts.&lt;br&gt;
The total amount of GitHub Sponsors received in 2023 is as follows:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Total Amount (USD)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2023&lt;/td&gt;
&lt;td&gt;$14,600&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The monthly amount of GitHub Sponsors received in 2023 is as follows:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Amount (USD)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2023/01&lt;/td&gt;
&lt;td&gt;$1,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023/02&lt;/td&gt;
&lt;td&gt;$1,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023/03&lt;/td&gt;
&lt;td&gt;$1,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023/04&lt;/td&gt;
&lt;td&gt;$1,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023/05&lt;/td&gt;
&lt;td&gt;$1,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023/06&lt;/td&gt;
&lt;td&gt;$1,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023/07&lt;/td&gt;
&lt;td&gt;$1,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023/08&lt;/td&gt;
&lt;td&gt;$1,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023/09&lt;/td&gt;
&lt;td&gt;$1,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023/10&lt;/td&gt;
&lt;td&gt;$1,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023/11&lt;/td&gt;
&lt;td&gt;$1,300&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023/12&lt;/td&gt;
&lt;td&gt;$1,300&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I received about $1,200 to $1,300 per month in 2023.&lt;/p&gt;

&lt;p&gt;📝 I live in Japan, so I actually receive it in Japanese yen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current ongoing sponsors
&lt;/h2&gt;

&lt;p&gt;A following graph summarizes information only for ongoing sponsors (CURRENT SPONSORS) as of December 2023.&lt;br&gt;
This graph does not include past sponsors (past sponsors), so basically it does not include information on One-Time sponsors.&lt;br&gt;
This graph is generated by the following tool.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/azu/github-sponsor-report"&gt;azu/github-sponsor-report: GitHub Sponsors report generator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following graph shows the number of people who continue to support us with GitHub Sponsors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QDHPDDdb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://efcl.info/wp-content/uploads/2023/12/sponsors_count.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QDHPDDdb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://efcl.info/wp-content/uploads/2023/12/sponsors_count.svg" alt="GitHub Sponsors count" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Number of GitHub Sponsors by month (Past sponsors are not included)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The following graph shows the estimated revenue per month (in US$) for GitHub Sponsors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T2797EcY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://efcl.info/wp-content/uploads/2023/12/estimated_income_dollar.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T2797EcY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://efcl.info/wp-content/uploads/2023/12/estimated_income_dollar.svg" alt="Monthly Estimated Income(Dollar)" width="800" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Estimated income from GitHub Sponsors per month (in US$)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This article summarized the income from GitHub Sponsors in 2023.&lt;/p&gt;

&lt;p&gt;I think it is important that there is a system that allows not only code contributions but also financial contributions.&lt;br&gt;
Compared to last year, I feel that more people are using GitHub Sponsors.&lt;/p&gt;

&lt;p&gt;For example, Sentry uses a service called &lt;a href="https://thanks.dev/home"&gt;thanks.dev&lt;/a&gt; to automatically distribute money to maintainers of libraries that depend on it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.sentry.io/we-just-gave-500-000-dollars-to-open-source-maintainers/"&gt;We Just Gave $500,000 to Open Source Maintainers | Product Blog • Sentry&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I think that systems like &lt;a href="https://github.com/sponsors"&gt;GitHub Sponsors&lt;/a&gt;/&lt;a href="https://opencollective.com/"&gt;Open Collective&lt;/a&gt; will continue to be discussed and new methods will be developed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Acknowledgements
&lt;/h2&gt;

&lt;p&gt;Thanks to those who support me with GitHub Sponsors!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://efcl.info/wp-content/uploads/2023/12/sponsors.svg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PYFh6fv8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://efcl.info/wp-content/uploads/2023/12/sponsors.png" alt="List of GitHub Sponsors" width="800" height="821"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This List of GitHub Sponsors generated using &lt;a href="https://github.com/antfu/sponsorkit"&gt;SponsorKit&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My sponsor page is following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sponsors/azu"&gt;Sponsor @azu on GitHub Sponsors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>sponsors</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Secretlint 6: masking API tokens in .bash_history and .zsh_history</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Tue, 03 Jan 2023 12:26:00 +0000</pubDate>
      <link>https://forem.com/azu/secretlint-6-masking-api-tokens-in-bashhistory-and-zshhistory-53an</link>
      <guid>https://forem.com/azu/secretlint-6-masking-api-tokens-in-bashhistory-and-zshhistory-53an</guid>
      <description>&lt;p&gt;We have released &lt;a href="https://github.com/secretlint/secretlint" rel="noopener noreferrer"&gt;Secretlint&lt;/a&gt; v6, which finds API tokens, passwords, and other sensitive information contained in files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/secretlint/secretlint/releases/tag/v6.0.1" rel="noopener noreferrer"&gt;Release v6.0.1 - secretlint/secretlint&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Secretlint, when executed with a glob or file, such as &lt;code&gt;secretlint "**/*"&lt;/code&gt;, finds confidential information contained in the file and prints it to standard output.&lt;br&gt;
On the other hand, unlike ESLint and textlint, Secretlint cannot be automatically modified with &lt;code&gt;--fix&lt;/code&gt;.&lt;br&gt;
This is because finding and deleting API tokens, etc. will simply break them.&lt;/p&gt;

&lt;p&gt;Therefore, any sensitive information found must be reported and manually fixed by the user.&lt;br&gt;
For example, modify it so that it is not hard-coded into the source code, but rather received in an environment variable, etc.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/secretlint/secretlint/blob/master/docs/credentials-is-secret.md" rel="noopener noreferrer"&gt;secretlint/credentials-is-secret.md at master - secretlint/secretlint - GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In most cases, you can't automatically fix any confidential information you find, but I've noticed that it's OK to automatically remove or mask any confidential information that has been left in &lt;code&gt;.bash_history&lt;/code&gt; or &lt;code&gt;.zsh_history&lt;/code&gt;.&lt;br&gt;
To automatically modify API tokens left in history files, &lt;a href="https://github.com/secretlint/secretlint" rel="noopener noreferrer"&gt;Secretlint&lt;/a&gt; v6 adds a &lt;code&gt;--format=mask-result&lt;/code&gt; formatter .&lt;/p&gt;
&lt;h2&gt;
  
  
  Usage: masking confidential information in &lt;code&gt;.zsh_history&lt;/code&gt;.
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;secretlint&lt;/code&gt; package itself does not contain rules, but the &lt;code&gt;@secretlint/quick-start&lt;/code&gt; package ships with recommended rules, so here is how to do it using &lt;code&gt;@secretlint/quick-start&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requirements: Node.js 16+&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can check if &lt;code&gt;.zsh_history&lt;/code&gt; contains sensitive information with the following command.&lt;br&gt;
(You can also check &lt;code&gt;.bash_history&lt;/code&gt; by simply changing the file name)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @secretlint/quick-start ~/.zsh_history

~/.zsh_history
  9178:25 error &lt;span class="o"&gt;[&lt;/span&gt;GITHUB_TOKEN] found GitHub Token&lt;span class="o"&gt;(&lt;/span&gt;GitHub personal access tokens&lt;span class="o"&gt;)&lt;/span&gt;: ghp_wWPw5k4aXcaT4fNP0UcnZwJUVFk6LO0pTEST  @secretlint/secretlint-rule-preset-recommend &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; @secretlint/secretlint-rule-github

✖ 1 problem &lt;span class="o"&gt;(&lt;/span&gt;1 error, 0 warnings&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If included, an error will be reported.&lt;br&gt;
Before masking this sensitive information, back up &lt;code&gt;.zsh_history&lt;/code&gt; just in case.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cp&lt;/span&gt; ~/.zsh_history ~/.zsh_history.bak
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use &lt;code&gt;--format=mask-result&lt;/code&gt; to see the results of masking sensitive information in &lt;code&gt;~/.zsh_history&lt;/code&gt; on standard output.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @secretlint/quick-start ~/.zsh_history &lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mask-result

...
: 1672748457:0&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;GITHUB_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"****************************************"&lt;/span&gt; gh issue list
...

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If all is well, use the &lt;code&gt;--output&lt;/code&gt; option to overwrite &lt;code&gt;~/.zsh_history&lt;/code&gt; with the masked results.&lt;br&gt;
(Do not overwrite with &lt;code&gt;&amp;lt;command&amp;gt; &amp;gt; ~/.zsh_history&lt;/code&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx @secretlint/quick-start ~/.zsh_history --format=mask-result --output ~/.zsh_history
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, delete the &lt;code&gt;~/.zsh_history.bak&lt;/code&gt; that you backed up.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;rm&lt;/span&gt; ~/.zsh_history.bak
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;Last month, there was a supply chain attack against PyTorch's PyTorch-nightly using Dependency Confusion.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pytorch.org/blog/compromised-nightly-dependency/" rel="noopener noreferrer"&gt;Compromised PyTorch-nightly dependency chain between December 25th and December 30th, 2022. PyTorch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;pip&lt;/code&gt; installs PyPI first (strictly speaking, &lt;code&gt;index-url&lt;/code&gt; is preferred over &lt;code&gt;extra-index-url&lt;/code&gt;) if the in-house repository (registry) and PyPI have the same package name.&lt;br&gt;
Therefore, if you upload malicious code to PyPI with the same name as a package that PyTorch-nightly depends on but was not yet in PyPI, the malware will be automatically installed when you install PyTorch-nightly.&lt;br&gt;
This problem is called Dependency Confusion.&lt;/p&gt;

&lt;p&gt;The same problem exists with npm, etc.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610" rel="noopener noreferrer"&gt;Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies | by Alex Birsan Medium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a private registry such as JFrog Artifactory is used in conjunction with a public registry, it is easy to have the same name but different contents in different registries. The following article summarizes how to deal with this Dependency Confusion, and talks about combining measures such as not mixing registries, using namespaces for package names, and using lock files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://azure.microsoft.com/ja-jp/resources/3-ways-to-mitigate-risk-using-private-package-feeds/" rel="noopener noreferrer"&gt;3 Ways to Mitigate Risk When Using Private Package Feeds&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The PyTorch-nightly malware seems to have included a process that uploads and steals files in &lt;code&gt;$HOME/*&lt;/code&gt; in addition to environment variables, system information, &lt;code&gt;/etc/hosts&lt;/code&gt;, &lt;code&gt;/etc/passwd&lt;/code&gt; and &lt;code&gt;.ssh/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;.ssh/&lt;/code&gt; directory can be managed with an SSH key, such as 1Password, so that it cannot be stolen with only the permission to read files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.1password.com/docs/ssh/" rel="noopener noreferrer"&gt;1Password for SSH &amp;amp; Git | 1Password Developer Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Credentials are often stored as raw text in &lt;code&gt;.config/&lt;/code&gt; or &lt;code&gt;~/.aws&lt;/code&gt;.&lt;br&gt;
These can be found in &lt;a href="https://github.com/1Password/shell-plugins" rel="noopener noreferrer"&gt;1Password Shell Plugins&lt;/a&gt;, &lt;a href="https://developer.1password.com/docs/cli/reference%20/commands/run" rel="noopener noreferrer"&gt;op run&lt;/a&gt;, &lt;a href="https://github.com/m-mizutani/zenv" rel="noopener noreferrer"&gt;zenv&lt;/a&gt;, &lt;a href="https://github.com/sorah/envchain" rel="noopener noreferrer"&gt;envchain&lt;/a&gt;, etc. to avoid storing raw tokens in files.&lt;/p&gt;

&lt;p&gt;Other things that can easily be credentialed in the HOME directory are shell history files such as &lt;code&gt;.zsh_history&lt;/code&gt; and &lt;code&gt;.bash_history&lt;/code&gt;.&lt;br&gt;
I was not comfortable deleting all the history files, and on the other hand, it is troublesome to check them visually, so I thought it would be a good idea to use &lt;code&gt;secretlint&lt;/code&gt; to check them automatically.&lt;/p&gt;

&lt;p&gt;Although &lt;a href="https://github.com/secretlint/secretlint" rel="noopener noreferrer"&gt;Secretlint&lt;/a&gt; does not have an automatic correction mechanism like &lt;code&gt;--fix&lt;/code&gt;, I thought it would be possible to implement a pseudo automatic correction by devising an implementation of a formatter that displays error results I implemented a &lt;code&gt;--format=mask-result&lt;/code&gt; formatter.&lt;/p&gt;

&lt;p&gt;I actually found some issues of them when I tried it, so I masked them out and removed them from the history.&lt;/p&gt;

</description>
      <category>security</category>
      <category>secretlint</category>
      <category>shell</category>
    </item>
    <item>
      <title>My GitHub Sponsors Revenue @ 2022</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Sat, 31 Dec 2022 14:03:16 +0000</pubDate>
      <link>https://forem.com/azu/my-github-sponsors-revenue-2022-38ab</link>
      <guid>https://forem.com/azu/my-github-sponsors-revenue-2022-38ab</guid>
      <description>&lt;p&gt;This is a summary of &lt;a href="https://github.com/sponsors" rel="noopener noreferrer"&gt;GitHub Sponsors&lt;/a&gt; revenue earned in 2022.&lt;br&gt;
GitHub Sponsors is primarily a mechanism to provide financial support for open source activities.&lt;/p&gt;

&lt;p&gt;GitHub Sponsors can be individuals or organizations, and this section summarizes GitHub Sponsors for myself personally.&lt;br&gt;
The GitHub Sponsors for myself (&lt;a href="https://github.com/azu" rel="noopener noreferrer"&gt;@azu&lt;/a&gt;) are listed on the following page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of open source activities
&lt;/h2&gt;

&lt;p&gt;The following are the types of open source activities that I am involved in.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Software development: &lt;a href="https://github.com/textlint/textlint" rel="noopener noreferrer"&gt;textlint&lt;/a&gt;, &lt;a href="https://github.com/secretlint/secretlint" rel="noopener noreferrer"&gt;Secretlint&lt;/a&gt;, &lt;a&gt;HonKit&lt;/a&gt; and other development and maintenance.&lt;/li&gt;
&lt;li&gt;Web service development: &lt;a href="https://philan.net/" rel="noopener noreferrer"&gt;philan.net&lt;/a&gt;, &lt;a href="https://komesan.pages.dev/" rel="noopener noreferrer"&gt;Komesan&lt;/a&gt;, &lt;a href="https://irodr.netlify.app/" rel="noopener noreferrer"&gt;Irodr&lt;/a&gt;, etc.&lt;/li&gt;
&lt;li&gt;Blogs: Posting on &lt;a href="https://jser.info/" rel="noopener noreferrer"&gt;JSer.info&lt;/a&gt; and &lt;a href="https://ecmascript-daily.github.io/" rel="noopener noreferrer"&gt;ECMAScript Daily&lt;/a&gt; blogs&lt;/li&gt;
&lt;li&gt;Books: Writing for &lt;a href="https://jsprimer.net/" rel="noopener noreferrer"&gt;JavaScript Primer&lt;/a&gt; and &lt;a href="https://azu.github.io/promises-book/" rel="noopener noreferrer"&gt;JavaScript Promise book&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are related to my job, but are hobbies.&lt;/p&gt;

&lt;p&gt;Because it is a hobby, I have almost no set quid pro quo for sponsors (I try to avoid any form of support for specific projects).&lt;br&gt;
More details about the tier design of my GitHub Sponsors can be found in the following article.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/azu/looking-back-on-two-years-of-github-sponsors-e0n"&gt;Looking Back on Two Years of GitHub Sponsors - DEV Community 👩‍💻👨‍💻&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Types of income
&lt;/h2&gt;

&lt;p&gt;Most of my open source-related income is via GitHub Sponsors.&lt;br&gt;
The &lt;a href="https://github.com/sponsors/azu" rel="noopener noreferrer"&gt;@azu's GitHub Sponsors&lt;/a&gt; page offers both Monthly and One-Time support.&lt;br&gt;
In my case, my support is based on Monthly support from GitHub Sponsors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Amount of income
&lt;/h2&gt;

&lt;p&gt;When you support us through GitHub Sponsors, you will be paid in US dollars, which will be converted to Japanese yen at the time of transfer.&lt;br&gt;
Therefore, the actual amount received will be in Japanese Yen.&lt;/p&gt;

&lt;p&gt;There are also two types of support options for GitHub Sponsors: Monthly and One-time.&lt;br&gt;
The amounts listed here include both amounts.&lt;br&gt;
The total amount of GitHub Sponsors received in 2022 is as follows&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Total Amount (US $)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2022&lt;/td&gt;
&lt;td&gt;$12,799&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The monthly amounts of GitHub Sponsors received in 2022 are as follows&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Amount (US $)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2022/01&lt;/td&gt;
&lt;td&gt;$944.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022/02&lt;/td&gt;
&lt;td&gt;$860.18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022/03&lt;/td&gt;
&lt;td&gt;$564.15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022/04&lt;/td&gt;
&lt;td&gt;$1,197.38&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022/05&lt;/td&gt;
&lt;td&gt;$1,194.30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022/06&lt;/td&gt;
&lt;td&gt;$1,021.21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022/07&lt;/td&gt;
&lt;td&gt;$1,631.31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022/08&lt;/td&gt;
&lt;td&gt;$772.74&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022/09&lt;/td&gt;
&lt;td&gt;$1,335.83&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022/10&lt;/td&gt;
&lt;td&gt;$1,140.43&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022/11&lt;/td&gt;
&lt;td&gt;$1,107.06&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022/12&lt;/td&gt;
&lt;td&gt;$1,030.18&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The reason why there is a wide range in the monthly amount is because the timing of the payment for those who support the project is divided into daily payments, so there seems to be a blurring of the amount in the timing of the transfer.&lt;br&gt;
In addition, the months with One-Time support are added to the Monthly support.&lt;br&gt;
The reason for the large increase only in July 2022 is that GitHub &lt;a href="https://maintainermonth.github.com/" rel="noopener noreferrer"&gt;Maintainer Month&lt;/a&gt; received about $500 in One-Time support from GitHub, Inc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current ongoing sponsors
&lt;/h2&gt;

&lt;p&gt;Since there is a blurring range when looking at the actual transfer timing amounts, to smooth it out, this graph summarizes information only for ongoing sponsors (CURRENT SPONSORS) as of December 2022.&lt;br&gt;
This graph does not include past sponsors (past sponsors), so basically it does not include information on One-Time sponsors.&lt;br&gt;
This graph is generated by the following tool.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/azu/github-sponsor-report" rel="noopener noreferrer"&gt;azu/github-sponsor-report: GitHub Sponsors report generator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following graph shows the number of people who continue to support us with GitHub Sponsors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fefcl.info%2Fwp-content%2Fuploads%2F2022%2F12%2Fsponsors_count.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fefcl.info%2Fwp-content%2Fuploads%2F2022%2F12%2Fsponsors_count.svg" alt="GitHub Sponsors count" width="1266" height="893"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Number of GitHub Sponsors by month (Past sponsors are not included)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The following graph shows the estimated revenue per month (in US$) for GitHub Sponsors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fefcl.info%2Fwp-content%2Fuploads%2F2022%2F12%2Festimated_income_dollar.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fefcl.info%2Fwp-content%2Fuploads%2F2022%2F12%2Festimated_income_dollar.svg" alt="Monthly Estimated Income(Dollar)" width="1096" height="893"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Estimated income from GitHub Sponsors per month (in US$)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Starting around April 2022, estimated income at GitHub Sponsors has averaged over $1,000.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion.
&lt;/h2&gt;

&lt;p&gt;This is a summary of the income that will be earned by GitHub Sponsors in 2022.&lt;/p&gt;

&lt;p&gt;The reason for publishing this article is to get people, both those who are active in open source and those who support open source, interested in financial support mechanisms such as &lt;a href="https://github.com/sponsors" rel="noopener noreferrer"&gt;GitHub Sponsors&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In my opinion, it is important to be able to choose financial support as a method of support.&lt;br&gt;
Therefore, I see &lt;a href="https://github.com/sponsors" rel="noopener noreferrer"&gt;GitHub Sponsors&lt;/a&gt; and others as a type of open source support method.&lt;/p&gt;

&lt;p&gt;There are now mechanisms such as &lt;a href="https://github.com/sponsors" rel="noopener noreferrer"&gt;GitHub Sponsors&lt;/a&gt; and &lt;a href="https://opencollective.com/" rel="noopener noreferrer"&gt;Open Collective&lt;/a&gt; that allow individuals and organizations to support open source financially as well. Both supporters and recipients should consider taking advantage of these programs.&lt;/p&gt;

&lt;p&gt;For more information on how to support using GitHub Sponsors, please see the following article.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zenn.dev/azu/articles/c48ad63e20ad75" rel="noopener noreferrer"&gt;How to support open source with GitHub Sponsors, even if you're new to it&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more information on setting up your profile and tier when accepting GitHub Sponsors, please see the following article.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/github/how-to-create-the-perfect-sponsors-profile-for-your-open-source-project-3747"&gt;How to Create a Great GitHub Sponsors Profile - DEV Community 👩💻👨💻&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/azu/looking-back-on-two-years-of-github-sponsors-e0n"&gt;Looking Back on Two Years of GitHub Sponsors - DEV Community 👩‍💻👨‍💻&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Acknowledgements
&lt;/h2&gt;

&lt;p&gt;Thanks to those who support us with GitHub Sponsors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://efcl.info/wp-content/uploads/2022/12/sponsors.svg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxlcnao0lqbdvs0masy43.png" alt="List of GitHub Sponsors" width="800" height="760"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;List of GitHub Sponsors generated using &lt;a href="https://github.com/antfu/sponsorkit" rel="noopener noreferrer"&gt;SponsorKit&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>github</category>
      <category>sponsors</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Looking Back on Two Years of GitHub Sponsors</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Thu, 28 Oct 2021 12:54:12 +0000</pubDate>
      <link>https://forem.com/azu/looking-back-on-two-years-of-github-sponsors-e0n</link>
      <guid>https://forem.com/azu/looking-back-on-two-years-of-github-sponsors-e0n</guid>
      <description>&lt;p&gt;This article is a look back on GitHub Sponsors as it has been almost two years since I started recruiting &lt;a href="https://github.com/sponsors" rel="noopener noreferrer"&gt;GitHub Sponsors&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this article, I write about the reason why I started GitHub Sponsors, the design of the tier, the result and gratitude of doing it, changes by doing it, and advice for those who will do it in the future.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1186972124180701184-698" src="https://platform.twitter.com/embed/Tweet.html?id=1186972124180701184"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1186972124180701184-698');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1186972124180701184&amp;amp;theme=dark"
  }



 &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;My Tweet notifying you that I've started GitHub Sponsors&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why Starts GitHub Sponsors
&lt;/h2&gt;

&lt;p&gt;There are several reasons why I started GitHub Sponsors.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I wanted to try using GitHub Sponsors.

&lt;ul&gt;
&lt;li&gt;GitHub is the web service I use the most, so I wanted to use the new features.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;I wanted to have a way to financially contribute to open source.

&lt;ul&gt;
&lt;li&gt;As was the case with the &lt;a href="https://azu.github.io/promises-book/" rel="noopener noreferrer"&gt;Promise book&lt;/a&gt;, the lack of a way to pay for open source is also a problem, so I wanted a place to solve this problem.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;No fees.

&lt;ul&gt;
&lt;li&gt;Since we're basically looking to continue, it's important that there's no cost to continue&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/sponsors/receiving-sponsorships-through-%20github-sponsors/about-github-sponsors-for-open-source-contributors" rel="noopener noreferrer"&gt;About GitHub Sponsors for open source contributors - GitHub Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;GitHub is the service I use the most, so I wanted to try out GitHub Sponsors as a new feature.&lt;/p&gt;

&lt;p&gt;The other major reason is that I believe that open source users should have a way to pay for open source.&lt;br&gt;
It is important that users of open source have the option to sponsor (financially support) the open source as a way to contribute to it.&lt;/p&gt;

&lt;p&gt;There are many ways to contribute to open source, such as bug reporting/fixing, adding features, writing documentation, triage of issues and discussions, design, marketing, etc. &lt;br&gt;
One of the ways to contribute is through financial support.&lt;br&gt;
As one of the ways to get involved, I think it would be desirable for Contributors to be able to choose the option of providing financial support.&lt;/p&gt;

&lt;p&gt;The idea itself came about when I released the &lt;a href="https://azu.github.io/promises-book/" rel="noopener noreferrer"&gt;JavaScript Promise book&lt;/a&gt; as an open-source book, and readers found &lt;a href="https://github.%20com/azu/promises-book/releases/tag/1.0.1" rel="noopener noreferrer"&gt;the bug that there was no way to pay for the book&lt;/a&gt;, I thought of this when I fixed it.&lt;/p&gt;

&lt;p&gt;I use GitHub Sponsors because I often release products for myself (developers) as open source, and GitHub Sponsors was just the right way to create an option for support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Designing Tiers for GitHub Sponsors
&lt;/h2&gt;

&lt;p&gt;GitHub Sponsors offers monthly and one-time payment options.&lt;br&gt;
You can set up to 10 different tiers (10 different amounts) for each of the monthly and one-time payment methods.&lt;br&gt;
In the beginning, only monthly payment will be available.&lt;br&gt;
In April 2021, Custom Amounts and one-time payments has beed added, allowing sponsors to point to any amount.&lt;/p&gt;

&lt;p&gt;Finally, &lt;a href="https://github.com/sponsors/azu" rel="noopener noreferrer"&gt;Tier of my Sponsors&lt;/a&gt; is set as follows.&lt;br&gt;
The tier type itself has not changed much since I first created it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✨ Supporter $1 a month&lt;/li&gt;
&lt;li&gt;☕️ Coffee Supporter $5 a month&lt;/li&gt;
&lt;li&gt;🌐 Domain Supporter $10 a month&lt;/li&gt;
&lt;li&gt;📖 Book Supporter $30 a month&lt;/li&gt;
&lt;li&gt;💚 JSer.info Sponsor $100 a month&lt;/li&gt;
&lt;li&gt;❤️ Open Source Sponsor $300 a month&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📝 &lt;a href="https://jser.info/" rel="noopener noreferrer"&gt;JSer.info&lt;/a&gt; is my website in japanese. This blog is similar with JavaScript Weekly.&lt;/p&gt;

&lt;p&gt;The actual page can be seen at the following link.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sponsors/azu" rel="noopener noreferrer"&gt;Sponsor @azu on GitHub Sponsors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I believe that people who are willing to be GitHub Sponsors are willing to continue to support me because they want me to continue our activities.&lt;br&gt;
I think it's brave and amazing to continue to support them.&lt;/p&gt;

&lt;p&gt;In order to continue working on this support, I set my tier design to have as few immediate benefits as possible.&lt;/p&gt;

&lt;p&gt;There are two main reasons for this.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For the purpose of long-term activities: I envision continuous support and continuous activities.&lt;/li&gt;
&lt;li&gt;To avoid being tied to a specific project: certain benefits tend to be directly linked to a specific project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While the immediate benefits (priority support for Issues, chat support, etc.) have the advantage of being easy to encourage action, it is difficult to consider what will happen in the long term.&lt;/p&gt;

&lt;p&gt;Since the motivation of both parties (the sponsors and the sponsored) is affected by the benefits, I believe that it is difficult to intuitively grasp what will happen in the long run.&lt;/p&gt;

&lt;p&gt;On the other hand, if there is no visible benefit, it is a little more intuitive for the sponsored party to continue some kind of activity (in this case, open source activity) as an answer to the sponsored party.&lt;/p&gt;

&lt;p&gt;The ability to continue open source activities depends on people's money/time/health/motivation.&lt;br&gt;
However, &lt;a href="https://www.science.org/doi/10.1126/science.1150952" rel="noopener noreferrer"&gt;donations give positive feedback on health&lt;/a&gt;, and the fact that there are several studies that show that the money from the support can be used to save time, I am optimistic about this area.&lt;/p&gt;

&lt;p&gt;In my case, the other reason "To avoid being tied to a specific project" is also related to motivation.&lt;br&gt;
I believe that the benefits of being tied to a specific project make it easier to create a sense of responsibility for the maintenance of that project.&lt;/p&gt;

&lt;p&gt;Creating such benefits seemed to have a tendency to become a burden for me, so I tried not to incorporate benefits that are tied to a specific project as a Tier.&lt;/p&gt;

&lt;p&gt;Only "💚 JSer.info Sponsor" is somewhat special, because &lt;a href="https://azu.github.io/slide/offline_study/jser_info.html#slide5" rel="noopener noreferrer"&gt;JSer.info was intended to minimize costs from the beginning&lt;/a&gt;, &lt;a href="https://jser.info/2021/01/16/jser-10th/" rel="noopener noreferrer"&gt;JSer.info has been around for more than 10 years&lt;/a&gt;, &lt;a href="https://jser.info/policy/" rel="noopener noreferrer"&gt;JSer.info Policy&lt;/a&gt;, and so on.&lt;br&gt;
I thought that my awareness wouldn't change much with or without GitHub Sponsors, so I put them in a separate box.&lt;/p&gt;

&lt;p&gt;I think this is the part where people are free to decide what kind of Tier they want and have different ideas about it.&lt;br&gt;
Therefore, this is not the right answer, but I wrote about my Tier design again.&lt;/p&gt;

&lt;p&gt;📝 If I were to design the tiers now, I think it would be easier to reduce the number of tiers because of the Custom Amount (users can freely decide the amount).&lt;br&gt;
However, since there was no Custom Amount at first, and the Amount cannot be changed later, the Tier design is as it is now.&lt;/p&gt;

&lt;p&gt;In addition, the current Sponsor Dashboard shows the following tier ideas.&lt;br&gt;
If you are planning to set up a tier, you may want to refer to this as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  The results of recruiting GitHub Sponsors
&lt;/h2&gt;

&lt;p&gt;At the moment (2021-10-28), I have about 100+ people supporting me with GitHub Sponsors. (Thank you very much!)&lt;br&gt;
Estimated monthly income of GitHub Sponsors is $1000+.&lt;/p&gt;

&lt;p&gt;The specific number of sponsors and Monthly Estimated Income ($) have been changing in the following way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fryp6l29x4k318ll0ojec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fryp6l29x4k318ll0ojec.png" alt="Graph showing the number of GitHub sponsors"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Number of sponsors per month on GitHub Sponsors&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40it4o9b11d5tbzyut6m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40it4o9b11d5tbzyut6m.png" alt="Monthly Estimated Income"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Estimated monthly income from GitHub Sponsors in US dollars.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;About 20 people have continued to support GitHub Sponsors since the beginning of the project, and the number has been increasing at a steady pace since then.&lt;/p&gt;

&lt;p&gt;Basically, it's been a steady pace, but I think the increase in March 2021 and June to July 2021 is due to people mentioning GitHub Sponsors in their releases.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://efcl.info/2021/03/10/philan.net/" rel="noopener noreferrer"&gt;寄付をするために、寄付の予算と寄付の記録をSpreadSheetベースでつける philan.net というサービスを作った | Web Scratch&lt;/a&gt; (Japanese Blog)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://efcl.info/2021/06/28/jsprimer-3.0/" rel="noopener noreferrer"&gt;ES2021に対応したJavaScript Primer 3.0を公開しました - JavaScript入門 | Web Scratch&lt;/a&gt; (my new JavaScript Book announcement)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reason for the large change in Monthly Estimated Income between December 2020 and June 2021 is that &lt;a href="https://github.com/cybozu" rel="noopener noreferrer"&gt;Cybozu&lt;/a&gt; and &lt;a href="https://github.com/Velc" rel="noopener noreferrer"&gt;VELC&lt;/a&gt; have sponsored me.&lt;br&gt;
They have each written articles about their GitHub Sponsors as companies.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blog.cybozu.io/entry/2021/03/19/110000" rel="noopener noreferrer"&gt;GitHub Sponsorsを使って「企業」として寄付をした話 - Cybozu Inside Out | サイボウズエンジニアのブログ&lt;/a&gt; - &lt;a href="https://github.com/cybozu" rel="noopener noreferrer"&gt;Cybozu&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tamukai.blog.velc.jp/entry/2021/05/18/091040" rel="noopener noreferrer"&gt;会社（ヴェルク）としてGithub Sponsorsになりました - ヴェルク - IT起業の記録&lt;/a&gt; - &lt;a href="https://github.com/Velc" rel="noopener noreferrer"&gt;VELC&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Edit: After publishing the &lt;a href="https://efcl.info/2021/10/01/github-sponsors/" rel="noopener noreferrer"&gt;Japanese version of this article&lt;/a&gt;, the number of sponsors increased.&lt;/p&gt;

&lt;p&gt;📝 The report image used here is created with a tool called &lt;a href="https://github.com/azu/github-sponsor-report" rel="noopener noreferrer"&gt;github-sponsor-report&lt;/a&gt;. This report does not include data from people who quit in the middle of the report, so the actual number should be higher or lower. So, please take a look at it for the atmosphere.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/azu/github-sponsor-report" rel="noopener noreferrer"&gt;github-sponsor-report&lt;/a&gt; is open source, so if you want to make your own GitHub Sponsors dashboard, please use it! You can use it to create your own GitHub Sponsors dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of being supported by GitHub Sponsors
&lt;/h2&gt;

&lt;p&gt;First of all, thanks to all the GitHub Sponsors out there!&lt;/p&gt;

&lt;p&gt;One thing that has changed since I started as a GitHub Sponsor is that the financial/psychological burden of ongoing maintenance costs has eased.&lt;/p&gt;

&lt;p&gt;I've always been very cautious about increasing maintenance costs.&lt;br&gt;
I have always been cautious about increasing maintenance costs, especially for domains and subscriptions, but I think GitHub Sponsors has reduced this burden considerably.&lt;/p&gt;

&lt;p&gt;Specifically, I had a policy of not getting a domain name unless there was something wrong with it, but thanks to the existence of 🌐 Domain Supporter, I was able to get a domain name without hesitation when I created &lt;a href="https://philan.net/" rel="noopener noreferrer"&gt;philan.net&lt;/a&gt;.&lt;br&gt;
(Now I am trying to move the backend of &lt;a href="https://philan.net/" rel="noopener noreferrer"&gt;philan.net&lt;/a&gt; from Vercel to AWS, so it was a good decision to get a domain name.&lt;/p&gt;

&lt;p&gt;Also, I'm an &lt;a href="https://dl.acm.org/" rel="noopener noreferrer"&gt;ACM member&lt;/a&gt; to read Oreilly's books by subscription, and I can pay $99/year without hesitation, thanks to the existence of 📖 Book Supporter.&lt;/p&gt;

&lt;p&gt;With the financial burden offset, I felt that the psychological burden of development and learning was reduced.&lt;/p&gt;

&lt;h2&gt;
  
  
  New things I've started after recruiting GitHub Sponsors
&lt;/h2&gt;

&lt;p&gt;GitHub Sponsors has not only reduced my workload, but has also given me more opportunities to work on new things.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://philan.net/" rel="noopener noreferrer"&gt;philan.net&lt;/a&gt; is a perfect example of this.&lt;br&gt;
I was thinking about GitHub Sponsors itself, and was researching the history and structure of donations.&lt;/p&gt;

&lt;p&gt;The philan.net project I started was to create a system to manage donations and put it into practice, because the best way to learn more about how donations work is to try to donate.&lt;/p&gt;

&lt;p&gt;I looked at the ratio of the amount of commits to repositories created before I started GitHub Sponsors (2019) to the amount of commits to repositories created after I started (2020).&lt;br&gt;
The repositories I am dealing with here are Public repositories only, so Private repositories are not included.&lt;/p&gt;

&lt;p&gt;The following figure shows the number of commits made to each repository in each year of 2019 and 2020.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.google.com/spreadsheets/d/e/2PACX-1vSdSg2t8ORPGhjjWttuk8MOtnUQQwK4nsmyut97ttfj0iwbew1bnXW1v_tFKKysnZMufbbszzY0NbuT/pubhtml?gid=153014883&amp;amp;single=true" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0bz4y5vqyxj4mftm2ib6.png" alt="@azu commit count 2019 - 2020"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Spreadsheet: &lt;a href="https://docs.google.com/spreadsheets/d/1OZz4GvORzt2YORbiJPX_QzjggoviJAV2vNDJeubQfE4/edit?usp=sharing" rel="noopener noreferrer"&gt;https://docs.google.com/spreadsheets/d/1OZz4GvORzt2YORbiJPX_QzjggoviJAV2vNDJeubQfE4/edit?usp=sharing&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Source Code: &lt;a href="https://github.com/azu/github-commit-count-per-repository" rel="noopener noreferrer"&gt;https://github.com/azu/github-commit-count-per-repository&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The number of repositories committed in each period was as follows. (Only Public repositories are included).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The total number of repositories with commits in the two time periods of 2019 and 2020 is 322.&lt;/li&gt;
&lt;li&gt;Of those, 92 repositories had continuous commits in either of the two periods.&lt;/li&gt;
&lt;li&gt;The total number of repositories with commits in one or the other period is 230.

&lt;ul&gt;
&lt;li&gt;This includes temporary repositories (e.g. testing) and new repositories.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;The total number of commits in 2019 is 8073.&lt;/li&gt;

&lt;li&gt;The total number of commits in 2020 is 10656&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Continuously committed repositories include &lt;a href="https://github.com/jser" rel="noopener noreferrer"&gt;JSer.info&lt;/a&gt;, &lt;a href="https://github.com/textlint/textlint" rel="noopener noreferrer"&gt;textlint&lt;/a&gt;, and &lt;a href="https://jsprimer.net/" rel="noopener noreferrer"&gt;JavaScript Primer&lt;/a&gt;, etc.&lt;br&gt;
On the other hand, the newly created ones after the launch of GitHub Sponsors include &lt;a href="https://github.com/azu/philan.net" rel="noopener noreferrer"&gt;philan.net&lt;/a&gt;, &lt;a href="https://github.com/honkit/honkit" rel="noopener noreferrer"&gt;HonKit&lt;/a&gt;, &lt;a href="https://github.com/secretlint/secretlint" rel="noopener noreferrer"&gt;Secretlint&lt;/a&gt;, etc.&lt;/p&gt;

&lt;p&gt;This is not very accurate because it includes commits by bots such as dependabot, but I think the amount of commits to new ones is still increasing.&lt;br&gt;
It seems that some percentage of them are still committing.&lt;/p&gt;

&lt;p&gt;I've written a lot of things, but to summarize, the number of commits has increased even after starting GitHub Sponsors, and the number of repositories I've published has also increased.&lt;/p&gt;

&lt;p&gt;I've been able to challenge myself to create new things, and the ones that have some kind of demand are still being maintained.&lt;/p&gt;

&lt;h2&gt;
  
  
  For those thinking about GitHub Sponsors.
&lt;/h2&gt;

&lt;h3&gt;
  
  
  For Developer
&lt;/h3&gt;

&lt;p&gt;There are some people who do not want to receive money for their open source activities.&lt;/p&gt;

&lt;p&gt;I know there are reasons for this, such as not wanting to feel obligated or responsible for receiving money.&lt;br&gt;
However, if you try to design your own tier, you may find that it reduces the burden on your feelings, so please consider it.&lt;/p&gt;

&lt;p&gt;Of course, this does not mean that everyone should be a GitHub Sponsor, so please reconsider when the need arises.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opensource.guide/getting-paid/" rel="noopener noreferrer"&gt;Getting Paid for Open Source Work | Open Source Guides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, I recommend that you don't feel too guilty about asking people to support you.&lt;/p&gt;

&lt;p&gt;The people who are actually using your library or referring to what you have written must feel the value in it.&lt;br&gt;
Asking for support from those who feel value is a healthy way to maintain the activity. &lt;br&gt;
Conversely, those who feel valued may be looking for ways to help.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/geerlingguy" rel="noopener noreferrer"&gt;Jeff Geerling&lt;/a&gt; said same things:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For other maintainers: Don't feel guilty asking people to support you. Whether they'll admit it or not, if they're using your project, they are getting value out of it. And in the case of organizations building on top of your projects, usually a lot. Don't get all spammy (there's a reason we distrust salespeople...), but definitely ask people to assist you financially.&lt;br&gt;
&lt;a href="https://www.jeffgeerling.com/blog/2020/im-thankful-github-patreon-and-my-sponsors-year" rel="noopener noreferrer"&gt;I'm thankful for GitHub, Patreon, and my sponsors this year | Jeff Geerling&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Finally, it's only recently that people have been able to provide easy financial support for open source, so there's a lot to be said for not actually doing it.&lt;/p&gt;

&lt;h3&gt;
  
  
  For Sponsors
&lt;/h3&gt;

&lt;p&gt;It's great to be a sponsor of someone.&lt;/p&gt;

&lt;p&gt;It doesn't matter how big or small the amount of money you are supporting, it means a lot.&lt;br&gt;
In particular, I felt that the montly support is more meaningful than the amount of money (at least that's how I felt for myself).&lt;/p&gt;

&lt;p&gt;I also started writing this article to explain how I feel about being supported to those who support me.&lt;br&gt;
Since my tier does not have a clear set of returns, I am writing articles like this one and the year-end report, but I am grateful for their support.&lt;/p&gt;

&lt;h3&gt;
  
  
  For Company
&lt;/h3&gt;

&lt;p&gt;GitHub Sponsors and &lt;a href="https://opencollective.com/" rel="noopener noreferrer"&gt;Open Collective&lt;/a&gt; allow companies to support specific people and open source projects.&lt;/p&gt;

&lt;p&gt;If you are an employee and need to explain to your company why you are sponsoring an open source project, the following article describes various approaches to support.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://humanwhocodes.com/blog/2021/05/talk-to-your-%20company-sponsoring-open-source/" rel="noopener noreferrer"&gt;How to talk to your company about sponsoring an open source project - Human Who Codes&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;An article on how to talk to your company about sponsoring an open source project, written by the author of ESLint.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;It is said that over 90% of companies use some kind of open source software/library.&lt;br&gt;
If you don't know what to support, talk to people who use open source, such as software engineers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.synopsys.com/blogs/software-security/open-source-trends-ossra-report/" rel="noopener noreferrer"&gt;2021 OSSRA report on the state of open source in commercial software | Synopsys&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/en/enterprise-open-source-report/2021" rel="noopener noreferrer"&gt;The State of Enterprise Open Source: A Red Hat Report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are using some form of open source as a company and are interested in open source as a part of the software supply chain, the following reports and documents are recommended.&lt;/p&gt;

&lt;p&gt;It describes the problems and risks of the lack of open source maintainers. In other words, you may be able to find out what you can do to support the safe use of open source.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Open-Source-Security-Coalition/Open-Source-Security-Coalition/tree/master/publications/threats-risks-mitigations" rel="noopener noreferrer"&gt;Threats, Risks, and Mitigations in the Open Source Ecosystem · Open-Source-Security-Coalition/Open-Source-Security-Coalition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://increment.com/open-source/the-rise-of-few-maintainer-projects/" rel="noopener noreferrer"&gt;The rise of few-maintainer projects – Increment: Open Source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to know more about the economic impact of open source on a larger scale, I recommend the EU report on open source for more details.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://digital-strategy.ec.europa.eu/en/library/study-about-impact-open-source-software-and-hardware-technological-independence-competitiveness-and" rel="noopener noreferrer"&gt;Study about the impact of open source software and hardware on technological independence, competitiveness and innovation in the EU economy | Shaping Europe’s digital future&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;It's been about two years since I started recruiting GitHub Sponsors in October 2019, so I thought I'd take another look at GitHub Sponsors.&lt;/p&gt;

&lt;p&gt;I wrote about why I started recruiting GitHub Sponsors, what I thought about it, and how it turned out.&lt;br&gt;
One of the purposes of this article is to explain the impact and value of the program to those who support me.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Japanese Version: &lt;a href="https://efcl.info/2021/10/01/github-sponsors/" rel="noopener noreferrer"&gt;GitHub Sponsorsの募集を始めてから2年が経ったので振り返る | Web Scratch&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;You can register your own GitHub Sponsors on the following page. If you'd like to help, that would be great!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sponsors/azu" rel="noopener noreferrer"&gt;Sponsor @azu on GitHub Sponsors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>🛡🔑 Secretlint 4.0.0: Support ESM rule and secretlint-disable directive</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Wed, 15 Sep 2021 12:23:05 +0000</pubDate>
      <link>https://forem.com/azu/secretlint-4-0-0-support-esm-rule-and-secretlint-disable-directive-2ga4</link>
      <guid>https://forem.com/azu/secretlint-4-0-0-support-esm-rule-and-secretlint-disable-directive-2ga4</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/secretlint/secretlint"&gt;secretlint&lt;/a&gt; is pluggable linting tool to prevent committing credential like SSH private key, GCP Access token, AWS Access Token, Slack Token, and npm auth token.&lt;/p&gt;

&lt;p&gt;It is similar one of ESLint, but it is for security.&lt;/p&gt;

&lt;h2&gt;
  
  
  New Features 🆕
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ESM rule support &lt;a href="https://github.com/secretlint/secretlint/pull/187"&gt;#187&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Secretlint allow to load secretlint rule as ESM(ECMAScript modules).&lt;br&gt;
You can write secretlint rule as ESM.&lt;/p&gt;

&lt;p&gt;For more details, pleases see document.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/secretlint/secretlint/blob/master/docs/secretlint-rule.md"&gt;https://github.com/secretlint/secretlint/blob/master/docs/secretlint-rule.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📝 Currently TypeSript + Node.js ESM is hard to work.&lt;br&gt;
Secretlint use some workaround for this. For more details, see next issue.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/secretlint/secretlint/issues/197"&gt;Use native dynamic import() · Issue #197 · secretlint/secretlint&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Support &lt;code&gt;secretlint-disable&lt;/code&gt; directive &lt;a href="https://github.com/secretlint/secretlint/pull/195"&gt;#195&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/@secretlint/secretlint-rule-filter-comments"&gt;@secretlint/secretlint-rule-filter-comments&lt;/a&gt; support disable comment like &lt;code&gt;secretlint-disable&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This rule is included in &lt;a href="//./packages/@secretlint/secretlint-rule-preset-recommend"&gt;@secretlint/secretlint-rule-preset-recommend&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// secretlint-disable -- disable all rules

THIS IS SECRET A
THIS IS SECRET B
THIS IS SECRET C

// secretlint-enable -- enable again

// secretlint-disable-next-line @secretlint/secretlint-rule-secret-alphabet -- disable specific rule in next line
THIS IS SECRET D
THIS IS SECRET E // secretlint-disable-line -- disable current line
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to use this directive in shellscript, you can use &lt;code&gt;# secretlint-disable&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# secretlint-disable-next-line&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"THIS IS SECRET, BUT IT WILL BE IGNORED"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For more details, see &lt;a href="https://github.com/secretlint/secretlint/blob/master/docs/configuration.md"&gt;https://github.com/secretlint/secretlint/blob/master/docs/configuration.md&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking Changes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  use &lt;code&gt;export const creator&lt;/code&gt; instead of &lt;code&gt;export default&lt;/code&gt; &lt;a href="https://github.com/secretlint/secretlint/issues/190"&gt;#190&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Secretlint rule should use named export insteadof default export.&lt;br&gt;
It is caused is thatDynamic Import in CommonJS is broken &lt;a href="https://github.com/secretlint/secretlint/issues/190"&gt;https://github.com/secretlint/secretlint/issues/190&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have a secretlint rule, please change following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- export default creator;
&lt;/span&gt;&lt;span class="gi"&gt;+ export { creator }
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Require Node.js 12 and update &lt;code&gt;engines&lt;/code&gt; &lt;a href="https://github.com/secretlint/secretlint/pull/193"&gt;#193&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Now, Secretlint requires Node.js 12+&lt;br&gt;
It aims to support ECMAScript modules.&lt;/p&gt;

&lt;p&gt;Secretlint it-self is not &lt;a href="https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c"&gt;Pure ESM package&lt;/a&gt;, but we will make it ESM.&lt;/p&gt;




&lt;p&gt;Reaction will help us ❤️&lt;/p&gt;

</description>
      <category>security</category>
      <category>node</category>
      <category>tools</category>
    </item>
    <item>
      <title>How to set GitHub Actions's `permissions`?</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Wed, 21 Jul 2021 00:45:45 +0000</pubDate>
      <link>https://forem.com/azu/how-to-set-github-actions-s-permissions-hln</link>
      <guid>https://forem.com/azu/how-to-set-github-actions-s-permissions-hln</guid>
      <description>&lt;p&gt;GitHub introduce &lt;code&gt;permissions&lt;/code&gt; fields on GitHub Actions for security reasons.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.blog/changelog/2021-04-20-github-actions-control-permissions-for-github_token/" rel="noopener noreferrer"&gt;GitHub Actions: Control permissions for GITHUB_TOKEN | GitHub Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions" rel="noopener noreferrer"&gt;Workflow syntax for GitHub Actions - GitHub Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;permissions&lt;/code&gt; field will help you to prevent software supply chain attack.&lt;/p&gt;

&lt;p&gt;For example, codecov's bash script is hacked recently.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://about.codecov.io/security-update/" rel="noopener noreferrer"&gt;Bash Uploader Security Update - Codecov&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This supply chain attack affects to CI like Circle CI, GitHub Actions.&lt;/p&gt;

&lt;p&gt;GitHub Actions can limit each actions's permissions.&lt;/p&gt;

&lt;p&gt;For example, next &lt;code&gt;permissios&lt;/code&gt; only allow the action to read repo's content.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;permissions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;read&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The default &lt;code&gt;permissions&lt;/code&gt; is &lt;code&gt;write-all&lt;/code&gt;.&lt;br&gt;
Of course, you can change the default workflow permission of the repository.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/github/administering-a-repository/managing-repository-settings/disabling-or-limiting-github-actions-for-a-repository#enabling-workflows-for-private-repository-forks" rel="noopener noreferrer"&gt;Disabling or limiting GitHub Actions for a repository - GitHub Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions" rel="noopener noreferrer"&gt;Security hardening for GitHub Actions - GitHub Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, you need to do following to improve security of GitHub Actions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change the default permissiont to "Read repository contents permission "&lt;/li&gt;
&lt;li&gt;Write each actions's &lt;code&gt;permissions&lt;/code&gt; to yaml files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, &lt;code&gt;permissions&lt;/code&gt; is optional and it is a little of hard to set. Because, almost actions does not provides &lt;code&gt;permissions&lt;/code&gt; guide.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;a href="https://github.com/pkgdeps/update-github-actions-permissions" rel="noopener noreferrer"&gt;@pkgdeps/update-github-actions-permissions&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;I've created a tool that update GitHub Actions's permissions automatically.&lt;/p&gt;

&lt;p&gt;This tools detect using Actions and add permissions field to your action yaml file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirements&lt;/strong&gt;: Node.js 14+&lt;/p&gt;

&lt;p&gt;You can update your GitHub Actions via following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @pkgdeps/update-github-actions-permissions &lt;span class="s2"&gt;".github/workflows/*.{yaml,yml}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0b72ti0m9whu3lht5uv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0b72ti0m9whu3lht5uv.png" alt="update-github-actions-permissions result"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This tool supports &lt;a href="https://github.com/pkgdeps/update-github-actions-permissions/blob/main/actions.yml" rel="noopener noreferrer"&gt;40+ actions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you found missing actions, please submit a pull request.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/pkgdeps/update-github-actions-permissions" rel="noopener noreferrer"&gt;pkgdeps/update-github-actions-permissions: A CLI that update GitHub Actions's &lt;code&gt;permissions&lt;/code&gt; automatically&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/azu/secretlint-v3-0-support-github-token-detection-57eg"&gt;secretlint v3.0 support GitHub’s new authentication token detection - DEV Community 👩‍💻👨‍💻&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>githubactions</category>
      <category>ci</category>
      <category>security</category>
    </item>
    <item>
      <title>secretlint can mask the secrets</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Mon, 12 Jul 2021 13:49:44 +0000</pubDate>
      <link>https://forem.com/azu/secrellint-can-mask-the-secrets-15f7</link>
      <guid>https://forem.com/azu/secrellint-can-mask-the-secrets-15f7</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/secretlint/secretlint"&gt;secretlint&lt;/a&gt; is a pluggable linting tool to prevent committing credential.&lt;/p&gt;

&lt;p&gt;secretlint 3.3.0 support &lt;code&gt;--maskSecrets&lt;/code&gt; option that mask the actual secret of outputs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/secretlint/secretlint/releases/tag/v3.3.0"&gt;Release v3.3.0 · secretlint/secretlint&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, &lt;code&gt;secretlint&lt;/code&gt; found AWS Secret Access key and report it. With &lt;code&gt;--maskSecrets&lt;/code&gt;, secretlint mask the secrets in outputs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;secretlint &lt;span class="nt"&gt;--maskSecrets&lt;/span&gt; .credential

/Users/user/.credential
  1:0  error  &lt;span class="o"&gt;[&lt;/span&gt;AWSSecretAccessKey] found AWS Secret Access Key: &lt;span class="k"&gt;****************************************&lt;/span&gt;  @secretlint/secretlint-rule-preset-recommend &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; @secretlint/secretlint-rule-aws

✖ 1 problem &lt;span class="o"&gt;(&lt;/span&gt;1 error, 0 warnings&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will help you to integrate secretlint with CI like GitLab.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.gitlab.com/ee/user/application_security/secret_detection/"&gt;https://docs.gitlab.com/ee/user/application_security/secret_detection/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more details, see original issue.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/secretlint/secretlint/issues/176"&gt;Option or formatter to not echo the actual secret to stdout · Issue #176 · secretlint/secretlint&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>credentials</category>
      <category>tool</category>
      <category>ci</category>
    </item>
    <item>
      <title>secretlint v3.0 support GitHub’s new authentication token detection</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Sat, 29 May 2021 07:30:31 +0000</pubDate>
      <link>https://forem.com/azu/secretlint-v3-0-support-github-token-detection-57eg</link>
      <guid>https://forem.com/azu/secretlint-v3-0-support-github-token-detection-57eg</guid>
      <description>&lt;p&gt;secretlint is a pluggable linting tool to prevent committing credential.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/secretlint/secretlint"&gt;secretlint/secretlint: Pluggable linting tool to prevent committing credential.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;secretlint is similar tools to &lt;a href="https://github.com/awslabs/git-secrets"&gt;git-secrets&lt;/a&gt;, but it is more flexible and support more credentials.&lt;/p&gt;

&lt;p&gt;secretlint v3.0 support new GitHub Token format.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/secretlint/secretlint/releases/tag/v3.0.0"&gt;Release v3.0.0 · secretlint/secretlint&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recently, GitHub introduce new authentication token format.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.blog/2021-04-05-behind-githubs-new-authentication-token-formats/"&gt;Behind GitHub's new authentication token formats | The GitHub Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.blog/changelog/2021-03-31-authentication-token-format-updates-are-generally-available/"&gt;Authentication token format updates are generally available | GitHub Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;The character set changed from [a-f0-9] to [A-Za-z0-9_]&lt;br&gt;
    The format now includes a prefix for each token type:&lt;br&gt;
        ghp_ for Personal Access Tokens&lt;br&gt;
        gho_ for OAuth Access tokens&lt;br&gt;
        ghu_ for GitHub App user-to-server tokens&lt;br&gt;
        ghs_ for GitHub App server-to-server tokens&lt;br&gt;
        ghr_ for GitHub App refresh tokens&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;secretlint support them!&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AfJkp2sp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E2hkfi-VEAE5QXR.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--0Zx2vct4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1081057521719078912/OqWfdeQ6_normal.jpg" alt="azu profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        azu
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @azu_re
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      secretlint 3.0.0 released🎉&lt;br&gt;You can prevent to commit GitHub Tokens!&lt;br&gt;&lt;br&gt;&lt;a href="https://t.co/0PJcacvEx1"&gt;github.com/secretlint/sec…&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      03:16 AM - 29 May 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1398478381847515141" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1398478381847515141" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1398478381847515141" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;You can use secretlint as Docker Container or Node.js CLI.&lt;/p&gt;

&lt;p&gt;If you already have installed Docker:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;If you already have installed Node.js:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx @secretlint/quick-start "**/*"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;secretlint also support custom rules like &lt;a href="https://eslint.org/"&gt;ESLint&lt;/a&gt;.&lt;br&gt;
If you want to configure it, please see &lt;a href="https://github.com/secretlint/secretlint#using-nodejs"&gt;secretlint documenataion&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can setup &lt;a href="https://github.com/secretlint/secretlint#pre-commit-hook-per-project"&gt;pre-commit Hook per project&lt;/a&gt; or &lt;a href="https://github.com/secretlint/secretlint#pre-commit-hook-globally"&gt;pre-commit Hook globally&lt;/a&gt;.&lt;br&gt;
This git's &lt;code&gt;pre-commit&lt;/code&gt; prevent you to commit your credentials  like GitHub Token, SSH key, AWS crendentials.&lt;/p&gt;

&lt;p&gt;If you want to know about secretlint, please visit &lt;a href="https://github.com/secretlint/secretlint"&gt;secretlint/secretlint&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>security</category>
      <category>credentials</category>
      <category>git</category>
      <category>lint</category>
    </item>
    <item>
      <title>Git Hooks without extra dependencies like Husky in Node.js project</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Mon, 22 Feb 2021 02:47:41 +0000</pubDate>
      <link>https://forem.com/azu/git-hooks-without-extra-dependencies-like-husky-in-node-js-project-jjp</link>
      <guid>https://forem.com/azu/git-hooks-without-extra-dependencies-like-husky-in-node-js-project-jjp</guid>
      <description>&lt;p&gt;Git 2.9+ supports &lt;a href="https://git-scm.com/docs/githooks"&gt;&lt;code&gt;core.hooksPath&lt;/code&gt;&lt;/a&gt; for local git hooks, so we do not need extra dependencies like &lt;a href="https://github.com/typicode/husky"&gt;husky&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/okonet/lint-staged"&gt;lint-staged&lt;/a&gt; recommented to use with &lt;a href="https://github.com/typicode/husky"&gt;husky&lt;/a&gt;.&lt;br&gt;
However, &lt;a href="https://github.com/typicode/husky/releases/tag/v5.0.0"&gt;husky v5.0.0&lt;/a&gt; is licesed under &lt;a href="https://paritylicense.com/"&gt;The Parity Public License&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/typicode/husky/issues/857"&gt;When will version 5 be MIT license again? · Issue #857 · typicode/husky&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We can use &lt;code&gt;core.hooksPath&lt;/code&gt; instead of &lt;a href="https://github.com/typicode/husky"&gt;husky&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;📝 &lt;a href="https://github.com/typicode/husky"&gt;husky v5&lt;/a&gt; also use &lt;code&gt;core.hooksPath&lt;/code&gt; internally. It is a wrapper for some commands and provide extra features.&lt;/p&gt;
&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;Setup for &lt;a href="https://github.com/okonet/lint-staged"&gt;lint-staged&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. mkdir &lt;code&gt;.githooks&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;2. Create &lt;code&gt;.githooks/pre-commit&lt;/code&gt; and put the following content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;.githooks/pre-commmit&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/sh
npx --no-install lint-staged
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;3. Add &lt;a href="https://docs.npmjs.com/cli/v7/using-npm/scripts#prepare-and-prepublish"&gt;&lt;code&gt;prepare&lt;/code&gt;&lt;/a&gt; lifecycle script to &lt;code&gt;package.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"prepare"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"git config --local core.hooksPath .githooks"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Complete to setup! 🎉&lt;/p&gt;

&lt;p&gt;This &lt;code&gt;prepare&lt;/code&gt; hooks is exected when the user has run &lt;code&gt;npm install&lt;/code&gt; or &lt;code&gt;yarn install&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;📝 You can also use &lt;code&gt;postinstall&lt;/code&gt; hook.&lt;br&gt;
However, If your package is not &lt;code&gt;private&lt;/code&gt; and you're publishing it on a registry like npmjs.com, you should not use &lt;code&gt;postinstall&lt;/code&gt; scripts.&lt;/p&gt;

&lt;p&gt;See also &lt;a href="https://typicode.github.io/husky/#/?id=install"&gt;Husky's documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Pros
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;no dependencies&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Cons
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;not available add command like &lt;code&gt;husky add&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;can not run local hooks and global hooks at once(husky &amp;lt;=v4 and simple-git-hooks allow it because these does not use &lt;code&gt;core.hooksPath&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;It is an example repository.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/azu/githook-lint-staged-example"&gt;azu/githook-lint-staged-example: Git 2.9+(&lt;code&gt;core.hooksPath&lt;/code&gt;) + Lint Staged without extra dependencies.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Note
&lt;/h2&gt;

&lt;p&gt;Some environment like &lt;a href="https://pages.cloudflare.com/"&gt;Cloudflare Pages&lt;/a&gt; or &lt;a href="https://heroku.com/"&gt;Heroku&lt;/a&gt; clone the repository without &lt;code&gt;.git&lt;/code&gt; directory for deploying the repository. &lt;/p&gt;

&lt;p&gt;In the env, you will see the following errors&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fatal: Not a git repository
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can avoid this error by following changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;  "scripts": {
&lt;span class="gd"&gt;-    "prepare": "git config --local core.hooksPath .githook"
&lt;/span&gt;&lt;span class="gi"&gt;+    "prepare": "git config --local core.hooksPath .githook || echo 'Can not set git hooks'"
&lt;/span&gt;  },
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See also &lt;a href="https://typicode.github.io/husky/#/?id=disable-hooks-in-ci"&gt;Disable hooks in CI - Husky&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>node</category>
      <category>git</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Use GitHub Issues for Personal Task Manager</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Sat, 09 Jan 2021 01:30:37 +0000</pubDate>
      <link>https://forem.com/azu/use-github-issues-for-personal-task-manager-jig</link>
      <guid>https://forem.com/azu/use-github-issues-for-personal-task-manager-jig</guid>
      <description>&lt;p&gt;Recently, I have used GitHub issues for personal task manager.&lt;br&gt;
Previously, I used &lt;a href="https://www.jivesoftware.com/producteev/"&gt;Producteev&lt;/a&gt;, &lt;a href="https://ticktick.com/"&gt;TickTick&lt;/a&gt;, &lt;a href="https://www.omnigroup.com/omnifocus/"&gt;OmniFocus&lt;/a&gt; as task manager.&lt;br&gt;
But, the existing task manager has two problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problems&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Duplicated of GitHub Issues

&lt;ul&gt;
&lt;li&gt;GitHub Issues already has tasks as an issue&lt;/li&gt;
&lt;li&gt;I do not want to create duplicated tasks on existing task manager&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Hard to extend task manager by programming&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, I've created &lt;a href="https://github.com/azu/missue"&gt;missue&lt;/a&gt; template repository to resolve this problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://github.com/azu/missue"&gt;missue&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;It helps us to use GitHub as a personal task manager.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/azu/missue"&gt;azu/missue: A Toolkit helps you to management your TODO based on GitHub Issues.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/azu/missue"&gt;missue&lt;/a&gt; is just a template repository, so you can just &lt;a href="https://github.com/azu/missue/generate"&gt;Use this template&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;missue can sync &lt;code&gt;CR&lt;/code&gt; issue's state.&lt;br&gt;
"CR" is Cross-Reference Issues.&lt;br&gt;
You can create Cross-Reference Issues with &lt;a href="https://github.com/azu/missue/tree/master/userscript"&gt;userscript&lt;/a&gt; from other repositories.&lt;/p&gt;

&lt;p&gt;Cross Reference Issues has a link that you want to track and has &lt;code&gt;CR&lt;/code&gt; label.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Example: &lt;a href="https://github.com/azu/missue/issues/4"&gt;https://github.com/azu/missue/issues/4&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EtA_bIRx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/azu/missue/master/docs/missue-architecture.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EtA_bIRx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/azu/missue/master/docs/missue-architecture.png" alt="missue" width="880" height="1008"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;missue is almost plain GitHub issues.&lt;br&gt;
However, GitHub issues have enough features for me.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Issues&lt;/li&gt;
&lt;li&gt;Label&lt;/li&gt;
&lt;li&gt;Milestone&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/free-pro-team@latest/github/managing-your-work-on-github/about-project-boards"&gt;Project boards&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Automation(GitHub Actions)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, you can extend GitHub issues by GitHub Actions and Probot.&lt;/p&gt;

&lt;p&gt;For example, if you want to get a reminder feature, and you can use &lt;a href="https://github.com/probot/reminders"&gt;Probot: Reminders&lt;/a&gt;.&lt;br&gt;
Also, &lt;a href="https://docs.github.com/en/free-pro-team@latest/actions"&gt;GitHub Actions&lt;/a&gt; help you to extend your workflow by programming.&lt;/p&gt;

&lt;p&gt;After all, GitHub issues was necessary and sufficient for me.&lt;/p&gt;

</description>
      <category>github</category>
    </item>
    <item>
      <title>Generate GitHub Actions Badge from Command Line</title>
      <dc:creator>azu</dc:creator>
      <pubDate>Sun, 21 Jun 2020 03:37:57 +0000</pubDate>
      <link>https://forem.com/azu/generate-github-actions-badge-from-command-line-5b59</link>
      <guid>https://forem.com/azu/generate-github-actions-badge-from-command-line-5b59</guid>
      <description>&lt;p&gt;I've created &lt;a href="https://github.com/azu/github-actions-badge"&gt;github-actions-badge&lt;/a&gt;.&lt;br&gt;
It generate GitHub Actions badge Markdown cod from command line.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/azu/github-actions-badge/actions?query=workflow%3A"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y3K640Ki--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/azu/github-actions-badge/workflows/test/badge.svg" alt="Actions Status: test" width="98" height="20"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[![Actions Status: test](https://github.com/azu/github-actions-badge/workflows/test/badge.svg)](https://github.com/azu/github-actions-badge/actions?query=workflow%3A"test")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This badge spec is here.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.github.com/en/actions/automating-your-workflow-with-github-actions/configuring-a-workflow#adding-a-workflow-status-badge-to-your-repository"&gt;https://help.github.com/en/actions/automating-your-workflow-with-github-actions/configuring-a-workflow#adding-a-workflow-status-badge-to-your-repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;Install with &lt;a href="https://www.npmjs.com/"&gt;npm&lt;/a&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install github-actions-badge --global
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Usage
  $ github-actions-badge

Options
  --format "markdown", "json"

Examples
  # Copy GitHub Action as Markdown format
  $ github-actions-badge | pbcopy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ github-actions-badge
[![Actions Status: test](https://github.com/azu/github-actions-badge/workflows/ci/badge.svg)](https://github.com/azu/github-actions-badge/actions?query=workflow%3Aci)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Source
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/azu/github-actions-badge"&gt;azu/github-actions-badge: Generate GitHub Actions badge Markdown code.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>cli</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
