V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yyyyda
V2EX  ›  Java

技术老大对开发闭源了基础库,打算自己写一套代替

  •  
  •   yyyyda · 150 天前 · 8391 次点击
    这是一个创建于 150 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司两个后端项目公用一个基础库,技术老大从之前项目中抽出来的,然后闭源了(他还在公司)。。。只给 jar 包,没有代码,也没有文档,现在开发起来很 tm 蛋疼,像吃了苍蝇一样。

    具体内容包括数据库访问,授权验证,http 服务器,程序启动和销毁等等,想改点东西都得通过他,比如想加个 log,记一下所有的 http 访问记录,只有在他的库里才能改。

    这不只是一个技术问题,涉及到公司和技术老大之间的一堆事。

    现在小弟在考虑通过技术手段解决,自己写一遍,尽量少动业务,去掉他的库,在考虑 Spring,但是没有相关的经验,各位有没有推荐的 spring 相关项目可以参考一下?或者有没有类似的经历交流交流?

    这个库大概包括:

    1. 数据库访问、查询
    2. http 服务器
    3. 授权验证
    4. 用户系统
    5. tcp 模块
    6. 一些自己封装的工具函数,处理字符串、文件等(基本就是 Apache commons 再套一层)

    公司现在的技术栈是 kotlin,mysql,jdbc, http 服务器用的 javalin,没上大框架。他的库不知道多少代码,估计大概一万行左右

    第 1 条附言  ·  149 天前
    确实不是个技术问题。不过我还是不太明白他为啥这么搞我,之前项目就我们两个后端,三成是我写的,七成是他写的,结果搞得我现在像个局外人,很多东西根本没法改。而且现在他转项目了,现在就剩我一个后端。不给代码仓库权限,不给文档就算了,jar 包也不给个 sources 包,真 人上人。Apache commons 不比他的吊库牛逼,人家也没像他这样。他的库 Kotlin 写的,class 文件反编译出来的 java 看起来比较费劲,尤其是在用一些 kotlin 特性的时候,比如 inline,reified 这些,不过也好,就当学习了。
    打算转项目了,不想受这鸟气
    73 条回复    2021-07-21 13:51:30 +08:00
    bl
        1
    bl  
       150 天前
    把他的库去掉,哪里报错改哪里
    coderfuns
        2
    coderfuns  
       150 天前   ❤️ 13
    你都说了他是老大,所以当你这个库写成之时,也就是你离开之日。
    yousabuk
        3
    yousabuk  
       150 天前 via iPhone
    不要这么干
    SilencerL
        4
    SilencerL  
       150 天前   ❤️ 4
    大吃一惊.jpg
    劳动合同里面没写类似“在司期间所有产出均属公司所有”之类的条款吗,没离职就搞这出,离职岂不是还能在里面偷偷加屎?
    keepeye
        5
    keepeye  
       150 天前
    自己开个分支出来慢慢改,哪里报错换哪里
    falcon05
        6
    falcon05  
       150 天前 via iPhone
    别这样,损人害己
    wangkun025
        7
    wangkun025  
       150 天前
    活久见。
    fiypig
        8
    fiypig  
       150 天前
    不要自己改, 只能找他,除非他走了
    还有他这么操作,也差不多也走了吧
    huangmingyou
        9
    huangmingyou  
       150 天前
    大公司里面,源代码不是谁都能全部浏览吧。当初这么搞,肯定是出于安全考虑。
    yaoliyc
        10
    yaoliyc  
       150 天前
    jar 做了加密吗?不然反编译一下都看到了。而且这也不是单纯的技术问题。
    wolfie
        11
    wolfie  
       150 天前
    跟 spring 没关系,就是基础工具,一般轮子 hutool 基本有。
    murmur
        12
    murmur  
       150 天前
    http 服务器,这个东西也要写库的意义何在
    jzphx
        13
    jzphx  
       150 天前
    神仙打架别凑热闹
    yukiww233
        14
    yukiww233  
       150 天前   ❤️ 1
    jar 相当于开源;
    如果只是简单改一些东西注入一些东西的话, 相同路径本地写一份覆盖掉 jar 里的 class 就好
    avastms
        15
    avastms  
       150 天前
    以后开公司机器自带 cron job 每半分钟运行 killall java 杜绝此类问题
    zhuweiyou
        16
    zhuweiyou  
       150 天前
    他是老大 当然听他的
    dadaoqueyi
        17
    dadaoqueyi  
       150 天前
    现成的甩锅对象,有问题就找他不是挺好的嘛。我做的就是平台封装的活,不知道被甩了多少锅,纯粹吃力不讨好,特别是稍微懂一点技术的人。小白还好不懂就老老实实的按照封装的搞。不过不给文档就过分了,源码没放开公司自己有考量的。
    Tink
        18
    Tink  
       150 天前 via Android
    没这么干的吧也能当
    vevlins
        19
    vevlins  
       150 天前   ❤️ 5
    他闭源的目的不是不让你们用,而是不让你们改,甚至于可能想加强对这里的管理,希望以后方案是他来拟定。

    搞清楚这一点很重要。如果你自己搞一套,他的目的就达不到了,你跟老板就是在唱反调。如果你的目的就是唱反调,那就做,否则还是不要的好。
    hjahgdthab750
        20
    hjahgdthab750  
       150 天前
    @murmur #12 我猜可能是自定义 cookies,设置特殊 header,dto 序列化反序列化
    nicholasxuu
        21
    nicholasxuu  
       150 天前
    好像法律上,(在公司的时间)用公司的电脑,做出的东西,都是属于公司的知识产权,他是没法据为己有的。
    而且即使是闭源了的开源库,也可以继续使用之前的开源版本呀,自己更新就行了。
    LS 有人说了,估计是只是不希望谁都可以改,这个很正常的。不然谁都能改功能,改完还得他来维护,出问题了他得负责。
    ApmI00
        22
    ApmI00  
       150 天前
    这摆明就是不让修改而已,就是给用而不是给改的。还要加日志打印。。。难道平时使用使用 jdk 自带的类,也改源码,添加日志输出,然后再打包编译使用?当然,没有文档是蛋疼,这个可以诉求。加日志输出,jdk 的动态代理,或者干脆静态代理,就可以吧。
    ApmI00
        23
    ApmI00  
       150 天前   ❤️ 1
    @nicholasxuu 楼主讲的闭源,跟开源项目的,一点关系都没有,就是只提供 jar 包使用,而不是把工具源码的放业务项目一起编译而已。
    jorneyr
        24
    jorneyr  
       150 天前
    需要啥,提需求即可,莫动手
    Lonely
        25
    Lonely  
       150 天前 via iPhone
    年轻人不要太气盛(狗头)
    wfd0807
        26
    wfd0807  
       150 天前
    这个基础库的意义是什么?
    qwerthhusn
        27
    qwerthhusn  
       150 天前   ❤️ 2
    只要没加密,就很简单

    假如你想临时改他写的一个类 a.b.c.D 的内容。
    你在工程下建一个 a/b/c/的文件夹,把 D 类反编译的代码放进去。直接改内容。。

    这时候程序启动时,加载到这个类的时候会直接加载你魔改过的,而忽略 jar 包里面的
    IvanLi127
        28
    IvanLi127  
       150 天前
    用着就是了,如果不想通过他的库 你给自己开个旁路,把你的代码走这旁路就好了,去掉不可取,出事了你就是背锅侠
    Vindroid
        29
    Vindroid  
       150 天前   ❤️ 1
    核心库做权限限制没问题,有需求由 PM 提给技术大佬来变动,问题是文档都没有,这应该算是大佬的私心了
    undef404
        30
    undef404  
       150 天前
    这不是很正常的事么。不可能所有人都看到公司的所有代码。
    TuringGunner
        31
    TuringGunner  
       150 天前
    多好的摸鱼理由啊,何必自己增加背锅机会呢
    muunala10221
        32
    muunala10221  
       150 天前
    你闲的??
    darknoll
        33
    darknoll  
       150 天前
    不让你看是怕你发现他其实没写多少都是抄的
    hs0000t
        34
    hs0000t  
       150 天前 via Android   ❤️ 4
    记住,这不是个技术问题
    4771314
        35
    4771314  
       150 天前
    @vevlins 如果是加强项目管理,那直接用 git 的一套不就可以了,这人明显是搞事情
    没有源码是可以接受的,但是没有文档这个问题就很大了,让他提供文档和相应的用例,不然对着一个黑盒,那真的很难受
    chenqh
        36
    chenqh  
       150 天前
    摸鱼不爽码?
    liuhuansir
        37
    liuhuansir  
       150 天前
    这个不算闭源吧,这就相当于二方库,只不过他应该要提供文档
    wqtacc
        38
    wqtacc  
       150 天前   ❤️ 2
    这不就是大佬封装好了基础组件,不让看不让改么,作为普通员工按要求用就是了;哪里不知道就问大佬啊
    oneisall8955
        39
    oneisall8955  
       150 天前 via Android
    封装的问题,他写的 sdk 没有暴露接口,提供自定义实现,或者没有 before/after 钩子暴露
    inframe
        40
    inframe  
       150 天前
    不如 jd GUI 直接看看反编译的源代码?
    dayeye2006199
        41
    dayeye2006199  
       150 天前
    10 分钟一条消息问这个借口怎么用,那个借口怎么用。直到人家忍不住说 “你 tm 不会看文档 /源码”。。。
    ericgui
        42
    ericgui  
       150 天前
    这肯定是有问题的
    HENQIGUAI
        43
    HENQIGUAI  
       149 天前
    非技术问题不要用技术解决。
    xcstream
        44
    xcstream  
       149 天前
    为什么要写一套,这是个问题
    xuanbg
        45
    xuanbg  
       149 天前
    楼主你要重写一套的话,前提是你老大不再是你老大。否则就别给自己找麻烦了。
    yolee599
        46
    yolee599  
       149 天前 via Android
    不要这么干,除非这代码涉及敏感操作,否则他的源码有义务给你,因为这是公司的不是他个人的
    Leonard
        47
    Leonard  
       149 天前
    不要试图用技术来解决非技术问题
    kop1989
        48
    kop1989  
       149 天前
    你去工地搬砖的时候,难道你也要偷偷换成自己的烧的砖嘛?理由就是别人窑厂烧的砖你看不惯?
    sagaxu
        49
    sagaxu  
       149 天前 via Android   ❤️ 2
    小农思想
    play78
        50
    play78  
       149 天前
    风险控制啊。
    核心代码闭源,在稍微上规模的公司,这不是很常见的吗?不然哪天员工就给泄漏出去了。
    每个员工都能知道 WX 的登录逻辑? ZFB 支付逻辑?
    没有文档,有个 demo,你直接调用就可以了。有问题直接找他。
    Marszm
        51
    Marszm  
       149 天前
    区区 jar 包。。加密了么?没加密不等于开源?
    Marszm
        52
    Marszm  
       149 天前
    还有就是,公司内部不存在开源闭源。。。都是闭源。。我能改你们公司代码才叫做开源。
    chengkai1853
        53
    chengkai1853  
       149 天前
    感觉你想当老大
    icyalala
        54
    icyalala  
       149 天前
    allanpk716
        55
    allanpk716  
       149 天前 via iPhone
    基础库,公司内部闭源的原因基本是想让大家不要瞎折腾,用一个稳定的,有问题统一改,有需求就提。你都说没相关经验,正好说明公司的决定是正确的,别瞎折腾。文档不全就反馈,而不是重做一个轮子。

    以后有机会你带新人的时候,你可以想一下为啥要强制用统一的基础库的。
    xumng123
        56
    xumng123  
       149 天前 via iPhone
    平台—中台—业务代码,公司有大的考虑,可以反馈但别这么干
    xingzw
        57
    xingzw  
       149 天前
    情商堪忧
    FanError
        58
    FanError  
       149 天前
    我们公司基础库也是这样弄的,封装成 jar 包,放在私有 maven 上。。

    方便分发到其它项目( 5,6 个)。。
    yunshansimon
        59
    yunshansimon  
       149 天前
    既然用 java,用反射可以改任何东西,不用源代码吧。用好反射,就是神也不能阻止你在运行时更改他的函数。
    gefranks
        60
    gefranks  
       149 天前
    现在弄得项目也有个类似这样的引用了 ar 包,看上去是公司里人自己写的,但是文档没有,源代码也没有. 就算有也不想去改了。
    现在用这个的就是八仙过海各显神通了,能凑合用的就用,不能凑合用就另起炉灶了
    back0893
        61
    back0893  
       149 天前
    文档都没咋个写..
    windyboy
        62
    windyboy  
       149 天前
    很多不知深浅的搞 java 的,动不动就是自己写什么基础库
    还让所有项目继承来用,根本不考虑长期的运维问题
    一塌糊涂
    jiyinyiyong
        63
    jiyinyiyong  
       149 天前
    > 而且现在他转项目了,现在就剩我一个后端。不给代码仓库权限,不给文档就算了,jar 包也不给个 sources 包

    不明觉厉, 转到其他项目了不给权限? 意味着后端这个包如果有 bug 还没人改了? 老板还默认这种情况的吗...
    bthulu
        64
    bthulu  
       149 天前
    @allanpk716 这里有个最麻烦的问题在于, 当闭源基础库是领导写的, 同时这个领导已经高升不再写代码了, 这个时候有 issue 要改, 要加功能那就基本不可能了. 基于办公室政治原因, 没人敢让领导去改代码, 更没人敢说领导代码写的不好, 所有的 bug 最后都变成了 feature, 屎山就这么来了
    oldmanong
        65
    oldmanong  
       149 天前 via iPhone
    既然楼主这么想造反,那就试试嘛,万一成功了呢,你就是技术老大了
    cw2k13as
        66
    cw2k13as  
       149 天前
    @keepeye 不审题,都说了闭源只给 jar 包
    kwanzaa
        67
    kwanzaa  
       149 天前
    有能力就自己写
    janus77
        68
    janus77  
       149 天前
    springboot 一套,网上全是开源项目
    dasvenxx
        69
    dasvenxx  
       148 天前
    这么良心的老大哪里找,锅可以甩的飞起
    37Y37
        70
    37Y37  
       148 天前
    emm...老大这思想
    allanpk716
        71
    allanpk716  
       147 天前
    @bthulu 如果考虑办公室 ZZ 问题,那么建议看形势不对就撤吧,因为你们不敢提 issues 已经恶性循环,和自己偷偷造轮子应该也是会被锤的 doge
    bthulu
        72
    bthulu  
       147 天前
    @allanpk716 已经被直属锤过一次了, 但是大领导的包实在是难用, 我现在学聪明了, 把大领导的包改了后, 改个超低版本号上传上去. 然后引这个低版本的 jar 包就行了.
    MidCoder
        73
    MidCoder  
       136 天前
    这个库纯属你们老大闲的没事,没有任何技术含量。
    数据库访问不管是 spring 现有的框架 spring jdbc 还是 mybatis 都已经很完善,没有必要自己再去造轮子,
    http 服务器这个是啥意思?自己做了一个 tomcat ?还是 nginx?如果是,那这个轮子太重了,闲的蛋疼,如果是一个统一的 springmvc 包装,这也是闲的蛋疼,没事找事。
    授权签证,这个不管是 spring 的 security 还是 shiro,结合 oauth 规范,这个也没必要再造一个轮子;
    卧槽,为啥用户系统还做成了一个框架或者工具?这明显是一个业务,业务就要好好的去写业务,没必要在搞一个这个东西
    TCP 现在一大堆网络框架,为啥自己写?你能比 netty 牛逼?如果是这样,那他现在也不应该还在你的公司,早就名声在外了。
    综上所述,你们公司太卷了,而且卷的一点技术含量都没有,来我们这边[狗头]
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   989 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:50 · PVG 06:50 · LAX 14:50 · JFK 17:50
    ♥ Do have faith in what you're doing.