<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>RICHARD QIN&#39;S HOME PAGE</title>
    <link>https://richardqin.org/index.html</link>
    <description>Richard Qin&#39;s journal, technical notes, announcements, projects, and links.</description>
    <language>en</language>
    <atom:link href="https://richardqin.org/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>自由不应该成为精英的特权</title>
      <link>https://richardqin.org/journal/2026/10/freedom-should-not-be-an-elite-privilege.html</link>
      <guid isPermaLink="true">https://richardqin.org/journal/2026/10/freedom-should-not-be-an-elite-privilege.html</guid>
      <pubDate>Thu, 15 Oct 2026 00:00:00 &#43;0800</pubDate>
      <description>&lt;p&gt;自由主义以个人自由、人格平等和权利保障为基本价值。然而，长久以来，在一些自诩自由主义者的人身上，却存在着一种令人深思的矛盾：他们高谈自由、平等与个人权利，却对普通民众的自主能力抱有深刻的不信任。他们赞美独立思考，却轻蔑那些与自己观点不同的人；他们宣扬人人平等，却习惯于根据学历、财富、职业和文化水平划分人的高低。这种精英主义往往表现为一种居高临下的优越感，他们将自身的知识、学历与经济地位视为理性和文明的证明，将普通人的不同意见归结为愚昧、无知与缺乏教养。当民众的选择符合他们的期待时，他们便热情赞美自由的价值；当民众表达出与其相反的意愿时，他们又开始怀疑普通人是否具有行使自由的能力。在他们眼中，自由仿佛是一种需要经过资格审查才能享有的特权，只有那些被他们认为足够理性、足够文明、足够优秀的人，才配真正拥有自由。&lt;/p&gt;&#xA;&lt;p&gt;这些自称自由派的精英主义者巧妙地将对自己阶层的利益追求包装成对自由的追求！&lt;/p&gt;&#xA;&lt;p&gt;这种精英主义与自由主义的基本原则存在着根本性的矛盾。自由的普遍性与人格的平等性是自由主义的重要理论基础。每个人都具有平等的道德地位，都应当享有同等的基本自由与权利。人与人之间在知识、能力、财富和社会地位上的差异，无法构成划分人格等级和分配基本权利的正当依据，更不能成为少数人支配多数人生活的理由。知识与能力可以赋予个人在特定领域的专业权威，却不能使其天然获得高于他人的政治地位。任何人都无权仅凭自身所谓的理性与文明优势，便将他人的自主意志置于自己的判断之下。将普通人视为需要精英指导和监护的对象，本身就是对个人自主权的否定，也是对自由主义所强调的人格平等原则的背离。&lt;/p&gt;&#xA;&lt;p&gt;柔软的纸张可以割伤皮肤，迷惑性的语言比反对的声音更有破坏力！这种伪装成自由主义的精英主义比任何反自由的声音更可怕，因为它正借助自由、理性与文明的语言获得正当性。当普通人从一些自由主义者那里感受到的，是对自身知识水平、社会身份和独立判断能力的轻蔑时，他们又如何相信自由主义所宣称的人人平等？&lt;/p&gt;&#xA;&lt;p&gt;一个典型的精英主义例子，便是专有软件支持者为限制用户自由所作的辩护。&lt;/p&gt;&#xA;&lt;p&gt;他们说：“大多数用户根本没有开发软件的能力，交给我们吧，我们会开发出功能更全面、更易用的软件，我们正在推动科技的进步！”&lt;/p&gt;&#xA;&lt;p&gt;他们说：“我们比你们更懂什么功能才是最好的，所以，我们有权替你们决定软件应该如何运行，甚至可以强制更新！”&lt;/p&gt;&#xA;&lt;p&gt;他们说：“自由软件允许每一个人自由地复制和分发，这样的软件怎么能够获得足够的商业收益？我们开发的专有软件能够带来更丰厚的利润！”&lt;/p&gt;&#xA;&lt;p&gt;在这些说辞中，开发者的技术能力被当作支配用户的理由，商业利益被当作限制用户自由的依据。他们以普通用户缺乏技术知识为由，要求用户交出对软件的控制权；又以专业能力和商业效率为理由，将用户排除在软件的研究、修改与传播之外。然而，即使用户通过学习掌握了开发软件的能力，他们依然可能因为源代码封闭和许可证的限制而无法自由修改自己使用的软件。在这里，技术能力上的差异被进一步转化为制度上的权利差异，而软件开发者也由此获得了对用户的支配性权力。&lt;/p&gt;&#xA;&lt;p&gt;自由软件运动的道德原则之一就是用户自己成为开发者所面临的障碍应尽可能少，而且应仅限于技术方面（这些技术性障碍之所以可以接受，是因为要求掌握编程知识等门槛从根本上无法完全消除）。每个人都应当拥有学习、研究、修改和分享软件的自由，即使一个人目前缺乏编程能力，也不应因此被剥夺这些权利。知识和能力可以成为创造更优秀软件的基础，却不能成为剥夺他人自由的理由。&lt;/p&gt;&#xA;&lt;p&gt;自由的价值，正在于它属于每一个人。一个人对自由原则的忠诚，应当体现在他如何对待那些缺乏权势、知识和社会资源的人，尤其体现在他如何对待那些自己并不认同、甚至十分反感的人。倘若自由最终成为少数精英维护自身优越地位的工具，那么自由主义也就背离了它所宣称的人格平等原则。&lt;/p&gt;&#xA;&lt;p&gt;自由应当属于所有人，任何阶层都不应垄断自由。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>OpenPGP public key published (2026–2028)</title>
      <link>https://richardqin.org/announcements/openpgp-key-2026-2028.html</link>
      <guid isPermaLink="true">https://richardqin.org/announcements/openpgp-key-2026-2028.html</guid>
      <pubDate>Fri, 09 Oct 2026 00:00:00 &#43;0800</pubDate>
      <description>&lt;p&gt;I have published my OpenPGP public key for 2026–2028. It is available from this site:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Public key: &lt;a href=&#34;https://richardqin.org/richard-2026-2028.asc&#34;&gt;richard-2026-2028.asc&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Fingerprint: &lt;code&gt;0D08 88B1 AC2E D6B8 29F5 D211 AEB3 28BC 83BC 2EDA&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Validity: 2026–2028&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The current public key and fingerprint are also linked below my introduction on the home page. Future key changes will be announced here.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>当我们说爱的时候...</title>
      <link>https://richardqin.org/journal/2026/09/when-we-speak-of-love.html</link>
      <guid isPermaLink="true">https://richardqin.org/journal/2026/09/when-we-speak-of-love.html</guid>
      <pubDate>Tue, 22 Sep 2026 00:00:00 &#43;0800</pubDate>
      <description>&lt;p&gt;今天有人质问我: &amp;ldquo;我是否爱我的学校&amp;rdquo;. 他说, &amp;ldquo;你的学姐不深爱学校吗？学校有爱过你吗&amp;rdquo;. 我一时语塞, 不知如何回答. 他首先默认了一个事实, &amp;ldquo;学校不爱我&amp;rdquo;, 然后做出了两个断言 &amp;ldquo;学校不爱我因此我不能爱学校&amp;rdquo; 以及 &amp;ldquo;学姐对学校的爱是不值得的&amp;rdquo;. 更深层次地讲, 在他的心里面学校就是领导, 爱是一种条件. 这让我进一步思考, 当我们说爱的时候, 我们的意识里我们对所爱对象的情感是什么, 我们通过说爱这个对象来表达什么, 以及这个对象究竟是什么.&lt;/p&gt;&#xA;&lt;p&gt;我们在谈论爱, 那么 &amp;ldquo;爱&amp;rdquo; 究竟是什么?&lt;/p&gt;&#xA;&lt;p&gt;从具体的例子出发. 当我们说爱我的家乡, 爱我的学校的时候. 首先是我的学校, 我的家乡在我的决策中有特殊的权重, 我会因为它受损而难过, 会因为它变好而欣慰, 因为它的未来而调整我的行为. 我们所爱的这个对象已经进入我们的生活结构, 所以它发生什么, 会改变我们的内在状态.&lt;/p&gt;&#xA;&lt;p&gt;爱还经常包含一种 &amp;ldquo;为对象本身着想&amp;rdquo; 的倾向. 爱一个人时, 我们会关心他的生活是否过得好; 爱一个家乡时, 我们会关心那里的人,环境和未来; 爱一个国家时, 我们可能关心其中的人能否生活得更安全, 更有尊严, 更符合我们认为重要的公共价值.&lt;/p&gt;&#xA;&lt;p&gt;爱也常常包含身份层面的变化. 长期爱一个人, 一个地方或一个共同体之后, 对方会进入“我是谁”的叙述. 我们会说&amp;quot;我的家乡&amp;quot;&amp;ldquo;我的学校&amp;quot;&amp;ldquo;我的国家&amp;quot;&amp;ldquo;我的家人&amp;rdquo;. 这种&amp;quot;我的&amp;quot;并不一定表示占有, 它表示关系已经参与塑造我们的身份. 对象的历史也部分进入我们的历史.&lt;/p&gt;&#xA;&lt;p&gt;总的来看, 爱是一种持续的价值性关切, 主体把某个对象视为具有特殊且较难替代的意义, 并让这种意义稳定地影响自己的情感, 判断, 注意力和行动.&lt;/p&gt;&#xA;&lt;p&gt;然而这个定义仍然显得单薄. 前面我们提到了 &amp;ldquo;爱&amp;rdquo; 一个对象的时候, 这种关系已经塑造着我们的身份. 我们在爱的时候, 也在用行动改变着我们所爱的对象. 因此, 爱有时候更像一种关系过程, 主体通过行动进入对象的现实, 对象因为这种介入发生变化, 而变化后的对象又反过来改变主体. 爱于是具有明显的实践结构.&lt;/p&gt;&#xA;&lt;p&gt;例如, 一个人爱自己的学校, 后来参与校友组织, 捐赠图书, 推动课程改革, 帮助学生. 学校因此发生了一些变化; 与此同时, 这个人也会因为这些行动改变自己. 他可能形成新的责任感, 认识新的群体, 重新理解自己年轻时的经历, 也可能改变对教育, 公平和共同体的看法. 多年以后, &amp;ldquo;这个人&amp;quot;和&amp;quot;这所学校&amp;quot;都已经不同于关系开始时的状态. 爱的历史已经成为双方历史的一部分.&lt;/p&gt;&#xA;&lt;p&gt;所以, 从辩证法的角度, 爱是一种具有价值承诺的实践关系. 主体因为对象对自己具有特殊意义而持续介入它的现实存在, 在照料, 保护, 建设, 批评和改变对象的过程中, 也接受对象及实践后果对自己的反向塑造. 爱因此形成一个主体, 对象与共同历史不断相互生成的过程.&lt;/p&gt;&#xA;&lt;p&gt;我们爱的对象究竟是什么?&lt;/p&gt;&#xA;&lt;p&gt;当我们说我们在&amp;quot;爱一个对象的时候&amp;rdquo;, 我们所爱的东西远不止一个物理对象. 家乡看起来是一片土地, 学校看起来是一组建筑, 国家看起来是一套疆域和制度. 可真正进入情感经验中的, 通常是由地方,人物, 记忆, 关系, 价值和自我经历共同组成的整体. 爱的对象因此具有一种&amp;quot;复合性&amp;rdquo;: 它既存在于外部世界, 也存在于我们的生命史之中.&lt;/p&gt;&#xA;&lt;p&gt;爱首先意味着某个对象对我具有不可轻易替代的意义. 世界上有很多城市, 但 &amp;ldquo;我的家乡&amp;rdquo; 与其他城市不同; 世界上有许多学校, 但 &amp;ldquo;我的学校&amp;rdquo; 与其他学校不同; 世界上有许多国家, 可是我的祖国只有一个. 家乡承载了童年的道路, 熟悉的口音, 第一次独自出门的经验, 某些已经消失的商店和某些仍在那里的人. 学校承载了老师, 同学, 考试, 失败, 友谊, 青春期, 以及一个人逐渐形成自我认识的过程. 于是, 一个地方之所以值得爱, 往往因为它已经进入了&amp;quot;我是谁&amp;quot;的构成之中.&lt;/p&gt;&#xA;&lt;p&gt;这里可以进一步看到, 爱常常包含记忆. 我们爱一个地方, 很少只爱它此刻的样子. 一个人回到故乡, 可能发现街道已经改建, 熟悉的建筑已经拆掉, 认识的人已经离开, 可依然说自己爱那里. 这说明爱的对象具有时间厚度. 我们同时在爱过去的地方, 现在的地方, 以及关于这个地方未来仍会延续下去的想象. 所谓&amp;quot;故乡&amp;rdquo;, 甚至可以在现实中发生巨大变化之后, 继续作为一种心理空间存在.&lt;/p&gt;&#xA;&lt;p&gt;爱还包含关系网络. 家乡的重要性, 很多时候来自&amp;quot;谁在那里生活过&amp;quot;; 学校的重要性, 也来自&amp;quot;我曾和谁一起度过那些年月&amp;quot;. 如果把所有建筑原样复制到另一个城市, 人们通常不会因此认为自己的母校被复制了. 因为一个地方的身份还包含历史连续性, 人与人的关系以及共同发生过的事件.&lt;/p&gt;&#xA;&lt;p&gt;爱一个地方经常意味着爱一种生活世界. 所谓生活世界, 可以理解为人在其中自然生活, 不需要不断解释背景的环境. 你知道当地人的表达方式, 知道什么食物属于什么季节, 知道哪条路小时候经常走, 知道某个地名背后的故事. 这些知识未必宏大, 却形成了一种熟悉感. 人在这种环境中会产生&amp;quot;这里是我的地方&amp;quot;的体验. 爱家乡, 很大程度上就是对这种熟悉性和归属感的依恋.&lt;/p&gt;&#xA;&lt;p&gt;爱也与身份有关. 当一个人说&amp;quot;我是某某学校毕业的&amp;quot;&amp;ldquo;我是某地人&amp;rdquo;, 他已经把这个对象放入自我叙事. 这里的&amp;quot;我&amp;quot;不再只是一个孤立的个体, 而是某段历史, 某个地方和某些关系的延续. 于是, 对家乡或者母校的评价有时会触及自尊, 因为对象的一部分已经进入了自我认同. 一个人听到别人赞美故乡会高兴, 听到别人贬低母校会产生防御, 这种反应常常来自身份绑定.&lt;/p&gt;&#xA;&lt;p&gt;不过, 爱也并不要求对象完美. 一个人可以深爱自己的家乡, 同时厌恶那里的某些习惯; 可以怀念学校, 同时清楚地记得当年的压抑和不公平. 事实上, 长期而稳定的爱通常能够容纳复杂性. 因为真实对象本来就包含缺点, 变化和失望. 对对象的爱可以和批评, 失望, 离开甚至冲突同时存在, 只要那种&amp;quot;这个对象与我的生命有关&amp;quot;的关系没有消失.&lt;/p&gt;&#xA;&lt;p&gt;再进一步, 爱一个对象其实也意味着承认它在自己生命中拥有某种独特位置. 世界上可以存在更漂亮的城市, 更好的学校, 更优秀的群体, 但这种比较未必能够改变爱的关系. 因为爱所回应的并不是抽象排名, 而是共同经历形成的不可替代性. 这也是为什么一个人可以承认另一个城市生活条件更好, 却仍然想念故乡; 也可以承认另一所学校教学水平更高, 却仍然对自己的母校有特殊感情.&lt;/p&gt;&#xA;&lt;p&gt;分析到这里, 我们对爱的认识已经比较全面了. 很抱歉在这里要放一个专有软件的链接, 但我没有办法不这样做. &lt;a href=&#34;https://mp.weixin.qq.com/s/bFFB5yp1LWKKJyfz5V0jbA&#34;&gt;https://mp.weixin.qq.com/s/bFFB5yp1LWKKJyfz5V0jbA&lt;/a&gt;&#xA; 来源于人大高瓴人工智能学院公众号师姐本人所写的文章. 从她的文字中, 我们可以清楚地看到爱的形状. 以下是原文部分句子的摘录.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;印象最深的是在望京美团实习的日子。每天挤在10号线、15号线和昌平线交织的地铁网里，单程一个多小时的拥挤通勤，疲惫感如影随形。晚上拖着身子回到学校，常常来不及喘口气，就得打开电脑，为即将召开的党支部会议准备PPT、整理材料。无数个深夜，对着屏幕，感觉身体和精神都在挑战极限，事情却好像永远也做不完.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;在高瓴的日子，我的手机似乎永远在线，不分工作时间还是休息时间，不分周中还是周末，随时可能有同学发来咨询的消息。这种状态，或许在很多人看来模糊了工作与生活的界限，甚至有些辛苦。但对我而言，无论是组织一场深入的谈话、协助提交一份材料，还是解答一则简单的微信询问，&lt;strong&gt;在帮助他人、提供服务的过程中，我总能收获一种发自内心的快乐。我很爱RUC这方精致的校园，更愿意将我的事业奉献给我深爱的校园和亲爱的同学们&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;此刻，我选择留下，留在深爱的母校，留在熟悉的立德楼旁。因为在这里，我找到了连接、奉献与创造价值的真谛。我期待着，在未来的日子里，继续与年轻而充满活力的你们相遇，一起在人工智能的星辰大海中探索，一起在人大的沃土上书写新的故事。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;我们首先注意到, 母校和北京在她的生命中留下浓墨重彩的一笔, 她在这里学习, 生活和工作, 与这片土地, 这里的人建立了深深的羁绊, 尽管这种生活是辛苦的. 更重要的是, 她努力让她所爱的对象变好. 这如果不是 &amp;ldquo;爱&amp;rdquo;, 还能是什么?&lt;/p&gt;&#xA;&lt;p&gt;为什么我阅读这些文字的时候深有感触, 因为我同样爱着这所学校, 这片土地, 这里的生活, 这里的一切. 每一个生活在这里的人阅读这些文字的时候很难抑制住内心翻涌的情感. 在北京实习大家都是这样的辛苦, 每天起早贪黑, 漫长的通勤. 在学校学习大家都是这样, 每天时时刻刻在线等待着任务, 工作和生活没有边界. 我们属于一个共同体, 有着相似的生活, 相似的情感体验, 也一同期望着学校能够变好. 我们可能每天都在抱怨糟糕的环境, 几栋楼共享那间狭小的浴室, 拥挤狭小的宿舍, 不合理的课程安排, 从早到晚的辛苦, 这种反馈, 难道不正是因为我们爱我们的学校, 我们希望它变得更好, 新入学的师弟师妹们能有更好的体验吗? 另外想到的一点, 我刚入学的时候, 师兄告诉我们在人大我们基本不说学长学姐, 而是称呼师兄师姐, 师弟师妹, 这样更有一种师出同门的感觉. 我们是一个紧密的共同体.&lt;/p&gt;&#xA;&lt;p&gt;所以我到底爱不爱我的学校? 答案不言自明.&lt;/p&gt;&#xA;&lt;p&gt;所以最后来看这个人对我的质疑. 他首先默认&amp;quot;学校&amp;quot;就是他所谓的管理者, 就是造成学校现状的人. 这一点就是错的, 从我以上的讨论中就可以看出来, 我们所爱的学校是一个复杂的共同体, 既是地域意义上的也是精神意义上的. 其次, 他没有把爱当作一种关切, 一种实践, 而是把爱看作了一种&amp;quot;商品价值&amp;quot;. 这种 &amp;ldquo;价值&amp;rdquo; 是可以交易的, 是因为 &amp;ldquo;学校&amp;rdquo; 爱我, 我才能爱学校. 这种看法把爱压缩成了一种互惠交换, 对象先给予我足够的善意, 我才承认自己有理由去爱它. 于是, 学校也被压缩成了一个向个人提供服务的管理实体. 只要服务令我失望, 爱的理由便随之消失. 这也就说明了他认为学校是一个静止不变的冰冷的实体, 他默认世界是静止的永恒不变的, 存在绝对的价值判断, 人的实践比如&amp;quot;爱&amp;quot;无法改变这种绝对静止.&lt;/p&gt;&#xA;&lt;p&gt;对我个人的攻击是无所谓的, 让我愤怒的是随意评论逝者. 尊重逝者永远是一种基本的品德.&lt;/p&gt;&#xA;&lt;p&gt;家乡, 学校都是相对简单的对象. 国家作为一个复杂的对象, 爱国常常被人误解. 我将在下一篇文章论述我们谈论爱国的时候, &amp;ldquo;国&amp;rdquo; 一个什么样的对象, 以及我为什么反对自由派为了反对某种宏大叙事而发表另一些看似更&amp;quot;道德&amp;quot;的宏大叙事, 而是应该采取更务实的行动.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>自由软件与自由社会</title>
      <link>https://richardqin.org/journal/2026/09/free-software-and-free-society.html</link>
      <guid isPermaLink="true">https://richardqin.org/journal/2026/09/free-software-and-free-society.html</guid>
      <pubDate>Sat, 19 Sep 2026 00:00:00 &#43;0800</pubDate>
      <description>&lt;p&gt;人在自然状态下本来就是自由和平等的, 生命, 自由和财产等权利的根据独立于某个政府的法律. 政府成立之后承担保护这些权利的任务, 其正当性也受这些既存权利的限制.&lt;/p&gt;&#xA;&lt;p&gt;《世界人权宣言》第一条规定 &amp;ldquo;人人生而自由, 在尊严和权利上一律平等&amp;rdquo;, 第三条又规定人人有生命, 自由和人身安全的权利. 这里的思想是人权的享有资格来自人的身份, 而不取决于国籍, 财富, 政治观点或者政府是否愿意赋予这些权利.&lt;/p&gt;&#xA;&lt;p&gt;但是人生而自由并不代表人有无限自由, 人们虽然自由和平等, 却没有权利随意伤害其他人的生命, 健康, 自由或财产. 人天生拥有不受他人任意控制的道德权利.&lt;/p&gt;&#xA;&lt;p&gt;在现实中, 言论自由, 人身自由, 迁徙自由, 财产权等具体法律权利, 需要由宪法, 法律, 法院和行政制度加以规定和执行. 因此, 一个人在道德哲学意义上可能拥有某项基本自由, 而现实法律没有充分承认它; 反过来, 法律也可能创设一些纯粹制度性的权利, 例如某种许可证持有人的特定程序权利.&lt;/p&gt;&#xA;&lt;p&gt;因此人本身具有自由权, 社会制度应该尊重这种自由, 国家与其他组织任何对基本自由的限制都需要承担正当化责任.&lt;/p&gt;&#xA;&lt;p&gt;然而现实中人的自由权往往没有得到充分的保证. 例如, 大部分人都受到专有软件的迫害, 专有软件往往是恶意软件, 它们在用户的计算机上进行不公正的计算. 在某些特殊的国家, 如朝鲜, 中国, 人们不能自由地表达自己的观点. 还有普遍存在的贫富差距, 一个人的贫困往往使得他不得不依赖某个雇主, 地主, 债权人, 家庭成员或慈善提供者, 而对方能够任意决定他的基本生活条件, 那么这种经济依赖可能形成支配关系. 同时, 贫富差距也阻碍了人的自由发展.&lt;/p&gt;&#xA;&lt;p&gt;我们并没有生活在自由社会中!&lt;/p&gt;&#xA;&lt;p&gt;在真正的自由社会中, 人们不仅拥有形式自由, 也拥有实质自由.&lt;/p&gt;&#xA;&lt;p&gt;形式自由意味着没有法律或他人直接禁止你作出某种选择.&lt;/p&gt;&#xA;&lt;p&gt;实质自由意味着你拥有足够的能力和条件, 使这种选择真正进入你的可行集合, 而且这种能力具有制度上的稳定性, 不依赖另一个主体的任意许可.&lt;/p&gt;&#xA;&lt;p&gt;一个人法律上可以辞职, 但失去这份工作马上无法生存, 那么他的形式自由存在, 实质自由较弱. 一个用户法律上可以停止使用某个平台, 但全部数据无法导出, 社会关系全部锁在平台内部, 那么退出的形式自由存在, 实质自由较弱. 一个人法律上可以批评领导者, 但实际表达后可能遭受任意拘押, 那么这种表达连稳定的实质自由都不存在. 一个奴隶遇到仁慈主人, 主人暂时允许他自由行动, 他仍然缺少实质自由, 因为行动空间取决于主人的任意意志.&lt;/p&gt;&#xA;&lt;p&gt;一个自由社会, 就是社会中所有人既有形式自由, 又有实质自由. 更明确地说, 自由社会是这样一种社会, 每个人都享有受到制度保障的基本形式自由, 拥有实际运用这些自由和发展自身能力所需要的基本条件, 并能够免受国家, 资本, 组织或个人的任意支配.&lt;/p&gt;&#xA;&lt;p&gt;达到自由社会, 需要社会中的组织和个人持续通过自己的实践扩大自由. 我们不应该等待国家和资本大发慈悲 &amp;ldquo;赐予&amp;rdquo; 我们自由, 我们的自由是靠自己斗争来的.&lt;/p&gt;&#xA;&lt;p&gt;每个人的能力有限, 人没有能力在所有的社会领域都持续为自己的自由而斗争, 但如果每个人都在自己的领域持续为自由斗争, 那么所有人的力量合起来将是一股及其可观的力量, 推动我们的社会逐渐自由. 比如, 程序员编写自由软件, 教师推广开放知识, 研究者推动开放获取, 企业家减少平台锁定, 工程师采用开放标准, 金融从业者推动更低的进入壁垒和更强的资产可携带性, 普通人在组织中尊重他人的选择权. 这些实践累积起来, 会逐渐改变社会中权力的分布方式.&lt;/p&gt;&#xA;&lt;p&gt;这就回答了我们为什么编写自由软件 ( &lt;a href=&#34;https://www.gnu.org/philosophy/free-sw.html&#34;&gt;https://www.gnu.org/philosophy/free-sw.html&lt;/a&gt;&#xA; ) . 不仅是为了我们自己的自由, 也是为了别人的自由. 不仅是为了软件用户的自由, 更是为了更广泛的社会的自由.&lt;/p&gt;&#xA;&lt;p&gt;最后引用 RMS 的一段话 ( &lt;a href=&#34;https://www.gnu.org/philosophy/saying-no-even-once.html&#34;&gt;https://www.gnu.org/philosophy/saying-no-even-once.html&lt;/a&gt;&#xA; ):&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;你可以迈出一步。完成之后，不久你又可以再迈一步。最后，你会发现你改变了自己的行为；如果你习惯于对非自由软件说不，你在多数时间都可以说不，也许每次都可以说不。不但你获得了越来越多的自由；而且你帮助整个社区传播了对这个问题的认知。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;</description>
    </item>
    <item>
      <title>ZCode 与被夺走的计算自由</title>
      <link>https://richardqin.org/journal/2026/09/zcode-and-computing-freedom.html</link>
      <guid isPermaLink="true">https://richardqin.org/journal/2026/09/zcode-and-computing-freedom.html</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 &#43;0800</pubDate>
      <description>&lt;p&gt;2026 年 9 月 18 日，围绕 AI 编程工具 ZCode 的一场风波在开发者社区迅速发酵。起因并不复杂：一名开发者在排查本地磁盘占用时，发现 &lt;code&gt;~/.zcode/v2/checkpoints/&lt;/code&gt; 目录下堆积了异常庞大的仓库快照（repository snapshot）。随着社区对 ZCode 的 Electron 客户端进行逆向反编译，以及对本地 manifest、状态数据库和网络请求逻辑的层层排查，一套隐秘的工作区快照机制浮出水面：客户端会在本地静默扫描项目目录并打包快照，随后向服务端申请凭据，把数据送往远程对象存储。公开样本显示，单次快照就包含了 42,411 个文件，其中 &lt;code&gt;.git/objects&lt;/code&gt;、&lt;code&gt;.git/logs&lt;/code&gt;、&lt;code&gt;.git/refs&lt;/code&gt; 以及 Git LFS 等底层内部数据占据了绝大部分体积。紧接着，GitHub feedback 仓库的 Issue #707 补上了关键一刀：即便用户已在设置里将 &lt;code&gt;repoSnapshotIndexingEnabled&lt;/code&gt; 手动置为 &lt;code&gt;false&lt;/code&gt;，本地状态中依然生成了记录大量 &lt;code&gt;.git&lt;/code&gt; 内部对象的快照清单。面对确凿证据，官方随后承认 Repo Wiki 功能曾触发仓库数据上传且上线初期默认开启，承诺已完成修复，后续将开源相关代码并引入第三方审查。&lt;/p&gt;&#xA;&lt;p&gt;从逆向还原的数据流来看，这套机制在工程上直白地展示了控制权的单向流动。客户端在本地抓取快照后，向云端申请上传凭据和 RSA 公钥；快照数据经临时生成的 AES 密钥加密，该密钥再由服务端的 RSA 公钥封装，最终把密文推入远程对象存储。这种信封加密（envelope encryption）能够防范网络链路上的中间人窃听与存储侧的直接泄露，但解密私钥自始至终保存在服务商的机房里，用户本地根本没有对应密钥。更严重的是，快照抓取的边界完全不受控制，本该被严密防护的 &lt;code&gt;.git&lt;/code&gt; 目录成了上传的主体——这里面不仅包含已从当前工作树删除的历史代码、废弃配置和私有仓库地址，甚至可能夹杂过往 commit 中手滑带上的 API 凭据、未脱敏的临时环境变量、未推送分支上的试验性原型，以及由 reflog 完整记录的操作痕迹。一个常驻开发者本地、握有工作区最高读写权限的进程，在用户毫无感知的情况下，架设了一条通向远端服务器的单向传输管道；而作为机器的法定所有者，开发者对手指底下的数据流向一无所知，更缺乏在本地硬性阻断它的有效手段。&lt;/p&gt;&#xA;&lt;p&gt;这起事件最根本的矛盾，不在于偶发的数据外溢，而在于本地控制权在架构层面的结构性让渡。&lt;/p&gt;&#xA;&lt;p&gt;硬件算力由开发者承担，磁盘里的代码属于受保护的私有资产。但 ZCode 作为本地常驻进程，在后台静默遍历目录、打包 Git 历史并向外部端点推流。作为计算环境的所有者，开发者既无法从系统交互中获知其实际行为，也无法在运行时施加制衡，最终只能依赖社区逆向分析安装包与本地状态文件，才勉强拼凑出真实的数据走向。&lt;/p&gt;&#xA;&lt;p&gt;专有软件的问题从不在于商业厂商的姿态是否友善，而在于这种架构天然就是反客为主的。代码运行在本地，并不意味着代码受你调遣。一旦用户失去了审查实现、修改逻辑和自主构建的权利，软件就必然沦为厂商部署在宿主系统内的远程代理。ZCode 只是把这个技术现实推到了台前：代码在你的 SSD 上，Git 仓库在你的本地终端里，但决定数据流向的核心裁决权，却握在远端的云端后台。&lt;/p&gt;&#xA;&lt;p&gt;最讽刺的，莫过于被全量扫描并上传的偏偏是 &lt;code&gt;.git&lt;/code&gt; 本身。&lt;/p&gt;&#xA;&lt;p&gt;Git 本身是分布式架构与本地控制权的典范：全量历史存放在本地，何时 commit、开什么分支、推哪些 refs、推向哪个 remote，全凭开发者一人裁决。然而，ZCode 却在这套严密的体系之上，横插了一个闭源黑盒 Agent，轻而易举地击穿了本地防护边界。Git 历史里记录着工程演进的全部细节，也沉淀着未公开的技术探索与私密足迹。&lt;/p&gt;&#xA;&lt;p&gt;面对这种越界，自由软件赋予开发者的从不是虚无的道德姿态，而是实打实的技术制衡权——如果发现代码逻辑越界，可以直接从源码中把上传模块彻底剥离，或者在编译期把 &lt;code&gt;.git/**&lt;/code&gt; 强行列入路径黑名单，甚至自己构建并向团队分发经过安全审计的版本。但在专有闭源体系下，开发者手里没有任何技术反制筹码，只能被动面对设置面板里的几个布尔开关，单方面寄希望于闭源二进制会忠实遵守配置。&lt;/p&gt;&#xA;&lt;p&gt;官方所谓“全程加密上传”的公关话术，同样经不起工程推敲。用 AES 加密快照、再用服务端公钥封装密钥，这种设计只解决了一个问题：防止链路上的第三方窥探。但密码学的核心问题从来是：钥匙握在谁手里？最终的解密能力在服务商机房，而不在开发者手里。数据产自本地工作区，凝结着开发者的劳动，但远端副本如何留存、衍生索引如何派生，完全处于单向不可控状态。&lt;/p&gt;&#xA;&lt;p&gt;这正是“服务替代软件”（SaaSS）最根本的弊端：当你把本可在本地完成的分析任务拱手交给远端黑盒时，本地客户端就退化成了一根数据输送管道。即便 ZCode 日后公开客户端源码，只要核心的语义索引与分析逻辑依然强绑定在私有云端服务上，用户依然无法审查远端实际执行的代码，更无法对数据处理链路施加约束。专有客户端与私有云端协同运作，其底层逻辑始终是一致的：把本该属于本地的计算主权，牢牢留在厂商的数据中心。&lt;/p&gt;&#xA;&lt;p&gt;再看 ZCode 官方的事后公关，几乎完全符合商业软件应对信任危机的标准路径：宣称数据在处理后“即刻销毁”，保证“新版本已完成修复”，并许诺未来“开放源码并引入第三方审查”。&lt;/p&gt;&#xA;&lt;p&gt;但只要具备基础的系统工程常识就会明白，这些承诺在技术架构上是无法自证的。所谓的“即刻销毁”属于不可验证的单方面声明，外界无法核验远端是否驻留有预热缓存、派生向量索引或冷备快照；在缺乏可重现构建（reproducible builds）的前提下，“已经修复”依然完全依赖对闭源分发版本的盲信。至于未来计划中的开源，如果仅仅是将前端交互层开放，而核心逻辑依然强依赖于私有后端、剥夺用户的本地独立部署权，那么这种“开源”充其量只是把协议界面做成了一扇单向橱窗：代码可以供人围观，但决定系统如何运行、数据如何解密并参与生成的私钥与模型后端，自始至终掌握在服务商手里。&lt;/p&gt;&#xA;&lt;p&gt;今天许多讨论倾向于把视线局限在“隐私协议是否合规”、“数据是否用于训练”、“日志保留了多少天”，却避开了最底层的系统矛盾：我们究竟是从什么时候开始，心安理得地把整个开发环境的最高执行权，让渡给了一个不可审计的专有黑盒？&lt;/p&gt;&#xA;&lt;p&gt;当下的 AI Coding Agent 已经不是传统的文本补全插件，它在本地拥有接近开发者的系统特权——遍历代码库、执行终端命令、读写配置文件、调度 Git、调用外置工具，并在后台建立网络连接。当一个常驻进程具备这种级别的系统访问深度时，自由软件所主张的权利就成了最基础的防御工事：开发者必须能够确切获知代码在本地执行了哪些系统调用，必须有能力在源码层面阻断非必要的外部通信，也必须拥有让核心分析任务离线运行的技术选项。&lt;/p&gt;&#xA;&lt;p&gt;放弃了这些基于代码与架构的制衡手段，所谓的“安全”便彻底退化为一种建立在单向承诺上的黑盒盲信：把工作区的核心资产，全盘押注在客户端配置项里的一个布尔开关、一份随时可以单方面解释的免责条款，以及公关稿里那句轻描淡写的“数据已删”之上。&lt;/p&gt;&#xA;&lt;p&gt;不要把这次事件轻描淡写地归结为“AI IDE 的配置项 Bug”。它暴露了一个更深层的技术困境：当开发者放弃了对本地可执行文件的审查与构建能力，本地计算环境的防御边界就会在事实上瓦解；而一旦关键计算强依赖于远端黑盒，用户就失去了任何对等的质询筹码。这次被发现的是 &lt;code&gt;.git&lt;/code&gt; 快照，下一次就可能是私有配置文件、未提交的分支代码或本地服务凭据。&lt;/p&gt;&#xA;&lt;p&gt;解决这个问题的技术路径其实非常清晰：计算应当尽可能收敛在机器主人的掌控之内；即便确实需要协同远端算力，其接口协议、数据管线与服务后端也必须支持透明审查与自由替换。归根结底，开发工具的使命是协助工程师理解并构建系统，而不是在本地操作系统内划出一块不受宿主管辖的特权盲区。如果一套工具在架构设计上连“本地资产由本地掌控”这种最底线的确定性都无法提供，那么无论它的辅助特性多么高效，其底层的信任模型都是不成立的。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>坐标、秘密计算与软件自由：从 GCJ-02 谈起</title>
      <link>https://richardqin.org/journal/2026/09/gcj-02-and-software-freedom.html</link>
      <guid isPermaLink="true">https://richardqin.org/journal/2026/09/gcj-02-and-software-freedom.html</guid>
      <pubDate>Wed, 09 Sep 2026 00:00:00 &#43;0800</pubDate>
      <description>&lt;p&gt;全球卫星导航和地理信息系统广泛使用 &lt;strong&gt;WGS-84（World Geodetic System 1984）&lt;/strong&gt;。在二维地理坐标中，一个位置可以写成&lt;/p&gt;&#xA;&lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34; display=&#34;block&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;W&lt;/mi&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;G&lt;/mi&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo stretchy=&#34;false&#34;&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;)&lt;/mo&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;P_{\mathrm{WGS}}=(\lambda,\varphi),&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;p&gt;其中 &lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt; 为经度，&lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\varphi&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt; 为纬度。GPS、全球 GIS 数据以及大量跨国地理信息系统都可以用这样的坐标描述同一个地理位置。中国正式使用的国家大地坐标基准是 CGCS2000；日常互联网地图中经常引起数百米偏移问题的 &lt;strong&gt;GCJ-02&lt;/strong&gt; 属于另一层空间位置安全处理。中国现行强制性国家标准 GB 20263-2006《导航电子地图安全处理技术基本要求》规定了导航电子地图的安全处理要求，目前仍处于现行状态。(&lt;a href=&#34;https://std.samr.gov.cn/gb/search/gbDetailedCNF?id=71F772D76AF6D3A7E05397BE0A0AB82A&#34; title=&#34;国家标准 - 全国标准信息公共服务平台&#34;&gt;全国标准信息公共服务平台&lt;/a&gt;&#xA;)&lt;/p&gt;&#xA;&lt;p&gt;从数学上，可以把 GCJ-02 抽象地表示为一个坐标变换 &lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;：&lt;/p&gt;&#xA;&lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34; display=&#34;block&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mo stretchy=&#34;false&#34;&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;)&lt;/mo&gt;&lt;mo&gt;⟼&lt;/mo&gt;&lt;mo stretchy=&#34;false&#34;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo mathvariant=&#34;normal&#34; lspace=&#34;0em&#34; rspace=&#34;0em&#34;&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo mathvariant=&#34;normal&#34; lspace=&#34;0em&#34; rspace=&#34;0em&#34;&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo stretchy=&#34;false&#34;&gt;)&lt;/mo&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;.&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;T:(\lambda,\varphi)\longmapsto (\lambda&amp;#x27;,\varphi&amp;#x27;).&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;p&gt;于是&lt;/p&gt;&#xA;&lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34; display=&#34;block&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;G&lt;/mi&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;C&lt;/mi&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;J&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;W&lt;/mi&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;G&lt;/mi&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo stretchy=&#34;false&#34;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;P_{\mathrm{GCJ}}=T(P_{\mathrm{WGS}})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;p&gt;并可以进一步写成&lt;/p&gt;&#xA;&lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34; display=&#34;block&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo mathvariant=&#34;normal&#34; lspace=&#34;0em&#34; rspace=&#34;0em&#34;&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;Δ&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;)&lt;/mo&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\lambda&amp;#x27;=\lambda+\Delta\lambda(\lambda,\varphi),&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34; display=&#34;block&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo mathvariant=&#34;normal&#34; lspace=&#34;0em&#34; rspace=&#34;0em&#34;&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;Δ&lt;/mi&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;)&lt;/mo&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;.&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\varphi&amp;#x27;=\varphi+\Delta\varphi(\lambda,\varphi).&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;p&gt;这里的 &lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;Δ&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\Delta\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt; 与 &lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;Δ&lt;/mi&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\Delta\varphi&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt; 都随地理位置变化，因此这种处理产生的是空间变化的偏移场。若把经纬度差换算成地面距离，在局部范围内可以近似写为&lt;/p&gt;&#xA;&lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34; display=&#34;block&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;≈&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;msqrt&gt;&lt;mrow&gt;&lt;mo stretchy=&#34;false&#34;&gt;(&lt;/mo&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;Δ&lt;/mi&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;msup&gt;&lt;mo stretchy=&#34;false&#34;&gt;)&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo fence=&#34;true&#34;&gt;(&lt;/mo&gt;&lt;mi&gt;cos&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi mathvariant=&#34;normal&#34;&gt;Δ&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo fence=&#34;true&#34;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/msqrt&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;d\approx R \sqrt{ (\Delta\varphi)^2+ \left(\cos\varphi\,\Delta\lambda\right)^2 },&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;p&gt;其中各角度使用弧度，&lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt; 可以近似取地球半径 &lt;span class=&#34;katex&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;6.37&lt;/mn&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mn&gt;6&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;6.37\times10^6&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt; 米。GCJ-02 与 WGS-84 之间常见的数百米差异由这种额外的位置处理产生。公开互联网上存在许多能够近似实现 WGS-84 与 GCJ-02 转换的程序，但国家正式认可的地理信息保密处理算法及参数没有作为公开技术规范发布。2020 年《测绘地理信息管理工作国家秘密目录》明确把“国家认定的地理信息保密处理技术算法及参数”列为机密，保密期限为长期。(&lt;a href=&#34;https://www.mfa.gov.cn/wjb_673085/zzjg_673183/bjhysws_674671/bhflfg/ldbjchxgfl/202303/P020230313534680395614.pdf&#34; title=&#34;自然资源部、国家保密局关于印发《测绘地理信息管&#34;&gt;外交部&lt;/a&gt;&#xA;)&lt;/p&gt;&#xA;&lt;p&gt;这种制度会给计算机用户带来一个非常具体的问题, &lt;strong&gt;同一个地点不能天然地在不同地图系统之间用同一组数字表示。&lt;/strong&gt; 用户从 GPS、照片 EXIF、国际地图、科研数据库或者自由 GIS 软件获得 WGS-84 坐标，再将其放入采用 GCJ-02 数据的系统时，位置可能出现数百米偏移。开发者于是必须追踪每一份地理数据的来源、参考框架和转换历史。跨越中国大陆地图服务边界时，软件还需要保证转换次数和转换方向完全正确。一次遗漏可能造成偏移，一次重复转换同样可能制造新的错误。&lt;/p&gt;&#xA;&lt;p&gt;这种复杂性具有累积效应。一张照片的位置、一条自行车轨迹、一份野外调查记录、一个灾害救援地点或者一个用户自己建立的地理数据库，都可能需要附加“这究竟是什么坐标”的元数据。不同程序之间交换数据时，还必须确保双方对坐标语义作出相同理解。一个原本可以直接复制、保存和计算的位置，由此获得了额外的、具有地域依赖性的转换状态。对于自由软件开发者来说，还存在进一步的问题：公开实现只能根据可观察结果建立近似转换，无法根据公开的正式算法规范独立验证自己是否准确重现国家规定的处理过程。&lt;/p&gt;&#xA;&lt;p&gt;这个问题也触及了&lt;strong&gt;软件自由&lt;/strong&gt;。按照 GNU 工程和自由软件基金会的定义，一个程序尊重用户的软件自由，需要给予用户四项基本自由：按照自己的意愿为任何目的运行程序的自由；研究程序如何工作并修改程序，使它按照自己的意愿完成计算的自由；分发程序副本的自由；以及分发自己修改版本的自由。研究和修改程序要求用户能够获得相应的源代码。(&lt;a href=&#34;https://www.gnu.org/philosophy/free-sw.en.html&#34; title=&#34;What is Free Software? - GNU Project - Free Software Foundation&#34;&gt;GNU&lt;/a&gt;&#xA;)&lt;/p&gt;&#xA;&lt;p&gt;这里有一个重要的原则。&lt;strong&gt;软件自由并不取决于用户本人是否会编程。&lt;/strong&gt; 一个不会阅读 C、Rust 或汇编语言的人仍然拥有研究和修改软件的自由。他可以请朋友修改，可以雇佣程序员修改，可以依赖一个自由软件社区维护修改版本，也可以完全不行使这些自由。自由本身保留了个人控制和集体控制软件的可能性。Stallman 对此作出了很明确的区分, 自由之零和自由之一允许用户对程序实施个人控制，自由之二和自由之三又使用户群体能够共同控制程序；四项自由共同构成用户对程序的控制。(&lt;a href=&#34;https://www.gnu.org/philosophy/free-software-even-more-important.html&#34; title=&#34;Free Software Is Even More Important Now - GNU Project - Free Software Foundation&#34;&gt;GNU&lt;/a&gt;&#xA;)&lt;/p&gt;&#xA;&lt;p&gt;因此，自由软件理念关注的范围比“算法是否公开”更广。某家公司完全可以公开一篇论文，详细描述某个坐标变换公式，同时仍然向用户提供一个禁止研究、修改和重新分发的专有程序。算法知识本身无法赋予用户完整的软件自由。反过来，如果一个自由程序实现某种坐标转换，用户能够查看源代码、删除这段转换、修改它、换成自己的实现并分发修改版本，那么程序层面的四项自由仍然存在。评价一项计算是否自由，需要考察&lt;strong&gt;谁最终控制执行这项计算的程序&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;这一点正是 FSF 和 RMS 对专有软件提出伦理批评的基础。在这一思想体系中，当用户拥有四项自由时，用户能够个人地和集体地控制程序；当这些自由被剥夺时，程序的开发者或者其他控制者取得了支配用户计算的权力。GNU 工程因此把专有软件视为一种不公正的权力关系，并主张用户拒绝在自己拥有或经常使用的计算机上运行非自由软件。(&lt;a href=&#34;https://www.gnu.org/philosophy/free-software-even-more-important.html&#34; title=&#34;Free Software Is Even More Important Now - GNU Project - Free Software Foundation&#34;&gt;GNU&lt;/a&gt;&#xA;)&lt;/p&gt;&#xA;&lt;p&gt;GCJ-02 问题应当按照这个原则精确判断。如果某个地图程序在用户的计算机上执行坐标安全处理，同时用户没有研究、修改、删除或者替换这段程序的自由，那么这属于非自由软件所进行的计算。算法因法律规定而保持秘密，会进一步阻止用户理解和独立实现这项处理。当计算发生在远程服务器上，问题还涉及用户对远程计算的控制。RMS 将一种特定情形称为 &lt;strong&gt;SaaSS（Service as a Software Substitute，软件替代服务）&lt;/strong&gt;：用户把本来属于自己的计算任务交给他人的服务器执行，服务器上的程序受服务提供者控制，用户无法研究和修改执行自己计算的程序。单纯提供已经发布的数据与替用户执行计算属于不同技术情形，因此具体地图服务需要根据数据流逐项判断。(&lt;a href=&#34;https://www.gnu.org/philosophy/free-software-even-more-important&#34; title=&#34;Free Software Is Even More Important Now - GNU Project - Free Software Foundation&#34;&gt;GNU&lt;/a&gt;&#xA;)&lt;/p&gt;&#xA;&lt;p&gt;自由软件运动由此提出了一条比“提高透明度”更严格的要求：&lt;strong&gt;用户应当控制自己的计算。&lt;/strong&gt; 仅仅告诉用户“系统进行了安全处理”无法给予自由之一；仅仅公布处理公式也无法给予自由之二和自由之三；允许查看代码却禁止修改，同样缺少基本的软件自由。源代码可得、运行权、修改权和分享权共同决定程序是否尊重用户。&lt;/p&gt;&#xA;&lt;p&gt;国家当然可能拥有需要保护的军事和地理信息。信息发布者可以决定哪些秘密材料能够公开，社会也可以围绕国家秘密的范围建立法律制度。然而，当一项制度进一步规定普通人的计算机必须如何处理用户自己的数据，并使用户无法完全研究和控制执行这一任务的软件时，就会产生一个独立的软件自由问题。国家安全的理由不会自动消除个人对自己计算的自由要求。对于任何这样的限制，社会都有理由追问其必要性、有效性、范围和持续时间；对于已经可以通过公开数据和公开程序高度近似恢复的坐标变换，这种追问尤其具有现实意义。&lt;/p&gt;&#xA;&lt;p&gt;自由软件运动最终要求我们重新考虑计算机中的权力关系。我们每天使用计算机处理自己的文字、位置、通信、照片和生活记录。能够亲自理解程序的人只是用户中的一部分，四项软件自由使所有用户都可以通过个人选择和社会合作获得对程序的控制。我们可以使用别人编写的软件，也可以请别人研究它；可以保留原来的程序，也可以修改或者替换它；可以独立行动，也可以与整个社区分享改进。&lt;/p&gt;&#xA;&lt;p&gt;因此，我们应当拒绝要求用户放弃四项基本软件自由的计算制度，并推动自由软件取代专有软件。对于地图和坐标处理，这意味着支持能够自由运行、研究、修改和分享的程序，支持公开且可互操作的数据格式，并要求用户能够控制发生在自己计算机上的坐标处理。自由软件所维护的目标十分明确：&lt;strong&gt;程序应当由它的用户共同控制，用户的计算应当属于用户自己。&lt;/strong&gt; (&lt;a href=&#34;https://www.gnu.org/philosophy/free-sw.en.html&#34; title=&#34;What is Free Software? - GNU Project - Free Software Foundation&#34;&gt;GNU&lt;/a&gt;&#xA;)&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>为什么我仍然喜欢纯文本</title>
      <link>https://richardqin.org/journal/2026/08/why-i-still-like-plain-text.html</link>
      <guid isPermaLink="true">https://richardqin.org/journal/2026/08/why-i-still-like-plain-text.html</guid>
      <pubDate>Sat, 08 Aug 2026 00:00:00 &#43;0800</pubDate>
      <description>&lt;p&gt;纯文本提供了一种很可靠的自由, 内容不依赖某个特定程序才能被阅读. 编辑器会变化, 操作系统会变化, 而一份 UTF-8 文本仍然可以被 &lt;code&gt;cat&lt;/code&gt;, &lt;code&gt;less&lt;/code&gt;, 浏览器和打印机理解.&lt;/p&gt;&#xA;&lt;h2 id=&#34;文件本身就是接口&#34;&gt;文件本身就是接口&lt;/h2&gt;&#xA;&lt;p&gt;当笔记保存在普通文件里时, 备份, 比较和搜索都可以交给成熟的小工具. 下面的命令列出 Markdown 文件, 并在其中查找一个词:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-sh&#34;&gt;find notes -type f -name &#39;*.md&#39; -print&#xA;grep -R &#39;portable&#39; notes&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;格式应当服务于内容&#34;&gt;格式应当服务于内容&lt;/h2&gt;&#xA;&lt;p&gt;Markdown 对我有用, 是因为源文件依然接近自然文本. 标题, 列表和链接提供了足够的结构.&lt;/p&gt;&#xA;&lt;p&gt;当然, 纯文本并不适合所有材料. 图像, 音频和复杂数据各有更合适的格式.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>A Small Place on the Open Web</title>
      <link>https://richardqin.org/journal/2026/07/a-small-place-on-the-open-web.html</link>
      <guid isPermaLink="true">https://richardqin.org/journal/2026/07/a-small-place-on-the-open-web.html</guid>
      <pubDate>Tue, 21 Jul 2026 00:00:00 &#43;0800</pubDate>
      <description>&lt;p&gt;A personal website can be a stable collection of documents with understandable URLs.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;A useful page makes sense when opened directly, followed from a link, or read years later.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;small-pieces&#34;&gt;Small pieces&lt;/h2&gt;&#xA;&lt;p&gt;The site depends on a short stack:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Layer&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Responsibility&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Markdown&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Source documents&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hugo&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Build-time rendering&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;HTML and CSS&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Reading and navigation&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Each layer has a focused role. Markdown keeps the source readable, Hugo turns it into static pages, and HTML and CSS give every document clear structure and presentation.&lt;/p&gt;&#xA;&lt;p&gt;The browser receives each document directly and makes its built-in features available to the reader.&lt;/p&gt;&#xA;&lt;h2 id=&#34;durable-links&#34;&gt;Durable links&lt;/h2&gt;&#xA;&lt;p&gt;Readable URLs are a small courtesy to people and programs. They support citation, reveal document structure, and give each page a durable address.&lt;/p&gt;&#xA;&lt;p&gt;Stable paths help individual documents participate in the wider web. Bookmarks, citations, feeds, and source links can all refer to the same page over time.&lt;/p&gt;&#xA;&lt;h2 id=&#34;steady-growth&#34;&gt;Steady growth&lt;/h2&gt;&#xA;&lt;p&gt;Regular additions turn a small site into a personal archive. Journal entries capture moments and observations. Notes gather durable technical knowledge. A consistent structure lets the collection grow naturally.&lt;/p&gt;&#xA;&lt;p&gt;Each revision strengthens a document and gives readers a current version at the same address. Pages, feeds, and source files together record the site&amp;rsquo;s continuing history.&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
