An Unbelievable Demo
brendangregg.com
brendangregg.com
(Just to be clear, there was no license violation involved in this case; just a lack of awareness of the provenance of the open source software they were using.)
There's a collection of articles they wrote talking about regexes and various pitfalls: https://swtch.com/~rsc/regexp/
1#token
(this is in the HTTP spec's notation: it means 1 or more `token`s, comma separated with optional whitespace around the comma) and hit this, by trying to split the incoming values with, / *, */
I was shocked that this wasn't compiled to a DFA. (I checked, too: my JS exhibited the behavior in the bug report.)This is, I also think, another reason why "simple" text protocols are not really so simple. The grammar above is "trivial", and yet, this is the end result. I don't feel like the library is particularly at fault: I doubt I would have caught this in code review.
That's an odd thing about the tech world, it's accessible. As you get better in different areas you are actually more and more likely to make contact with important people (big names? people who did important stuff?). This can creep up on you if you're not aware what level you're operating at. It can be a small world.
about 15 minutes later Guido van Rossum answered my question.
I didn't realise the author of that tool was in the channel - kinda neat that we have such a flat open structure at times.
Reportedly, this was also a major factor in Google's strategy shift to open-source a lot of their infrastructure (GRPC, Bazel, TensorFlow, LevelDB, etc.)
In 2007, an academic argues with PG and others. After long exchange, academic defensively states their own achievements.
Another user challenges academic with GP question, to which academic provides unexpected affirmative response.
10-ish years later, I'm doing other stuff but still working with Blizzard-related tooling sometimes. I was talking to a Battle.net engineer about their latest-and-greatest game update protocols. He tells me they're thinking of adopting this great thing called bsdiff for the next version. I giggled a bit.
Anyway, hi! I implemented a version of your algorithm when I still barely knew wtf I was doing. https://github.com/jleclanche/python-ptch
What are some real life use cases for it? When does a developer need such a tool?
Games frequently use an override directory or file. The patch contains only the files that have changed and is loaded after the main index and replaces the entries in the index with the updated ones. This is the most common way of doing a patch if it's not just overwriting the original files.
Some games load their file as a virtual filesystem and then the patch just replaces the entries in the virtual store with new ones. Guild Wars 2 works this way. This is only common in MMOs though.
Also, as a dev, you have no idea what version your users are updating _from_. You either need to generate some number of patches for every version you could be updating from, and figure out if you should just download the whole thing again in any of those cases anyway.
I actually could really see using it, now that I understand what it does.
I've worked on some firmware projects where we did OTA updates and were guilty of shipping the entire binary. Luckily, even the entire binary was rather small, but still it would have been very cool to be able to create a diff and ship only the diff!
/s end open source entitlement section
Thanks for your great work
https://blog.chromium.org/2009/07/smaller-is-faster-and-safe...
The explanation here is pretty fascinating
https://www.chromium.org/developers/design-documents/softwar...
The game industry really hasn't used binary diffs and patching since the 90s when they used RTPatch.
https://www.chromium.org/developers/design-documents/softwar...
It‘s a binary diff/patch utility.
> What are some real life use cases for it? When does a developer need such a tool?
Incrementally update binary files e.g. assets or runnable binaries instead if having to re-send the entire thing on every update so e.g. games, browsers, package managers, …
The standard diff/patch utilities are text-based and even when they do extend to binary data their algorithms and heuristics tend to be biased towards textual contents.
Bsdiff was built specifically with an eye towards executables.
The team he'd worked on had produced a tool that was only ever intended to be used by the team to solve a particular problem they had. It contained proprietary code.
Unknown to the team, word had spread about the tool, and others had started to use it, including solutions architects. Who started shipping it to customers to use, who absolutely loved it.
That'd be fine except one of the core libraries it used was GPLv3 licensed, and there was non-open source proprietary code used in the tool.
The nightmare scenario he found himself in was having to rapidly re-architect the tool around a non-GPLv3 licensed library, without breaking any functionality, all the while having to have regular sync up meetings with a furious CEO and Legal department (who, to be clear, were mad about the situation, not this particular developer or his team, who weren't to blame)
Next thing I knew someone had copied it and started running as a rule on every data set / customer they could get their hands on, and of course it was false positive city.
Finally after lots of emails where I would just type "Don't use that script, it doesn't work." some engineer wandered up the stairs to support to talk to me.
They were fielding escalation after escalation for these false positives. Support would run the script, see some flags, and turn their brain off and escalate. Management was so scared of this bug / issue that they would do the same.
So he tells me to use a trick he used with a similar situation.
I announced a new and improved script and management militantly demanded everyone use it, and that all escalation using the 'outdated ' script would be rejected.
The new script just identified if it was the right customer for that script and set a bit if it wasn't. If that bit was set the engineer knew immediately they could ignore the output and would say that their analysis didn't find the problem in question and advised some basic troubleshooting next steps (copy and pasted mostly).
The support soon realized that just running that script wasn't getting them much more than a few minutes of breathing room away from the case, management realized this too and saw all these next steps coming back and the focus switched to 'hey we should do these next steps all the time too'.
That was also one of the ways I started to understand how the engineering team worked and really helped start a good relationship with them.
... or just go with it and have it be open source? The old version is already open and free for anyone to request the code of. No rush at that point, you can withhold updates for a little while while you rearchitect this or take the situation as it is and have the next few bugfix releases also fall under GPL until you get around to replacing the core component (iff one insists that the future additions must absolutely be proprietary).
Quickly removing the code doesn't change the previously released versions' license.
The built-in conflict resolution in the GPL is no-distribution.
But would $BIG_CORP publish source on request for a proprietary product just because they built one version with a GPL library by mistake and later fixed it? Has this been successful, ever?
They didn't have the legal right to do so.
Company B uses that library and a GPL library in a product. They distribute the product.
Company B has no right to relive se Company A’s commercially licensed library under the GPL. Hence, stop distribution and replace GPL library.
it's still untested in the real world if gplv3 "taints" derivative work that broadly.
Would they had to open source the entire solution? or just changes made to the library? nobody knows, and there's a lot of FUD to promote BSD licenses instead of sitting down and properly defining the limits in a practical way.
I'd get a lot of other students coming to me for coding help. Most just wanted me to do their job for them and I was too naive to say no. One wanted to count cells in a microfluidic device using image processing. I sat down with them for a couple of hours and walked them through a few methods they could look into to get started collecting all the examples in a script. Basic stuff so they wouldn't feel overwhelmed. A few months later I see he published my simple introduction as a paper with zero modifications. He had the good grace to at least thank me in the acknowledgments.
Several years later while working a $BIG_TECH lab we interviewed a candidate from my old lab. They presented their work and had performed some data analysis of thermal camera images. Turns out they were using a script I'd written there and it was still actively used to work with the thermal camera. Nobody ever modified or improved the code — many engineering students are terrified of code. I was annoyed because there was no interest in further development the code, I don't think they even read it or understood it.
While at the spinout company I developed a software tool for the PCR optofluidics platform that was being developed. It was considerably faster and more robust than the hacked together script they were using before and had a user friendly UI that I build with feedback from the biologists on the team. A few years later the founder and one of their new students published a paper documenting their amazing tool without any reference or acknowledgment whatsoever. That one pissed me off.
There is a lot of ignorance around code authorship and respect for the developer in physical sciences research. Like I said, many are terrified by code but don't value the time and expertise it requires; once they have it they no longer think about its maintenance or acknowledging the author.
That can't be the whole story, surely? You verbally suggested a couple of possibilities for what might work and wrote down a couple of lines of code, and then I imagine the student tried out all of those possibilities and reported what did and didn't work? I mean, what academic journal would want to publish half-working examples with unstudied properties?
Mind you, I agree about your broader point that (especially in academia) a lot of people don't really understand and respect code authorship.
The overall problem is that people tend to think only in terms of first order consequences. A little copying here and there might have minimal financial or reputational risk. But the second order consequences of that becoming the example and the norm for the junior ranks and the next generation causes larger organizational risk. So got to consider the bigger picture and nip the ethical lapses immediately.
He had some sample images he had taken and I used them to demonstrate the basic code. The figures in the paper are the ones I generated in my sample code.
There were a couple of downsides; he got calls for years after asking for help with the tool, and one boss seemed envious which led to other issues.
I'm sorry to hear about you not getting credit, that's inexcusable, in the same way that not accrediting the researchers who did the work in a paper or book (I have heard this story too often) is inexcusable.
A long time ago (early 2000s) I wrote a handful of tools to ease physical to virtual (P2V) migration for Windows Server. I was a systems administrator in the UK working for a large American firm.
I wrote the tools in my own time and unlike in other countries my employer had no ownership of them, just to clear that up at the start. I did use these tools at work but never developed them on company time or resources. They were released as open source.
Fast forward 6 months and we had a meeting with a virtualisation consultancy trying to sell us some tools to assist in a wider P2V programme. We had a sales guy and a tech guy visit to show us their stuff. After half an hour of them talking up all they can offer the tech guy fired up a tool and I instantly recognised it was my tool but with some rebranding.
My manager looked at me slightly confused as he recognised it too. I let them continue for a few minutes to properly confirm my suspicions then mentioned that this tool was in fact a tool we already use. They were very confused until I loaded up my version on a remote system to show them.
Needless to say the rest of the presentation was extremely awkward. I believe these two gentlemen thought they were in fact their own tools developed in house. It turned out several of "their" tools were in fact rebranded versions of mine.
I would love to say there was some kind of exciting conclusion but in reality all that happened was they were clearly spooked by this as their/my tools were removed and never included again in their P2V toolkit.
I suspect the moment they left the meeting with us they called to report what happened and rather than risk me following up (not sure how I could do that to be perfectly honest, it was FOSS after all just not used the proper way) they decided it would be safer to just pull these non-critical tools. They were just "nice to haves" anyway.
My boss excitedly share the experience with the team and we had a good laugh about it and how the sales guy went from Mr Confident to stammering and stressed in a matter of seconds.
We never did buy their toolkit.
This meeting does not sound at all awkward to me if I was the sales person. To me this sounds like how lots of companies work with open source to make a business.
They take some open source tools (maybe they built it themselves, maybe not), package then and maybe sell some cloud service around it or simply just support.
If I was the sales person I would be delighted to meet the person who wrote a part of the package.
The only reason to be embarrassed is if it did not contain the correct attribution and recognition.
Edit: the fact that it happened 2000 could have made it embarrassing though. Many things have changed since then...
The reason behind it being awkward was for half an hour the sales guy had talked up how they were the only company developing tools like this, etc, etc. How the 'big players like VMware don't care about these pain points admins have to deal with' or words to that effect (which was true and why I made the tools in the first place).
Then the moment he finished the sales pitch and I see these 'one of a kind tools' they have been developing I respond with "That's my tool, see..."
I believe the sales guy, at least, believed all the tools he was talking about were made in house. Open source wasn't a widely understood thing back then with Microsoft talking about Linux and open source being a "cancer" and such. Really knocked him off course as I guess he had never been in that situation before (I doubt many have?).
As for following up with the company. I did nothing. I was young and while I knew what they did was wrong (they literally removed my name, link to my website, etc. and put their company name but changed no functionality of the tools as far as I could see and certainly no source code was available!) I didn't have the confidence (or desire tbh) to chase up on some little tools I made to learn and make my life a little easier at work. The company disappeared (I don't know why) sometime around 2010 iirc.
Shows Brendan's maturity.
I am not sure what should be the appropriate reaction or corrective measure in these situations. We should talk more about handling these unfair situations.
Someone else can become more successful building on top of one's open source project. On a resume, a top contributor and a minor contributor to open source project might have same weightage depending on how you present it - making the situation unfair for a person dedicatedly working on a single project (quality) vs minor contributor to multiple projects (quantity).
But deleting name and credits is wrong. An acknowledgement from the benefitting person (if not the recognition/reward) has far more positive impact on career than justifying to other's that your work was stolen.
It was a bit strange to read some of the initial negative comments. I see Brendan being a sport. I would argue that reading the story as a report against unknown persons at Sun makes more sense. I don't see much sense in blaming victim. And, in my opinion, the VIP had a good run but he isn't the bad guy here.
I think it's a small world, and everything is software, so the chance you'll bump into someone who wrote software you are using I think is pretty high. I was once trying to get my head around Andi Kleen's pmu-tools, and I had the github repo open in my browser on my laptop I was carrying, when the guy sitting next to me on a bus says he's Andi Kleen. (Ok, it was a bus taking Linux conference attendees to an event, not a random bus, but I still found it remarkable timing -- I was studying pmu-tools at that exact time!)
I don't understand. What kind of funny looks were they? Disbelief? Distrust? Fear of your mental health? Realization of having been lied to by their bosses (oops it wasn't really an internal tool)?
Also, what were the impact of those funny looks? How did they make you feel? Was there any longer term consequences of telling them you wrote the thing?
Maybe I just don't look or dress or sound like what one would expect. But there's context here too: At the time it's when these things are flagship features and on the booth monitors, and the booth staff are explaining the virtues of these features to everyone they meet. They are making it a big deal of it at the time, so maybe that makes it even more unbelievable that the inventor would wander by at that moment.
Now imagine what would happen if companies had a thanks page along with the other boilerplate pages (contact us, about us) on their website. If you're making millions from a thing, thank the original person for that thing. (I put thanks pages at the end of my slide decks, it's not hard.) These interactions would go a lot better -- "my name is on your company website" -- and could lead to fruitful discussions and collaboration instead of weird looks.
He leaned over, asked if I liked the blog, and (slightly proudly if I remember correctly) mentioned that deep mind had hired Andrej for an internship starting soon.
Start recording; have them, a big multinational with a massive legal department, admit to violating and stripping a license from source code. Then sue them. They should know better, and they're making billions off of other people's work. That in itself is fair enough, if the license permits it, but removing the license is crossing the line.
Better make detailed notes, who said what with time and date.
When it happens internally, i.e. I catch someone doing it, then either it is a "first time offense" of the clueless, or it is the act of an unethical person who will be unrepentant. For the clueless, it might be that they undervalue themselves, and therefore undervalue assigning credit. The unethical person, however, understands what they are doing and is simply untrustworthy. They will also likely have a lawyer, because they've done this before. So it can be pricey to get rid of them, but get rid of them you must. They are poison to your team.
She couldn't believe what she saw. A major govt. backed logging company (which does do a lot of dev work themselves) were showing off one of our projects as theirs! We were using depth cameras to estimate the volume of wood loaded on a truck as it drives trough a gate. They even used screenshots that I had made!
Now, they were involved in the project. But they were basically clients of our client. They provided us with a place to test the system as their trucks ran trough. They didn't own the software let alone did any work on it. Why they would present it as something interns could potentially work on is beyond me.
People are weird.
However one of my favorite questions to ask is, "What don't you like about what you invented?" A true creator of something is always acutely aware of its flaws. They're unsettled about its shortcomings and wants to do better. In describing the flaws they demonstrate deep insight into the problem space, and they explain expertly how things don't go perfectly in certain corner cases or how the code could have been better organized.
The poser will almost always struggle to come up with criticisms of what they "invented" and try to pass it off as a spectacular feat of engineering brilliance.
I can't speak for the US but, in the UK, don't misrepresent your work in a job interview. I can't say you'll never miss out on an offer by being honest, though I don't believe I ever have, but would you really want to work for people who'd prefer you to lie or misrepresent mistakes you've made than be open and truthful about them?
To me that's something of a red flag: it's at least indicative of a culture where mistakes are likely to be covered up, leading to a lack of reflection, learning and improvement... and also quite possibly storing up bigger problems for later.
(FWIW, I started as a developer and am now the CTO of a mid-sized multinational market research and insight company. This is nowhere near as grand as it might sound, and isn't meant to be a boast, but hopefully illustrates that being honest doesn't appear to have done my career any long-term harm. Some things that have, if not derailed my career, caused me to take some fairly substantial detours: (i) taking things too personally, (ii) placing too much weight on others' assessments of me, (iii) and I say this as somebody who is wary of people who change jobs too often, but... staying in a job way past the point where there was anything else I could learn/give/progress. I am, of course, but a single data point.)
I wouldn't paint all tech companies in the U.S. with such broad strokes. In the interview loop for the job I have now in the U.S., every single interviewer asked me a question about "how things could have gone better." I talked about mistakes I made, lessons learned, and how I could do better next time.
I am told the feedback from that loop was across-the-board "outstanding."
"Leaders listen attentively, speak candidly, and treat others respectfully. They are vocally self-critical, even when doing so is awkward or embarrassing. Leaders do not believe their or their team’s body odor smells of perfume. They benchmark themselves and their teams against the best." [1]
OH YES.
I've done a lot of things for both work and side, and this is the one thing I can go on and on.
Things that are a choice of the lesser evil, things that are unfortunate, things that we just don't have time for.
(No credit of course, and the marketing copy around it made it sound like it was all their own code. Welcome to open source I guess!)
Could you please link the voxel engine? Which version of Minecraft was this?
The game is still live though: https://classic.minecraft.net - Originally it supported multiplayer, but that stopped working the day after the game launched.
The voxel engine is here: https://github.com/andyhall/noa/tree/develop
lol. Microsoft should just release all the source for this since Minecraft isn't exactly state of the art these days. The brand is nearly all of the value.
So now they see that their code has been stolen from the previous company, and they're being asked to work on it, what will they do? Refuse to use the code and risk being fired for being too slow? Report the crime and risk being accused of attempted to cover their own tracks? Talk to HR and being hated by one's closest bosses?
I see no way to really win here. At least, not reliably.
Just in case what happened? I'm not understanding the work environment that would lead to this practice
While he and I had corresponded a bunch, ironically the first time I met Brendan was in 2005, it was in Sydney, and I was on a tour of Australia talking about Solaris 10 -- but it followed this incident by several months (if I recall correctly). I was excited to meet Brendan, and he was excited to meet me -- especially so after his poor experience several months prior!
As if it had been Bryan, Brenden would have been more sure.
My impression is that reason for the stealing usually makes sense. For example, a key library that's hard to write that's just copied into the source tree, ignoring licensing. Or an appliance developer didn't want to deal with licensing for Linux or BusyBox. Or an individual developer in over their head quietly copies code.
The time I heard an explainable incident happened with my code, was in mid/late-'90s. An acquaintance, who'd offered to be one of the testers for an unreleased Java desktop application I wrote, then reportedly ran it through a decompiler, and passed it off as his own code, in a demo to investors. He later acknowledged doing this, and said he'd send me a Sun (ha) workstation as compensation. I declined.
Then there are incidents for which the reason isn't obvious, like the one from the article. I speculate that sometimes the explanation might simply be that the perpetrator wasn't quite right in the head at the time, like in some famous cases of journalism fabrication.
An inexplicable one involving my code was when an open source developer took a substantial and novel package that I wrote, stripped out my name and license notices, including out of the main file, and posted the package with themself identified as the author. There were also a couple other incidents with that person that seemed like that hadn't yet learned how to play well with others, in engineering or open source. I asked a mutual acquaintance, in confidence, what was going on with that person. The acquaintance checked, and was also baffled. In that case, I suppose that maybe the perpetrator was going through a difficult time, and not thinking clearly. Or maybe it was a combination of unlikely accidents that looked worse than the intent was (which happens).
In the article's story of the Sun incident, I'm a little surprised that (speculating) an engineer could do this despite all the other people in engineering who might be in a position to notice something funny going on. And Sun had been the dot in some dotcoms by 2005, so presumably they had some strong engineering processes around what goes into product.
Maybe the demo was something put together by a systems engineer, working as part of a small marketing/sales team, rather than under an engineering organization, so a lot fewer engineers were aware of it?
I wrote a few silly scripts in my lifetime, all small-time stuff (so trivial it never got me hired as a Dev anywhere). No matter whether I marked things as GPL or BSS, I often found them copied on GitHub with my copyright notices stripped. In the case of the BSD license, that's literally the only thing you can't do!
In some cases it was utterly blatant: cloning from my own GitHub repo and then replacing authorship notices in the very first commit. I mean, come on guys, at least try to be smart; you can add your name just fine... When I politely asked to, y'know, respect license terms and reinstate the notices, some people just took down their repo rather than doing that. I bet they then re-uploaded it somewhere else.
When I contacted them to ask how they thought it was ok to republish my work like this (I was giving them a chance to explain), they just took it all down.
EDIT: For some reason I assumed OP was the author. Someone with a twitter account should ping him and get him over here to participate in discussion.
"You might wonder why I didn't talk about this first case publicly at the time. I'd already informed them of the problem privately and how to fix it, so there wasn't more to say. Also, Sun was the number one employer in town, and to be publicly critical could be career ending."
I don't know what happened to the US developer. But I didn't think it made sense to burn bridges with Sun about it. I was more worried about giving people a bad experience with DTrace by running older versions of my software.
So, shout out to Mr. Pearson for a great presentation and a really helpful SO answer!
A blog post on my blog.
In fairness to him, it was still on a domain that didn’t identify me at all, though the “About” page had my name on it.
He then proceeded to launch up the chain of command to get me in trouble for publishing company secrets on said blog.
I promised to only write it outside of work hours and not to directly copy any code (scripts, one-liners) I wrote at work, and that was the end of that.
There were other less-antagonistic instances of others in this large company finding solutions on my blog, which says something about the value to the company of posting generic stuff like this on publicly-searchable platforms instead of an internal-only SharePoint or Confluence instance, and definitely instead of the PDFs our senior management insisted on for all documentation.
AOL's docs were the same ones from the open source project, with the GPL message intact.
I once received a library under a modified Apache 2.0 license, where all the conditions under section 4 (attribution, etc.) were just inverted for a given number of years (effectively an NDA), after which the normal Apache 2.0 would apply. Which worked because it came straight from the original copyright owners, but here I assume AOL weren't.
Fast forward 10 years or so, I'm consulting at a company. When I see one of their support engineers using a tool that looked vaguely familiar. Turns out the company had acquired the one-man ISP and had continued developing the little helpdesk application I'd made for WAP all those years ago.
I'm a generalist, but I've been thinking lately if performance engineering is something I should be specialising in. I'd love to hear any advice from those in the field.
The other plus is, if you frame yourself as a specialist in X, it might be easier to explain not knowing Y. You can't simply know everything, especially if you invest heavily in specializing in other things.
Personally I've been a web performance (i.e. mostly JavaScript/HTML) guy lately and it's been fun. There's a million of React devs in the world, but only a few dozen web perf guys with web presence (Twitter / blogs), and I almost know all of them by name at this point.
Of course it depends what you want to do. Typically it's big corps who look for specialists. Small companies prefer generalists.
My problem with picking a niche is that ones that are easy to learn from a book are too crowded to be considered niches, and the rest can only be learned by doing in real production environments. Now there’s one where I have a foot in, and it’s one that I enjoy.
As someone who has spent a lot of time in open source, forks are not a problem, they are indicative of a problem.
Don’t cry when people fork and go a different direction, try to figure out why and see if you’re willing to change the project to accommodate them. Dropping chastising “more wood behind fewer arrows” platitudes is pointless when half of the wood wants to break off in a different direction anyway.
But also yes: There are two particular issues with bpf tooling forks. 1) They look deceptively simple, but those that are kprobes-based are really kernel-specific and brittle, and need ongoing maintenance to match the latest changes in the kernel. One ftrace(/kprobe) tool I wrote has already been ported a bunch of times, and I know it doesn't always work and one day I'll go fix it -- but how do I get all the ports updated? No one porting it has noticed it has a problem, and so the same problem is just getting duplicated and duplicated. Which is also issue 2) Unlike lots of other software, when observability tools become broken it may not be obvious at all! Imagine a tool prints a throughput that captures 90% of activity and no longer 100% (because there's now a fast-path taking 10%). So the numbers for some deep kernel activity are now off by 10%. It's hard to spot, and that increases the risk people keep deploying their old broken ports without realizing there's a problem.
It seems like there is a missing formal interface here if this is so brittle, no? If it’s hitting a bunch of internal kernel stuff shouldn’t this stuff just live with the kernel itself?
But kprobes is basically exposing raw kernel code that the kernel engineers bashed out with no idea that anyone might trace it. And they can change it from one minor release to another. And change it in unobvious ways: Add a new codepath somewhere that takes some of the traffic, so gee, seems like my tool still works but the numbers are a bit lower. Or maybe I measured queue latency and now there's two queues but the tool is only tracing the first one, or now there's no queues so my tools blows up as it can't find the functions to trace (that's actually preferable, since it's obvious that something needs fixing!).
I really don't like using kprobes if it can be avoided (instead use tracepoints, /proc, netlink, etc). But sometimes it's solve the problem with kprobes or not at all.
Now, normally such code-specific-brittle things should indeed live with the code like you say, so normally I'd think about putting the tools in the kernel code. But we don't want to add so much user space to the kernel, and, it also opens the door as to whether these should actually be tracepoints instead (which begins long discussions: Maintainers don't want to be on the hook to maintain stable tracepoints if they aren't totally needed).
Another scenario where the tools should ship with the code base would be user space applications. E.g., if someone wrote a bunch of low-level tracing tools for the Cassandra database that used uprobes and were code specific, then they would be too niche for bcc, and would probably be best living in the Cassandra code base itself.
Forks because the main project is not responding to a need are not a problem. Forks just because some project or product believes it gives them more control and they don't interface with the original project usefully are a sort of a problem. Those aren't necessarily started because of a community need, but some business need or perceived business need which may have nothing to do with the reality.
I think that's the situation he's asking to avoid here, as he mentions observability products. He's saying please don't fork just to have it under your own repo and for no other reason, when it can be developed jointly.
It’s worse to have people trying to jam shit into the main project if they don’t actually care about the main project. That’s how you get contributions that are huge hacks and require more work to review and iterate on than is worth it to the community.
If some company forks for an observability product and doesn’t contribute back, they clearly don’t want to. Don’t try to force them.
git is an incredible tool for managing forks and this anti-fork mindset is right out of old school open source culture from the early 2000s.
Demanding people contribute to your project instead of forking just sounds like demands to pay homage more than anything.
And yet the author here is saying please work together. Presumably he or the community is okay with picking apart those huge hacks. I'm not sure why you should care what that community is willing to accept, unless you're part of it.
> If some company forks for an observability product and doesn’t contribute back, they clearly don’t want to. Don’t try to force them.
Who's forcing anyone? Did you not notice the "please" he starts that statement with?
> Demanding people contribute to your project instead of forking just sounds like demands to pay homage more than anything.
That's just a straw man, nobody demanded anything, and I'm not sure why you'd even try to insinuate he was when he literally says please.
If I had to paraphrase the part of the post you're critiquing, I would do so as "If you're using these tools, don't feel like you have keep any stuff you do separate. We'd like to build something better for everyone, so feel free to contribute to the project rather than keeping it separate and we can all build on each other's work." That's pretty standard open source ideals IMO.
- Someone sells you BPF observability that's buggy and dissapointing, and you avoid BPF in the future. So in that case it's hurt the BPF community.
- Funding goes to a project that gives nothing back, instead of funding a project that does. Again, it hurts the community as funding isn't infinite.
Somewhat like when powershell on windows had aliases for wget and curl that was just shell aliases for a simple downloader, making some scripts work without those two installed, but also confusing anyone that wanted to do anything outside of "get one single file from url".
What does it mean, for example in the JVM arguments start with "D" as well.
Any history to this?
In order to trace arbitrary code, it has to inject these into the code site that you want inspected.
If you could just inject arbitrary C, you'd get the issue of potentially adding probes which change the behaviour of your code under test to a degree where new bugs/behaviours are introduced or old bugs/behaviours are masked.
DTrace solves this by using a C subset which helps you avoid such unwitting changes, by not including loops or other operations which could change the memory or timing behaviour of the existing system.
Which is completely unrelated to the other language called D, also known as DLang. (which was released 4 years earlier than DTrace by the way)
To an Australian, introductions in the US can sound
boastful, but they can also be useful as a quick
way to share one's specialties.
But this one puzzles me a bit. Typically, we talk up the people we're introducing - I'm not sure I've ever heard anybody talk themselves up during an introduction!"Sally, this is Bob. Bob's been doing some really cool stuff with XYZ lately. Sally, I know you have too!"
(At which point Sally and Bob often politely insist that no, they're nothing special at XYZ)
I've always thought of this as gracious and not boastful. I definitely agree it would be obnoxious to talk one's self up!
I work quite a few years in IT and never, during any interview or meeting, I've been introduced as anything more than just an engineer. This must be cultural gap, no doubt, but I'd feel weird if someone would detailed my career in front of other participants. Of course I have nothing against filling some details in by myself but only if applicable in given situation. Truth to be told I've never worked in Australia or US, but I did some job in two EU countries and in Japan and, as said, never encountered detailed introduction.
Is this still a thing?
Management, when alerted, made it right, but I think the point of my story is that this is perhaps more common than anyone realizes.
What's the point of publishing with a copyleft license if you aren't going to do anything when someone literally walks into your office and says "we at Big Corp are selling your work without any attribution?"
I was hosting a research talk given by quasi-famous professor at a biotech startup that I worked at.
Quasi-famous prof was describing a gene (gene "xyz") being used as a tool in his lab, "but the specifics of what gene xyz is and what it does are not important. It's just a gene we use in these assays...."
Me: Do you know who has 2 thumbs and discovered xyz? This guy.
Any non-Americans want to chime in on what is a heavy American accent? I’m imagining heavy southern accent, but maybe this is something that can only be heard by non-Americans?
So I'd say a strong American accent to an Australian is the most divergent one, not one that somebody in US might consider strong.
Living in upstate New York I also frequently heard "oh, you have an accent" to which I always tried to explain "so do you", and several times I got the response that their accent was either neutral or closer to generic English.
It is amazing the subjective differences in how people experience accents, and how they feel about their own.
But one time I was at a wedding in Karlskoga and talked to someone I hadn't met before. I opened my mouth and managed to get half a sentence out before he interrupted with "Oh! You're from Göteborg!"
> ...which is like a mouth full of down feather.
Peter Sellers called Americans "The Herns" [1]:
> Various American characters with the surname Hern or Hearn, often used for narration, outrageous announcements or parody sales pitches. The Goons referred to Americans as "herns", possibly because saying "hern hern hern...." sounded American to them, possibly because Sellers once said that a decent American accent could be developed simply by saying it in between sentences.
[1] https://en.wikipedia.org/wiki/List_of_The_Goon_Show_cast_mem...
Personally I'd rather have Americans "lean heavily on the R" than act like the letter doesn't exist (rhotic vs non-rhotic). I think it's another factor why American English is more popular than British English (besides the huge economic factor, the US economy being 5x the UK one), since their pronunciation is clearer and more explicit.
Specifically in my limited experience stuff like pronouncing t’s like d’s and soft back-in-the-throat r’s. “Budder” vs. “buttah”, for example. American vowels tend to sound larger as well in my experience.
I’d say something to a clerk, and they’d reply with “you’re an American!”
Yes, how could you tell?
You’re so loud!
Thanks?
[0]: https://youtube.com/playlist?list=PLOgT48pM4GctCy-88GTDyyqyy...
It's a bit like saying that someone from rural Bavaria who speaks with a strong Bavarian accent has a heavy German accent while speaking German.
I also perceive Canadians to have "heavier" North American accents than Americans do. Some Canadians speak as if from the backs of their throats, with leaden vowels and really round r's. They also often overcorrect /a/ to /æ/ so "drama" becomes "dramma" (like the first two syllables of "Dramamine". And of course there was William Shatner's famous "sabotadge"...
Thankfully, my employer had some licenses for the library without my knowledge, but it ain't fun to break licenses at work, especially when you don't notice until months later.
I'm not sure if this is just my personal feeling but I would say that stealing intellectual property was sort of common at that time. Open source was not widely known, knowledge was scarce, communities were just ramping up and really anyone with lack of principles could pretty much steal anything and get away with it.
It happened to me a few times with online content I wrote. Essentially tutorials, articles, etc. around Open Source. Once my own company sent me a newsletter which contained one of my articles signed by another employee from a different place. It felt pretty weird.
I have to say that my limited experience in dealing with Sun as a customer mirrors Brendan's comments around a remarkable arrogance, and it probably played no small part in their downfall.
Yeah, I remember that. I kept thinking "this tool might be nice for C wizards but it does nothing for my day-to-day experience as smalltime Linux user / admin". The other big thing was ZFS, which was interesting, but they were extremely uncooperative with the license, basically ensuring it would never make it big.
This is a made-up story, so you are free to make up your own ending as to whether this was the world-travelling VIP, and if so, whether he had some partial or complete flashback on hearing Brendan's name. One thing we can be sure of: whoever 'carelessly' stripped the copyright notice out of Brendan's code had seen his name before (and it was, perhaps, the part of the code he was most familiar with!)
Can you get more money if they violate the OSS license if you offer the software under a commercial license as well?
I'd much prefer to see the people who build Valuable Things show more interest in capturing some of that value.
There's this overwhelming narrative revolving around Open Source that makes it seem shameful to profit from your work. It's maddening to watch. There's no reason we as developers need to be the low man on the totem pole getting tread on by business people. We just set ourselves up that way and socially punish anybody who doesn't.
The problem he should have noticed was that the Sun was selling the code he wrote for hundreds of thousands of dollars and not passing any of that on to him.
Step one shouldn't have been to worry about putting his header comment back in place and getting them the latest version of his code to sell to their customers. It should have been negotiating a redistribution license for his code if they wanted to continue selling it.
Semi-related... I TA'ed a Comp Sci class a long time ago (back when they had to submit their code as print-outs). I read through the print-outs and noticed that the "look" of one of them seemed oddly familiar (blocks, line lengths, indenting etc). I went back through the others and found another one that was almost exactly the same.
Took it to the Prof and we agreed the ones that copied got 0 on the project, and the ones who allowed the copying got 50% of their mark. Honestly, they got off quite easy.
To be fair, yes those articles were on the same topic, but I'm actually trying to take the next step here. :-)
The best part is when my own blog posts actually have the answer I was looking for - at which point I start feeling old and forgetful.
I feel it would have been ratting to the original creator to do nothing.
Yep. See Sun's response to the Linux SPARC maintainers technical critique of Solaris for SPARC. Meanwhile at Red Hat we started hiring all the ex-Sun people that had been pushing for x86 internally at Sun and gotten frustrated with the flip flops (RHEL 3 on Xeon already demolished Solaris/SPARC) .
Vendor lock-in is not great for the customer, but when you try to milk the customers, you end up risking taking them to the FYO point [0], and that is catastrophic for the vendor, and the vendor never sees it coming and can't help themselves.
Sitting on your laurels is not good. Don't do it. Innovate. Then innovate some more. Then never stop innovating.
[0] Let me google that for ya: https://www.google.com/search?q=fyo+pointAs a former Sun employee, I can tell you that's true: people at Sun wouldn't even look at competing technologies because they were sure there was nothing useful to be learned from them.
That's why Bill Gates and Anders Hejlsberg were able to screw Sun so badly by examining and copying the good things about Java, and making something much better: C# and CLR.
While Sun totally failed to learn from any of the good things that Microsoft or Apple or anyone else did.
>We are better off with all the wood behind one arrow.
Nice reference to the old Sun slogan and 1999 April Fools Day prank, in which Sun employees put an enormous arrow through Scott McNealy's office.
https://findery.com/johnfox/notes/all-the-wood-behind-one-ar...
All your wood notwithstanding, it also helps to chose an arrow that isn't flawed and doesn't totally miss the target. For what it's worth, Scott McNealy also put all his wood behind another arrow named Donald Trump.
Scott McNealy has long been one of Trump's few friends in Silicon Valley
https://www.sfchronicle.com/politics/article/Scott-McNealy-h...
Trump held fundraiser at former Sun CEO Scott McNealy’s Silicon Valley house on Tuesday
https://www.cnbc.com/2019/09/17/trump-silicon-valley-fundrai...
Scott McNealy gets touchy feely with Trump: Sun cofounder hosts hush-hush reelection fundraiser for President
https://www.theregister.com/2019/09/17/mcnealy_trump_fundrai...
I mean in practice it's tiny utilities that I'm too lazy to reimplement in the exact same way, but still, it's something to keep in mind.
Someone downloaded the code for GANs (generative adversarial networks) from Github, generated (sampled) a painting using it, slapped the GAN objective function as a signature, and sold the painting for over $400k!
While I don't believe in karma, I do believe there are consequences to misbehavior, even if one is not caught:
The temerity and lack of ethics to appropriate a project that someone else has written and claim it as one's own leaks into other areas of one's life. That kind of behavior is not isolated to just open-source software. Perhaps the world-weary thief of the OP took his experience as a lesson and changed his ways, but he likely continued bumbling around, behaving dishonestly, losing the respect of his peers along the way. Perhaps even that of family and friends. Perhaps he miscounts the points in a boardgame, or cheats on his spouse, but it won't be limited to this.
Contrast that to the life and career arc of the OP himself.
So, no, the fools are those who steal, caught or not.
That ghost user was an older account of mine. Their interpretation of the post was wrong though.
I reacted to the situation by laughing slightly but didn't even bother explaining why. Because of the poor tone, I decided to let that person enjoy being wrong.
MIT/BSD-style licenses are practically begging large billion-dollar corporations to rip off your work wholesale and use it to generate profits while contributing only the occasional patch or two. I used to see this phenomenon on HN, where every time some distro had a new release the BSD folks would be in here reminding us that BSD runs Netflix and routers and Playstations and won't we please just donate? As if Sony and Netflix value these projects enough to use them for critical infrastructure but not enough to keep them financially solvent.
(The GPL is of course not a panacea; as TFA demonstrates, Sun would have got away with this, possibly forever, had the author not made his serendipitous discovery)
GPLv3 is not really workable in terms of preserving developer freedom to do what they want with code (as long as they share their code back).
Obviously the powers that be disagreed and the GPL has been "upgraded" to v3, but was never impressed, and now much happier to contribute to MIT / BSD licensed products (which do allow you as the developer to do what you want with the code).
Would be curious if anyone has analyzed this.
With that said you’re right, with GPLv3 they moved the fight into new domains that aren’t as obvious or really “as big of a deal” to a majority of people. Also with the rise of things like JavaScript GNU, under Stallman, became the old man crying at the children. Stallman hated the rise of “non-trivial” JavaScript and refuses to work with proprietary code so GNU could never have developed e.g. React or Tensorflow. We now have a new generation of open source tooling that was developed more in spite of the FSF than by it.
The current environment will in turn spark a new generation of tooling down the line that is even more removed from the likes of Stallman; who once responded to a request I sent to work on a JS library advertised on the GNU website with the fact that I should call it F/LOSS instead of open source (and nothing else.)
So while I respect the FSF for the work they did in creating what we have today, the time where they were leading the fight to save software is long passed. They won in some ways and the world is better for it, but they lost in others and I’m not sure the world is that worse because of it. Having trade secrets isn’t completely a bad thing as it allows competition and different implementations, though that part is simply my opinion I suppose.
Remember that the idea of the GPL is the authors preserve and propagate the rights for the USERS.
He also once said "proprietary software subjugates people", which I thought was sort of over-the-top to say, but over time I think software in this era of dark patterns and privacy has unfortunately become very obvious.
I suppose you're right though in as much as it splits mindshare.
Sadly a lot of people don't even respect that.
A company using open source software to make money is making money off commons. Makes sense they should feel obliged to contribute something back, and since they have the surplus of the best form of contribution - money - it's reasonable to expect them to donate some of it.
And no wonder why Sun failed to compete. A Cultural and management failure.
Swings and roundabouts.
Aussie and NZ compared to the US are completely different worlds in my eyes.
(I'm a Kiwi btw)
P.S: if you constantly boast about how humble your country is, you're probably not that humble.
He mentioned this "VIP" is a "Developer and dtrace expert". But reading that and the other details, I think this is probably not the reality and maybe was communicated incorrectly to him. I really doubt this guy was a "VIP" as he says.
My guess is this "VIP" was actually a pretty normal member on the dtrace project, could be a little senior and got the opportunity to go around and talk about it. I am sure they had a team somewhere who put together most of the software, maybe he was involved a little bit, but probably he was just as confused as everyone else about using that open source software - he probably knew enough to teach it, and how it worked, but so many people work on these type of projects, unless they sent the lead engineer he probably didn't know it deeply except enough to evangelize and teach how it works.
He mentions about being slighted by this guy a lot, saying things like "He wasn't impressed", "gave me a look like he didn't really believe me" etc. This might be true, but i suspect it's coming from his negative interpretation of the situation. This guy just traveled all the way around the world, was super exhausted, was possibly honestly confused what's going on - i certainly have been in that situation before.
The author also mentions he felt it odd that he (the author) was producing more dtrace tools than Sun was. This almost sounds a bit like indirect boasting. Large companies are slow. A dedicated passionate developer who is working alone or with a small team will always run laps around huge companies. This isn't odd at all. Companies often get distracted, can't focus on what's important, or decide not to do what is important for a product due to other business reasons.
In fact, as he found out, some engineer somewhere just ripped his stuff cause it was faster and easier for them to do it. Sun's team was not professional at all, even possibly breaking the law, which I think is the point of the article but the descriptions of the Dtrace guy who's job was to show Dtrace around the world lessened my enjoyment of the article.
[0] https://www.usenix.org/legacy/publications/library/proceedin...
Large companies are slow, indeed. In the late 90s I wrote a few operating system plugins (nss_ldap, pam_ldap, GSS SASL plugin for the Netscape directory server) which were eventually obsoleted by native Solaris equivalents. The Sun versions were on the whole better engineered, if less flexible, because their OS team had a depth of experience that I didn't have at the time.
Brendan was the most amazing and prolific user of DTrace, from very early on. Brendan did not create DTrace, but in a sense he "made DTrace" what it is. And not just DTrace, but eBPF.