在扩展脚本方面,用户为何不太愿意接受 Python ?

查看 203|回复 15
作者:MegatronKing   
大家好,我是Reqable的开发者,给大家分享我在推广 Python 作为程序扩展脚本时遇到的一些问题和思考。如果大家对这个方面有想法和建议也非常欢迎一起讨论,不甚感激。
先说下大体的背景,我的产品 Reqable 是 API 抓包和测试一体化工具。这一类工具基本上都会用到扩展脚本,比如 Fiddler 使用了 FiddlerScript 作为扩展脚本,Postman 和 Proxyman 等使用 Javascript 。用户可以编写扩展脚本来动态地修改请求或者响应数据,相比静态功能来说,提供了更多的可能性。
在设计 Reqable 的时候,我考虑了两种方案:方案 A 是 Javacript ,方案 B 是 Python ,最后定下来方案 B 。谈谈我当初的考虑,Reqable 本身是基于 Flutter 而不是基于 Web 引擎,如果需要支持 Javacript 需要像 React Native 一样额外引入 JSCore 来解释执行 Javacript ,技术实现上来说稍微麻烦点但难度也不大,包体积会大一些但也还好。对于 Python 而言,主流 Windows 和 Mac 上系统默认都已经预安装了,用 Linux 的基本上也会安装,所以可以直接借助用户的 Python 环境来执行脚本,不需要引入额外的库。另外,我考虑到 Python 的在用户宽度可能会更广,比如测试工程师、安全工程师、爬虫工程师等等,而 Javacript 在前端会更加流行。综上原因,最终我选择了 Python 作为扩展脚本语言。
但是想法虽好,用户却不是很买单。有些用户建议我支持 Javacript 脚本,还有一些说 Python 直接劝退。这些反馈让我不得不重新审视之前的想法,考虑是否需要增加 Javascript 作为扩展脚本。当然,维护两套扩展脚本框架我不是很情愿,这个会极大地增加后续维护和迭代的工作量。技术实现难度反而是其次,大佬 Levi 也很贴心地给我提供了他产品目前使用 Javascript 作为扩展脚本的方案: https://zhuanlan.zhihu.com/p/672772729 。
说回目前的困境,大家不太能接受 Python 的原因,我的个人的反思和调研出来的是以下几点:
  • Python 作为扩展脚本不多见,或者和用户的技术栈不匹配。
  • Reqable 内置的代码编辑器功能不完善,无法流畅编写 Python 代码。
  • 生态不佳,大家更喜欢现成拿来就用的而不是自己去编写。

    针对这几个原因,我做了一些努力和尝试,希望能再挣扎几下:
    第一点:技术栈的问题目前无解,但我还是相信 Python 的用户宽度更广。当然,如果能熟用 GPT ,技术栈也不是什么问题,直接提需求让 GPT 写。
    第二点:确实是一个很大的问题,例如代码编辑器缺少代码提示和补全,调试功能不方便。针对这个问题,我完善了代码编辑器,加上了代码提示和补全功能。对于调试,则提供了日志控制台功能,当然断点调试目前还不知道怎么去支持。

    第三点:对于拿来主义,我的设想是提供一个开源的公共模板仓库,将一些常用的脚本放进去,用户可以直接在 Reqable 里面 Fork 并使用。例如,我写了个利用 Python 扩展脚本自动生成并添加阿里云 OSS 资源访问的签名头部。

    我暂时就想到了这么多,效果好不好目前还不确定,如果大家还有想法和见解,欢迎补充。

    Python, 脚本, javacript, reqable

  • nagisaushio   
    > Windows 已经预安装了
    真的吗?
    paulluis2dev   
    @nagisaushio bullshit ,莫非我安装的假 Windows ,10 和 11 都不预带
    Cyshall   
    提一嘴,windows11 23H2 并没有预安装 python 。
    MegatronKing
    OP
      
    @nagisaushio 额,确认了下,这里表述可能有点问题。部分 linux 是自带的,windows 可以直接命令行跳转应用商店安装: https://devblogs.microsoft.com/python/python-in-the-windows-10-may-2019-update/ ,不过很奇怪,我记得当初调研过,在 Windows 的 C 盘某个系统目录里找到了 python3 ,找其他人确认也都有。
    nagisaushio   
    @MegatronKing 我印象里 windows 是没有预装,但流行的 linux 发行版都有。但无论有没有预装,我都不建议直接调系统的 python 。一个是版本不统一,一个是装包可能打乱系统。最好还是自带运行时
    MegatronKing
    OP
      
    关于 windows 是否预安装的问题,再次确认了下,标准的 windows 确实没有预安装,但是根据 python 官方的说法,某些 windows 可能还是预先安装了 python 的。参考: https://docs.python.org/zh-cn/3/faq/installed.html#why-is-python-installed-on-my-machine
    tcpdump   
    @paulluis2dev #2 Windows 11 电竞版 Pro Max Ultra 预装了
    0o0O0o0O0o   
    - 首选 js ,你的应用可是有手机版,我不觉得在手机上写 py 体验会比写 js 好
    - win11 应该是没有预装 python ,倒是有两个 python 别名会指向商店
    - 其实我觉得最好还是都支持,我建议设计成未来可以灵活添加,或许还要考虑到扩展的性能问题
    - 在不侵权的前提下兼容同类产品的生态
    - “直接借助用户的 Python 环境来执行脚本”,安全性考虑了吗?
    MegatronKing
    OP
      
    @nagisaushio #5 感谢建议。我考虑过内置集成运行时,但是有个问题,不方便使用 pip3 已安装的三方库,需要再安装一遍。这个和 Javascript 作为扩展脚本是类似的一个缺点。另外,我是以 3.6 作为最低版本,版本问题应该不大。关于包管理,一般用户可能会有多个 python 环境切换,防止打乱全局的包管理。应用内是也可以配置指定 python 环境的。
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部