• 首页
  • 加入
  • RSS
  • Wireshark构建编译随笔

    Sunday, September 24, 2023
    deepin 社区官方博客 #deepin-community:deepin.org


    随笔

    在给Wireshark做完编译、调整、上架之后,我打算到论坛里看看大家对开源应用有没有什么疑惑的地方,没想到大家现在对开源的关注度这么高了。在看到最近一些闹得比较沸沸扬扬的话题之后,我也对我现在开源应用适配工作的很多地方产生了疑惑,我这样跟开源还有关系吗?

    重新适配开源应用的意义

    在一些实际的场景中,其实有很多"重复造轮子"的情况,即明确存在其他开源项目可用来替代的情况下仍然自己重头造一个项目来实现相同/类似的功能。比如各大桌面环境都有自己的一套文管:DDE的dde-file-manager、KDE的Dolphin,但严格意义上他们不是重复造轮子,而是更好地融入桌面环境中。 另外一种情况就是我现在做的适配开源应用,我的作品很大一部分可以在系统的应用商店中找到。但细心的小伙伴可能会发现:

    易用性

    首先问大家一个问题,抛开命令真爱粉不谈,你认为用apt安装包方便还是在应用商店看着截图、应用描述、评论等等来一站式点击"安装"方便? 虽然命令也可以直接安装各种系统仓内的各种包,但对于新手用户个人认为还是有一定难度的。而且不使用应用商店来下载,很有可能就与应用商店各种特性擦肩而过了,比如定期的应用推荐、应用版本迭代的changelog。

    用户侧体验优化

    不知道大家有没有体验最近Wireshark-4.0.8,有使用过的朋友应该会发现我们很贴心的准备了两个desktop启动方式,一个是普通模式一个是root模式,中间的取舍故事今天就不多赘述了,大家有兴趣可以后面单独拎出来。 至于为什么会设置这么两个模式?其实我在适配开源项目前一般都会预览大家在应用商店里的反馈,这次的举动主要是由于Wireshark用普通user权限可以打开程序,但只是能看个壳子,只有root权限打开才是完整的功能。而且大家也反馈了比较多这个情况,我在评估一段之间、测试可行性之后给大家带来了"两个desktop+提示窗+双语支持"的独家体验。 “两个desktop+提示窗"是为了让大家方便以不同的模式打开,“提示窗"则是根据不同模式给大家展示相关提示信息,“双语支持"则是根据系统语言来设置中文和其他语言下分别显示中文提示和英文提示,一定程度上兼顾海外友人的体验。

    image

    我观察了下,Wireshark编译之后的原版desktop文件是不提供这种级别的优化的;而现在deepin应用商店里的版本实实在在可以做到了这个层次的优化,亲近人心。 大家可以把细节打在评论上。

    生态多样性

    严格意义上,每个包只有包名是相对唯一的,这也是因为大部分包管理器都会通过包名来检查该包的情况。但对于同一个应用特别是开源项目而言,它允许被多次修改分发,除了用版本号用以区分,也并没有强制要求每个人维护的包名都遵循同一个。 但为什么Debian等主流发行版一般包名都会随着版本迭代而保留使用,一般并不轻易修改包名?个人认为有以下几个可能:

    稳定性测试

    其实在开源应用上架到应用商店前都会有测试流程,大家也很难保障哪一个版本会有致命问题,或者哪一个版本会丧失预期特性。所以我们在选包之后,一般是先编译一遍,没有致命问题我们才进行其他操作,尽最大努力保驾护航。

    适配开源应用的难度

    要是你觉得我们就是单纯把一些官方提供的二进制归档文件甚至是直接可用的deb包转化来上架应用商店,比如Visual Studio Code。那我很坦白告诉你,就是单纯几个字,“解包–运行–重新打包”。 但如果你是看了上文内容的话,就知道事情并不简单了。不只是从源码开始编译,核心在于如何与终端用户、各大开发者站在统一战线。当然,这里指的并不只是不断去满足用户的需要,这种可能会比较适合C端方向。我更希望的,是帮助用户在专业性比较强的问题面前能够提供满意的答卷,比如这次Wireshark,其实大部分用户真的不一定知道需要使用root来运行,所以我们做了优化。 应用/软件包只是一个普通产出物,不可替代的其实是整个适配过程中与其他人产生差异化的用户思维。

    结语

    曾经,我觉得我适配出来的开源应用只上架应用商店确实是玷污了开源,而且我并不是对程序Core本身做出了代码性贡献,这些优化充其量可能也就是普通建议而已。但后来,能看到大家对开源的支持,我也释怀了。 我希望以后有机会可以分享我在编译中发生的故事,同时也很支持使用其他发行版的小伙伴可以使用我在deepin上编译、优化调整之后的开源应用。 我也希望在开源这片蓝天里,我不是孤军奋战。