calibre(电子书管理工具)作者说:老子自己维护 Python 2 :doge: - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
est
V2EX    Python

calibre(电子书管理工具)作者说:老子自己维护 Python 2 doge

  •  3
     
  •   est
    est 2018-04-16 11:55:49 +08:00 15260 次点击
    这是一个创建于 2737 天前的主题,其中的信息可能已经有所发展或是发生改变。
    68 条回复    2018-04-23 08:54:13 +08:00
    jasonyang9
        1
    jasonyang9  
       2018-04-16 11:58:17 +08:00
    >I sincerely hope this is a joke.
    aristotll
        2
    aristotll  
       2018-04-16 12:17:49 +08:00
    > Waaaaay too much work -- calibre has half a MILLION lines of python and python extension code


    迁移成本太大了 https://bugs.launchpad.net/calibre/+bug/1456642

    作者肯定不想改的
    shansing
        3
    shansing  
       2018-04-16 12:48:17 +08:00
    好奇标题里是怎么加的 doge 头。
    SuperMild
        4
    SuperMild  
       2018-04-16 12:52:06 +08:00
    所谓维护,并不是维护整个 python2 的全部代码,等有涉及 calibre 的 bug 爆出来他再处理一下,的确比迁移省事。
    fork
        5
    fork  
       2018-04-16 12:54:19 +08:00
    好想给 kovid 按个赞,可惜 lauchpad 不支持这种围观。。。。。
    wizardforcel
        6
    wizardforcel  
       2018-04-16 12:55:22 +08:00 via Android
    mdzz
    run2
        7
    run2  
       2018-04-16 12:59:11 +08:00   1
    @shansing #3 使用 :doge:
    locktionc
        8
    locktionc  
       2018-04-16 13:10:51 +08:00
    如果他是认真的,那么这种人就是抵制时代的守旧老人,是会被订在历史的耻辱柱上的人。
    XIVN1987
        9
    XIVN1987  
       2018-04-16 13:12:56 +08:00   6
    @locktionc

    站着说话不腰疼,,要不你帮作者把近百万行的代码给移植一下,,或者你支付作者 100 万美金让作者把代码移植一下
    hxndg
        10
    hxndg  
       2018-04-16 13:19:27 +08:00
    @locktionc
    那你就是二战之后美国五角大楼养的那批夸夸其谈,觉得数学能解决一切的理论家了?
    xuboying
        11
    xuboying  
       2018-04-16 13:21:46 +08:00   3
    听着就不怎么靠谱
    要么作者 python 用法不对,要么 python 基金会的 2-3 过渡做的不好,要么就是 python 的这种桌面软件的开发框架的问题
    就 python 的使用量来看
    八成是作者自己的问题
    kmahyyg
        12
    kmahyyg  
       2018-04-16 13:29:22 +08:00 via iPad
    那为什么那么多库都迁移到了 py3 @XIVN1987
    xpresslink
        13
    xpresslink  
       2018-04-16 13:32:42 +08:00
    @locktionc 你的思维和价值观才有问题。人家又没有阻碍 python3 发展。
    你要是有大量实际运维经验,就不会说这种屁话了。
    wizardforcel
        14
    wizardforcel  
       2018-04-16 13:37:24 +08:00 via Android
    @hxndg 数学的确能拟合一切,但不是理论数学。
    hxndg
        15
    hxndg  
       2018-04-16 13:39:43 +08:00
    @wizardforcel
    冷战那批更确切的叫做运筹学等一大堆理论数学了,ps 拟合的代价你来出?
    noNOno
        16
    noNOno  
       2018-04-16 13:52:08 +08:00
    跨年度笑话?-v-
    noNOno
        17
    noNOno  
       2018-04-16 13:55:23 +08:00   15
    为什么不迁移到 python3 ?
    迁移是不可能迁移的,这辈子不可能迁移的。重构代码又不会做,只有自己维护 python2,才能维持得了生活这样子.
    fork3rt
        18
    fork3rt  
       2018-04-16 14:08:26 +08:00
    :doge Python3 谁用谁知道,真爽~
    timonwong
        19
    timonwong  
       2018-04-16 14:09:41 +08:00
    作者题外话就是「你行你上啊,要么打我钱」
    murmur
        20
    murmur  
       2018-04-16 14:11:51 +08:00
    @locktionc 这个话要放嵌入式领域会被打死的
    也就是互联网软件随便推倒重来或者直接倒闭才敢这么玩
    dorentus
        21
    dorentus  
       2018-04-16 14:12:25 +08:00
    @xuboying 我觉得还是 2-3 过渡得不好


    @kmahyyg 库和完整的程序还是不一样的。

    作者在上面给出链接里面也说了,代码量太大,而且他觉得 python3 也没有提供切实的好处,反而会有性能损耗,于是不愿意改。

    作为最终用户,为什么要**那么**关心别人的程序是用什么语言写的呢?
    msg7086
        22
    msg7086  
       2018-04-16 14:13:09 +08:00
    @noNOno 此处应有 gif。
    dumbass
        24
    dumbass  
       2018-04-16 14:19:45 +08:00   7
    突然发现作者给的介绍视频里有一本奇怪的书![图片]( )
    quickma
        25
    quickma  
       2018-04-16 14:22:42 +08:00   5
    @locktionc
    @xuboying
    @kmahyyg
    @noNOno

    1) Waaaaay too much work -- calibre has half a MILLION lines of python and python extension code

    2) calibre has lots and lots of code that deals with bytes -- network protocols, binary file formats, etc. Python 3 is simply worse than python 2 for this use case. It has a crippled bytes type among other unfelicities.

    3) calibre has lots and lots of native code that interfaces with external native code. On windows, all this code uses UTF-16 encoded strings. All that interface code would need to be re-written and would also become less efficient since in python 2 string are stored internall in UTF-16 whereas in python 3 they would need to be cross-converted.

    4) There is absolutely nothing in python 3 that makes it worth the effort. If python 3 ever grows something that makes it worth the effort, I will simply backport it to python 2. I already maintain my own python 2 fork for windows (see my github repos).

    The only case in which I will accept patches for python 3 is if they have:

    a) negligible runtime cost
    b) minimal code complexity/maintainability cost
    c) Low probability of breakage -- either the patches are dead simply or they come with lots of tests
    quickma
        26
    quickma  
       2018-04-16 14:23:10 +08:00   1
    有理有据,你们看过?
    blaxmirror
        27
    blaxmirror  
       2018-04-16 14:23:41 +08:00
    @bojackhorseman 哈哈哈哈,没毛病
    youxiachai
        28
    youxiachai  
       2018-04-16 14:24:33 +08:00
    说那么多干嘛...
    看不惯作者的..

    打钱..或者帮忙移植啊...
    wizardforcel
        29
    wizardforcel  
       2018-04-16 14:30:18 +08:00 via Android
    @hxndg 运筹学是理论数学???

    让我再笑一会儿。
    est
        30
    est  
    OP
       2018-04-16 14:32:21 +08:00
    @bojackhorseman 亮了。。。
    xuboying
        31
    xuboying  
       2018-04-16 14:39:47 +08:00
    @x7395759 #25 打嘴跑没意义,谁让作者用 utf16 的,留下了如此麻烦的后遗症。py 党自己去争吧。看不惯的大牛自己用 py3 写一个好了。编码问题肯定是没了。
    其实最终用户也不关心是什么版本,或者是不是 python
    YvesX
        32
    YvesX  
       2018-04-16 14:39:57 +08:00
    我的想法就是别人作者爱用啥用啥,能维护好就 WOW 一下,不是很懂有啥“抵制时代”和“耻辱”的。且不说 Python2 顶多是不值得再去新学,没有什么特别古旧的缺点,就算是上古代码,别人能维护得 works well 不比拿新技术对着文档写 hello world 厉害多了?
    zhicheng
        33
    zhicheng  
       2018-04-16 15:45:11 +08:00
    Python 官方实现太守旧了,用的竟然是 C,而且还是 C99 不是 C11,天呐这个标准都快 20 年了,一群守旧的老顽固。他们应该用 Go 或者 Rust 重写一遍 Python 官方实现,哪怕不用 Go/Rust 也应该用 C++/Java 重写。

    而 Linus 应该被烧死,因为 Linux 还在用 C89。
    est
        34
    est  
    OP
       2018-04-16 15:50:26 +08:00
    @xuboying JVM 现在也是 ucs2。。。。
    goodryb
        35
    goodryb  
       2018-04-16 15:59:29 +08:00
    calibre 收费吗,如果不收费,凭什么 BB
    cnbobolee
        36
    cnbobolee  
       2018-04-16 17:20:11 +08:00
    2 到 3 迁移成本太大,况且代码那么多,而且 2->3 过渡本来就做的不好,3 几乎不兼容 2。
    zyqf
        37
    zyqf  
       2018-04-16 17:26:45 +08:00 via Android
    Antidictator
        38
    Antidictator  
       2018-04-16 17:29:17 +08:00
    @shansing #3 V2EX plus 件
    noNOno
        39
    noNOno  
       2018-04-16 17:56:28 +08:00
    @x7395759 哈哈,看是看了,不过要放松点嘛,反正我们帮不上忙
    sunzhenyucn
        40
    sunzhenyucn  
       2018-04-16 18:41:04 +08:00 via Android
    @zhicheng 高级黑 23333
    Shura
        41
    Shura  
       2018-04-16 19:34:39 +08:00
    作者自己选择编程语言的权利还是有的吧?看不下去的欢迎 fork 然后转成 python3: https://github.com/kovidgoyal/calibre
    hxndg
        42
    hxndg  
       2018-04-16 20:06:39 +08:00 via Android
    @wizardforcel
    嗯,我记错了,回去又翻了一下战略一部历史,发现是管理学
    monsterxx03
        43
    monsterxx03  
       2018-04-16 20:33:57 +08:00 via iPhone
    说 2 到 3 好迁的,都没维护过多大的 codebase
    lihongjie0209
        44
    lihongjie0209  
       2018-04-16 20:57:00 +08:00
    @locktionc #8 图样图森破
    mephistophilis
        45
    mephistophilis  
       2018-04-16 23:39:43 +08:00 via iPhone
    @zhicheng 用新版本也能用出优越感?
    msg7086
        46
    msg7086  
       2018-04-16 23:58:14 +08:00
    @mephistophilis 连讽刺都看不出来?
    dalieba
        47
    dalieba  
       2018-04-17 00:22:06 +08:00 via Android
    这样的话应该开个 git 分支,专门在那做 Py3 移植。
    VYSE
        48
    VYSE  
       2018-04-17 00:50:49 +08:00 via Android
    @est 上次自己编译 PY2 发现 Ubuntu maintainer 强制了 ucs4....
    billlee
        49
    billlee  
       2018-04-17 01:34:42 +08:00
    主要还是 C 扩展不好迁吧
    Gandum
        50
    Gandum  
       2018-04-17 01:47:21 +08:00   6
    我倒是觉得 calibre 实在是太臃肿了,所以有些积重难返。

    应该设计成核心功能+外围功能的模式,核心功能就两个,ebook-convert 和 calibredb,别的一律不要。

    外围功能里面才应该有 rss,smtp,calibre-server,ebook-viewer,ebook-edit 等等等等这些,现在你又要当服务器,又要当编辑器,又要当浏览器,又要能智能分析,又要能发邮件,又要能抓 rss,又要能添加各种插件,还要适配各种屏幕各种设备。一般人根本玩不懂的,而且说实话,用力太过分散导致很多组件质量确实不太理想。我用 calibre 就只用 ebook-convert 这一个功能,而且从来不打开它那个很慢而且操作很麻烦的 GUI,其他的排版之类的功能比 calibre 好用的软件很多,平心而论,calibre 自带的编辑器我想用过的人都知道,很难用的。

    很多开源软件都是这种设计思路嘛,比如视频播放器 mpv,功能很简单,就是解码播放视频,至于衍生功能就交给其他软件,围绕 mpv 的衍生软件多到有专门的 wiki 表单,几十种可以让你自由选择。再比如说 vim,原本功能也是很单纯也很专业,但是衍生功能多的不得了,都是类似的思路。
    ooToo
        51
    ooToo  
       2018-04-17 06:44:51 +08:00 via iPhone
    @Gandum calibre 就是技术牛逼,产品烂的典型。不过是开源的,不能要求太高…
    xiaket
        52
    xiaket  
       2018-04-17 07:40:51 +08:00
    完全同意 @Gandum 的意见,calibre 一开始从设计上就不合理,一味堆功能,到头来代码难以维护,也没有新鲜血液进入社区贡献代码。从功能的角度而言,calibre 也许是成功的,但从社区成熟度的角度来看,calibre 是不太成功的。
    fffonion
        53
    fffonion  
       2018-04-17 08:18:40 +08:00

    Forbidden
        54
    Forbidden  
       2018-04-17 09:25:45 +08:00
    想起一个事
    基于 COBOL 的系统,不要说迁移了,就连维护都成问题
    现在主要靠银行、证券、保险公司支撑……
    doubleflower
        55
    doubleflower  
       2018-04-17 09:45:43 +08:00
    这么多代码迁移肯定是不现实的

    2 转到 3 太不容易了,相当于 30%重写量
    cedoo
        56
    cedoo  
       2018-04-17 09:51:46 +08:00
    去年的新闻了
    timonwong
        57
    timonwong  
       2018-04-17 10:28:15 +08:00
    @est JVM 曾经 ucs2,早已是 utf16
    clino
        58
    clino  
       2018-04-17 10:38:45 +08:00
    @Gandum #50 +1
    应该抽取出关键库做 py2/3 兼容
    Battle
        59
    Battle  
       2018-04-17 10:46:44 +08:00
    双击 666
    glasslion
        60
    glasslion  
       2018-04-17 11:24:50 +08:00
    作者的理由:
    1. 迁移工作量太大, 好处又没多少
    2. 作者本身不反对其他人提交 Python3 的 patch(要同时兼容 Python2/3)
    3. Python3 在处理二进制是, 比 Python2 还难用
    没什么大问题啊
    orangeade
        61
    orangeade  
       2018-04-17 11:54:27 +08:00 via Android
    @Gandum 有什么支持格式和排版和 calibre 的 eBook viewer 相似的电子书阅读器么,calibre 阅读电子书功能和排版都还好,就是太慢了
    tempdban
        62
    tempdban  
       2018-04-17 12:31:59 +08:00 via Android
    楼上的说不合理的不要打嘴炮帮忙改啊
    ech0x
        63
    ech0x  
       2018-04-17 12:34:09 +08:00 via iPhone
    @Forbidden 所以大型机现在还活的好好的
    DT27
        64
    DT27  
       2018-04-17 12:51:14 +08:00
    围观伸手党
    shijingshijing
        65
    shijingshijing  
       2018-04-17 13:06:23 +08:00 via iPhone
    @locktionc 米蒂的劾武裤里还有一堆电脑跑 windows 3.x, windows 95 呢,还有一堆用软盘加载的呢。就这种玩意儿还得撑十年二十年才能逐步 phase out 呢

    有本事你给人家去部署一把 win 10,去把当时开发编译用的 TI 的整套 IDE 工具链都给升级一把,还有底层驱动和 firnware 也重写一把,忘记说了,好多控制器都是 8 位的,你也给升级一下到 64 位处理器。

    话说高可靠性领域,还没有哪家出来吹牛逼说转移到全套 64 位方案上面去的吧。位处理器都用的好好的。现在天上刚上去的都在用 386 处理器呢
    est
        66
    est  
    OP
       2018-04-17 14:07:21 +08:00
    @timonwong utf16 应该就是 ucs2 + surrogate 的补丁吧。
    fish267
        67
    fish267  
       2018-04-17 14:21:23 +08:00
    Mavious
    &nbs;   68
    Mavious  
       2018-04-23 08:54:13 +08:00
    好几个老牌工具都不支持 3,很烦啊。
    不仅仅是 calibre,还有 cali 下面一大堆工具,deDRM 也是这辈子死在 2 了。
    adobe 的工具包,吊在 2 上不放手。
    我不想研究同装 2 个版本的 py 问题。。

    so,如果都这么死抱着 2,那就不用呗。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4739 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 10:01 PVG 18:01 LAX 03:01 JFK 06:01
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86