FCon7折倒计时最后一周:日程已上线70%!查看详情>>> 了解详情
写点什么

交付程序不给钱,程序员一怒之下开源客户项目代码

  • 2019-06-10
  • 本文字数:2306 字

    阅读完需:约 8 分钟

交付程序不给钱,程序员一怒之下开源客户项目代码

国外一名自由职业的开发者在客户不给结款以后,将其开发的项目开源到了 GitHub 上,两天不到收获了超过 3000 个 star。除了此事引发的技术细节大讨论以外,背后问题不得不引人深思:开发者的职业道德与法律上的漏洞引发的事故,该如何看待?

不给钱就开源

最近,外国一位名叫 Jason Werner 的程序员小哥过得很闹心。


事件的起因是自由职业的他接了个外包需求,给一位客户开发一个名为 OneFraction 的平台。在跟客户沟通好需求后,他开始写这个项目,结果项目完成后客户摆了他一道,最后也没给他钱。于是他一怒之下把这个平台开源到了 GitHub 上,短短两天时间不到,这个项目的 star 数就已经超过了 3000 个,更是登上了 GitHub 的 Trending 榜单的榜首。项目地址:


https://github.com/TrillCyborg/onefraction



”I always wanted to be at the top of trending“


按照 Jason 小哥的说法,OneFraction 的设计初衷是作为一个平台,让用户通过平台支付租金而不是支票或银行转账。其价值来自于利用平台产生的数据最终创建一个租赁市场,用户可以通过其找到完美的公寓。


他的技术选型是这样的:Server 端用 Node.js 写就。服务器使用 GraphQL 和 apollo-server 在客户端和服务器之间传递数据,并以类型友好的方式键入以与 Mongo 交互。账户系统则选用 accounts.js。


Jason 的情况在外网引起了热议,在队形表达对 Jason 的同情以后,大家愉快地聊起了 OneFraction 背后的技术细节,不得不说中外程序员们一大相同点就是对技术的热情和兴趣,一群可爱的技术宅。


这样一个闹心的事件逐渐演变成了一场有关技术的 Party 让人忍俊不禁,但这背后的一些问题却值得我们深思。Jason 没有取得相应的报酬,对其创造的代码自然有全权处理的资格,但如果取得了报酬或者部分报酬,这样的问题该如何处置?当开发者面对道德选择与法律困境时,又该作何取舍?

这事儿是职业道德问题?

跟 Jason 相类似的情况在国内也有发生过,但更多的是一些私自开源公司代码、删库跑路的相关新闻,这背后,折射的是开发者的职业道德问题吗?

程序员私自开源公司代码,如何定责?

还记得不久前的哔哩哔哩后端源码泄露事件吗?



上线 6 小时 star 数突破 5 千,fork 数一路狂飙冲过 6 千,知乎、微博、朋友圈等各大程序员聚集地都在讨论这个相同的问题:究竟是主动开源还是被黑了?


后来官方回应确认了这是事故,不是故事。



源码的重要性不言而喻,有了源码,黑产不用再通过逆向工程的手段猜测运行原理和漏洞位置,直接通过阅读源码就可以找到很多还未公开的漏洞,这对系统的安全性是个巨大的威胁。不管源码发布者是何人、出于何种目的,这种行为本身既无职业道德,也触犯了法律。


根据极客时间《白话法律 36 讲》专栏作者周甲德律师的观点:


这要看程序员是不是具有主观故意,如果具有主观故意,轻则可能会被开除,并赔偿公司损失;重则可能构成刑事犯罪,代码在公司没有开源前应当属于公司的商业秘密,根据我国《刑法》第 291 条之规定,其可能涉嫌侵犯商业秘密犯罪。这里面主要是看此行为给公司造成了什么后果,如果给公司带来的影响小损失不大,公司可根据公司规定进行处理。如果程序员只是失误失职,没有主观故意,则可能会受到公司内部处理。

删库跑路,当笑谈成为新闻

“rm-rf”应该是你非常熟悉的命令行,也是删库跑路梗常用的背锅侠。但其实删库跑路这样的事情,真的发生过很多次。荷兰一家云主机厂商 Verelox,就曾被离职工程师删除了客户数据库,几经修复也不能完全恢复,最后造成巨大损失的。


新华社之前也曾报导过类似的新闻,某软件工程师徐某,离职后半年公司仍然不给结清工资,于是其一气之下,利用自己当年开发网站写代码时留下的后门文件,把程序源码全部删除,造成几十万损失。


这样恶意删库的行为,触犯了破坏计算机信息系统罪,将要受到法律的制裁。


本部分案例援引自极客时间《白话法律 36 讲》专栏

开发者是保护代码道德的最后防线?

2018 年 3 月,Stack Overflow 发布了他们的开发者调查报告,并首次提出了有关道德的问题。对于“开发人员是否有义务考虑代码的道德影响”这个问题,有近 80%的人回答“是”。不过,只有 20%的人认为他们最终在为不道德的代码负责,40%的人会在被要求的情况下写不道德的代码,只有 50%的人表示在发现不道德的代码时会举报。


如果代码对世界的影响不大,那么这也许就不成问题。打个比方,如果你写了一个对 100 个人不利的算法,虽然这事不怎么光彩,但产生的影响也是有限的。但是,如果你在拥有数亿用户的 Facebook、Google、微信上做同样的事情,结果就会很严重。


但对于开发者来说,光是每天写业务代码就已经让人心力交瘁了。更何况不管在国内还是国外,技术在大部分时候都是为业务服务,开发者的话语权是拗不过盈利的这条大腿的。遵守程序员的职业道德已经不容易,又如何去捍卫代码的道德?

开发者:我讲道德,谁讲法律?

当出现 Jason 这样的案例时,开发者们无一不在拍手称快:”四个字,大快人心!“


为什么在程序员们看来,会出现这样的现象呢?究其根本,无非就是开发者和用人单位在一个不对等的位置上。


曾几何时,在一次工作交接的时候,因为我的项目由我全权负责和开发维护,公司对我就像防贼一样。


企业在聘用程序员以后,又或多或少地在某些地方对程序员处处提防,当然这本无可厚非,但也体现了劳资双方的不平等和不信任。尤其是在当下这个就业难的大环境下,开发者们敢于发声的底气便更加微弱。


开发者们坚守着自己的职业道德,却也害怕遇上不讲法律或者钻法律漏洞的用人单位。个体的力量终归有限,时间、精力都是成本,拖家带口的开发者根本耗不起。


如果是你,在面对 Jason 遭遇的问题时,会怎么处理?在你看来,开发者在日常工作中应该注意的法律常识有哪些?



2019-06-10 16:5718436
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 369.9 次阅读, 收获喜欢 1962 次。

关注

评论 4 条评论

发布
用户头像
这本身不只是道德问题而是法律的问题,作为外包项目的交接所有权已经不只是开发者本身也同属于客户,除非合同已经表明源码归属。但是开发者有义务保证代码不被别人利用毕竟对交付物也要使其安全可靠。不过另外一方面也是要对开发者、自由职业者提供一定能力的法律保护。大家双方都在法律上交锋尽量避免靠道德来绑架,当然该约束的道德还是要约束。
2019-06-11 10:42
回复
接外包的时候,准备一份条款详细的合同是必要的
2019-06-18 11:49
回复
用户头像
对这类情况,你怎么看?
2019-06-11 09:49
回复
用户头像
程序员还是要多懂法,防不胜防啊
2019-06-10 18:10
回复
没有更多了
发现更多内容

如何利用友盟平台定位安卓端的程序异常 | 社区征文

liuzhen007

移动开发 新春征文 2月月更

元宇宙时代NFT的价值衡量

CECBC

java培训:JVM参数配置

@零度

JVM JAVA开发

艾瑞咨询:青云科技入选中国开源软件产业图谱

青云技术社区

云计算 开源 混合云

使用APICloud AVM多端组件快速实现app中的搜索功能

YonBuilder低代码开发平台

前端 APP开发 APICloud 跨端开发 跨端框架

优酷 IPv6 演进和实践指南

阿里巴巴终端技术

ipv6 移动网络

深入解析 Flink 细粒度资源管理

Apache Flink

大数据 flink 开源 编程 实时计算

全方位构建信创生态体系,焱融科技完成海光 CPU 生态兼容性认证

焱融科技

云计算 分布式 高性能 文件存储 生态

来喷一下所谓无影云电脑

乌龟哥哥

无影云电脑 2月月更

第七周

cqyanbo

Go学习笔记——同构复合类型

为自己带盐

Go 学习笔记 2月月更

“区块链”将彻底改变人类社会文明,颠覆世界最强大的企业

CECBC

MongoDB University 中文字幕视频上线!

MongoDB中文社区

mongodb

Tapdata 在线研讨会:如何快速上手 Tapdata Cloud?

tapdata

数据库 Cloud

Mysql数据库表中有索引为什么还是查询慢?

慕枫技术笔记

数据库 2月月更

跨项目度量,CTO、PMO们的好帮手

阿里云云效

阿里云 云原生 敏捷开发 CTO 研发度量

前端培训:Vue3 的自定义指令

@零度

Vue 前端开发

模块七作业-王者荣耀商城异地多活架构设计

CH

架构实战 「架构实战营」

模块七课程作业

李晓笛

架构实战营

数蛙DG-IoT开源平台

dgiot

物联网 2月月更 2月日更 dgiot dgiot物联网

8分钟了解TDengine的WAL机制

TDengine

数据库 tdengine 开源 物联网

架构实战营第 4 期第 7 课作业:王者荣耀商城异地多活架构设计

du tiezheng

「架构实战营」

什么字体更适合程序员?

lencx

程序员 字体设置 主题

大数据培训:Flink 快照分析

@零度

flink 大数据开发

Linux系统编程-进程间通信(消息队列)

DS小龙哥

消息队列 2月月更

面试突击23:说一下线程生命周期,以及转换过程?

王磊

幂等最佳实践

得物技术

数据 幂等 API 一致性 请求

数字货币或将消灭银行!未来3至5年,银行业可能将崩溃?

CECBC

报名开启 | 2月25日,索信达监管合规产品线上发布会

索信达控股

MongoDB在vivo评论中台的应用案例

MongoDB中文社区

mongodb

【C语言】 初始函数 & 数组

謓泽

数组 C语言 函数 2月月更

  • 扫码添加小助手
    领取最新资料包
交付程序不给钱,程序员一怒之下开源客户项目代码_文化 & 方法_小智_InfoQ精选文章