With others from a few large free software projects & communities (Open edX, OpenStack, Framasoft, Mines-Telecom...), we are in the initial stages of producing an online course / MOOC about contributing to free software. If you (or anyone else reading this :) ) are interested in contributing or joining the project at this early stage, please let me know. : ) My email is on my profile.
Presentation site (draft): https://larrybotha.gitlab.io/mooc-floss/ Repository: https://gitlab.com/mooc-floss/mooc-floss
The proliferation of marketplaces and assets to trade (and all type of projects, automated trading, market making, etc... that your project enabled) can been seen as a net positive, as a win win for all parties involved and more.
From a microeconomic perspective, your library enabled access to startup using js and with relatively simple tech stacks access to a tool that would otherwise be relatively complicated and time consuming and for which they would not necessary have the resouces. By doing so you lowered the cost of entry and allowed new entrants to challenge the status quo.
And from a macroeconomic perspective I think it's one of the reason access to capital has been simplified and has lowered in cost, it's one of the reason for the low cost of mortgages and the relative resilience of economies during covid (central banks interventions are useless without bank and other financial intermediaries participation, it would be like pushing on a string).
Don't be fooled by the contemporary contempt against finance. It's still the most important reason that explain the constant improvmements in prosperity and peace of recent years, and the best thing one can do is to make it less arcane and open it to more people. One of the achievements of your tool.
You can be proud of your work.
I think the contempt comes from the fact that financial instruments have a tendency to concentrate those benefits in small proportion of the population. Low-cost mortgages are an excellent example: these have enabled wealth gain for those who were able to get them at a certain time. But that gain has come almost entirely at the expense of those who weren't able to (or simply didn't) get them, who now face greatly increased rent and house prices.
All you're saying would be correct if we had a sane system of property rights, (which we don't); then finance would be truly benefiting everyone. But that's not the world we live in.
Yes, the only thing financial intermediaries would be missing is the actual funds (largely paid by the middle class) to bail out corporations for the second time in less than twenty years.
> Don't be fooled by the contemporary contempt against finance.
There has been contempt for greed and corruption for a long time, and for the same reasons that finance continues to earn it today. If the middle class didn’t constantly bail out the banks and their related parasites, you would all be bankrupt.
Frankly I don’t want to hear any advice from anyone in the financial industry until you demonstrate the ability to pay taxes and save enough to make it through the next crisis without crawling to the capitol building with your hand out.
That said, if you write cool software that is cool. It doesn't need to have a huge social impact as long as you enjoy creating it, which appears to be the case here :)
"Sometimes you have to feed the greedy to get to the truly needy."
In other words, the greedy will always take advantage, but that doesn't diminish the help you give to the needy. There is simply no way to totally filter for the greedy.
This doesn't really apply directly to your situation, but at least for every greedy company that benefits from free products like yours, there are a lot of jobs created and benefit to society as a whole when these companies create useful products.
I guess it kinda makes sense as social creatures, but it can be frustrating at times when you are trying to help people.
There's nothing wrong with a labor of love, but the companies using your software can afford to pay for your time.
What are people using it for? To make web apps and just not have to roll their own wrappers around FIX/FIX-derived data? (That is, if all back ends are used to speaking FIX, it’s nicer to have the front end and web serving tools also just speak it?).
What's odd about that? Typescript is a boring middle-of-the-road language from the last ~10 years, it's a pretty reasonable default language (although structural typing is a bad default if you ask me).
These need not be super polished, optimized etc. They just need to work correctly and solve a problem quickly and easily
The project still took three months as it was one of those special type of organisations, but it wasn't due to the HTML generation :)
Thank you for mammoth.js!
Another way to solve this problem is to have engineers on customer support rotation of some sort. This way, engineers get to see how their software is used in the wild and interact with customers, and PMs get to see how unrealistic expectations and deadlines comes back to bite you in the ass in a form of your engineers being busy fixing half assed crap.
This sounds great in theory, in practice working on any non-trivial software means there are parts you know little-nothing about. Having spent time on support duty I'd end up pinging team members for help (disturbing people without having a sense of priority since I don't do support), budding into other people's stuff without the capacity or desire to follow it up long term.
The best way I saw to get devs into customers shoes is to let developers be involved in client rollout - like ship then on-site and see how people use the feature they wrote.
But frankly even then, devs shouldn't be making a lot of these ae user facing decisions, send the UX guy.
It's really motivating to hear customers are happy and I don't know why a PM wouldn't share that good news.
However, sometimes the problem is just technical, and every game of telephone makes it worse. I have had two week back-and-forths which were eventually resolved by the agreement that OK, this nerd who does our implementation (me) can be on a teleconference with your nerd who does your implementation so long as us grown-ups are also in the call - and then it takes maybe five minutes to get to "No the digit five. Not the word five, the digit five." "Oh! Oh Wow. I never considered that. Sorry. Yes, it works now." and we're done.
I really valued time spent shadowing people using my software, one of our tools was for call takers, and I could see that the thing they're all kinda used to but have to keep working around is a thing I can fix with a CSS tweak, whereas the change their manager tells us should be prioritised is going to take months. I can land the tiny improvement next week, and make their lives better while their manager argues with my manager about whether the big piece of work is P2 or P3 and so on. The role I'm in theory taking next (if they get their act together and issue me a contract to sign) is more user contact again, and I look forward to being able to make people's lives better directly.
I never worked with him directly but we both overlapped at Redgate for several years. During the time I was there he wrote code that was integrated into Simple Talk (https://www.red-gate.com/simple-talk/), which is/was Redgate's website for publishing content, articles, tutorials etc., useful to SQL Server and .NET professionals. I believe he also worked on https://www.sqlservercentral.com/, which remains the leading community site for SQL Server professionals. The old Simple Talk site is several years gone now, sadly, but Mike worked on it during its growth phase and (guessing somewhat here) most successful period.
These are sites that are used and useful to hundreds of thousands of SQL Server and .NET professionals every month. Yes, they are also promotional vehicles for Redgate and its products, and a core part of Redgate's marketing strategy, but it is possible for them to be both marketing and useful.
Mike is an excellent engineer, and very much cut from the get (valuable) things done mould - which mammoth.js firmly underscores. I have no idea what he's doing at the moment but, if you get the opportunity to work with him, you should jump at it.
This app, published in 2017, has a continuously growing population of users from all over the world. I get email every day asking whether soft1 is the only server, thanking me, suggesting improvements, etc.
It's ironic, and there is a lesson to be learned here.
But often simple things have a very big effect - in my first job I made some simple scripts which imported data from machines into an ERP System.
I also made some bigger projects with feature rich GUIs at my first job.
The simple scripts probably sill import data every workday and automate a task previously made by humans since multiple years, some of the GUIs weren't even used daily before I left that job...
So I feel like the simple scripts will be there for a long time and save many work hours while some of the feature rich GUIs probably weren't necessary...
Between fiddling with debug.exe and discovering that fixed address, that put me on the path to demystifying technology (or at least understanding everything is approachable).
10 years ago at my current job I created a script to automate the job of checking a certain website for new data each day. It used to be done by a person who would spend maybe 20-30 minutes checking the site and circulating the info each day. Others would also check the site on their own periodically for faster updates.
The script just checks the site multiple times a day and circulates the results.
Over the course of 10 years, I’d guess that my little script I wrote in maybe 5-10 hours (including some tweaks over time as the site format changed) probably saved in the ballpark of half a million dollars in time spent, based on billing rates.
At work, giving a spot-time quick help often feels more helpful than pushing through a "proper" project task.
I suspect this is because large part of the "work" project is more like a speculative investment than something obviously useful. That is probably OK because finding large-enough-obviously-useful-things is hard. What we tend to overlook is that finding a tiny-but-obviously-useful-thing isn't as hard as it looks. It's just hard to earn enough from it.
From that p.o.v. your feature rich GUIs may be your biggest contribution to society, because that's really work based on your decisions.
There's no shame in making the source available but using a license that requires payment for commercial use, like the Prosperity [1] license.
For example this clause, phrased like an order, does not make sense:
"Don’t make any legal claim against anyone accusing this software, with or without changes, alone or with other technology, of infringing any patent."
You can't give orders to people in a license or other contracts. You can only describe conditions.
FWIW, it's written by Kyle Mitchell [1], an attorney. It's just that he places particular emphasis on writing his licenses in plain language, not legalese.
Every boilerplate due diligence process when trying to sell your company includes looking at what open source work you’re using to see if there’s any legal issues.
You’d be stupid to risk scaring off a multi-million dollar pay day over something so trivial.
Whereas, if it's a permissive license like; MIT, then I'm personally more likely to be much more forgiving and even try and fix problems.
Back in 2015, 'patio11 reached out to us. In addition to a structured license purchase, he gave great insights and actually wrote a blog post about the experience https://www.kalzumeus.com/2015/01/28/design-and-implementati...
Today, we offer paid software builds to solve related problems and it allows us to work on SheetJS full-time!
To me, this is the entire point of software and automation. To give time and money back to people, because I want to make the world better. I see software being priced to just barely be worth it for the buyer because it saves time (e.g. Mailgun and Auth0). When I write software, I want to price it so that it saves them so much money adoption is a no-brainer. "Free" pricing would be included in that, of course. Unfortunately, I also don't write much useful software.
One is "the day job", used to pay bills.
The other is "what I feel good about as a human being". It's great when both align, but that's not the standard thing that seems to happen.
Take it as a useful data point, not something to get bent out of shape over. :)
Users import spreadsheet data and generate barcodes. Since I have a customer base and a target market, I’ve had every one of my mentors tell me I need to stop writing features and work more on marketing and analytics. But it’s not as fun!
Instead, I find myself up late at night working on USB weight scale integration for grocer/farm labeling kiosk. I’m looking for beta testers that have a need for such a thing.
Check it out at https://label.live
I'm sure it made impact but at most it saved <10 people a couple of hours a day.
I'd compare this phenomenon as if drug companies spend millions of dollars to cure an obscure disease a handful of rich people have.
On the other hand, the vast majority of side projects have a very different: to have fun and/or being useful. Things that are useful usually make an impact on the society.
No, it isn't obvious, just like the Earth is not obviously round. Even 40 years ago, the statement wasn't obvious to many public intellectuals in the West, when they were in favor of neoliberal economic policies, under the broad assumption that free markets will automatically bring meritocracy (whatever it is). I think this example is one of many that show that meritocracy doesn't really happen by itself, but requires societal consciousness to be implemented.
This boosted their productivity at least by 60%. I was more proud and satisfied with that simple piece of code than my entire professional work that year.
Perhaps you can launch commercial license for your library, and license it to famous CMSs, such as Umbraco or Craft. That way you can make a living on it too.
Even so, mammoth.js seems to remain unique in the ability to upload a file in the browser and programmatically retrieve matching HTML. That is why I use it - I can get the HTML, process it, and POST it back to my server already cleaned up and ready for my CMS. The browser does all the heavy lifting, my server remains a basic CRUD app, and I don't have to allow file uploads as it all happens client-side.
https://vmsave.petekeen.net if you're curious.
About 6 years ago I started AutoSpotting, an open source tool designed to reduce AWS costs by automatically replacing on-demand instances with up to 90% cheaper Spot instances, it was meant to be my playground project for learning golang.
I estimate it saved in aggregate in the tens or maybe even hundreds of millions of dollars and multiple companies have been built around my code or reimplementing the same idea.
It's still a side project that I work on occasionally but at some point I tried to monetize it through support and custom development. I failed to get enough traction to become a full time job, currently make some $400/month from about a dozen users whom I sell precompiled binaries through Patreon.
> It's still a side project that I work on occasionally but at some point I tried to monetize it through support and custom development. I failed to get enough traction to become a full time job, currently make some $400/month from about a dozen users whom I sell precompiled binaries through Patreon.
We've had a lot of issues doing donations for cool projects like this. I'd really like a simple subscription service ala Gumroad so we can sign up for the "Enterprise" tier. Saving $100k we can totally kick back $5k to the person every month without feeling it.
Going forward I'm going to offer the enterprise stuff through the AWS marketplace, further reducing the friction, hopefully that will get more traction. It's just a lot of boring billing engineering work that I could have spent on improving the software.
It used to be that my ever-present problem was in dealing with Word Documents. Practically every document I received back then was a Word Document. They were ubiquitous. If you couldn't read a Word Document you couldn't do business.
I used WABI on Solaris to run Word itself in the 90s. It wasn't always workable. So a lot of the time I was dual-booting to Windows and running the true Office.
In the Noughties, I was able to stay in my UNIX-like system and run Star Office followed by Libre Office to read the fairly common Word Documents that came my way.
But now, in the early Twenties, I only just realised that over the course of the 2010s, all of those Word Documents just dried up and blew away. These days, I might receive perhaps one to two .docx files a year, and Libre Office handles them without me having to think about it.
But I think the biggest killer of Word Documents has been Microsoft itself. By trying to stay proprietary and keep the free Office suites continually playing catch-up Microsoft kept extending and extending Word's features. If you didn't have the latest (expensive) Microsoft Office, you couldn't read the latest Word Documents. People got sick of this and the world gradually moved, over the course of the decade or so, to sending and receiving .PDFs.
Adobe were smarter than Microsoft. They realised that a .PDF could be available to all, no matter what operating system one used, and everybody could use it. That being the case, everybody DID use it.
I haven't been able to replicate anything close to that success in all the years since then.
https://web.archive.org/web/2020*/https://www.camarades.com/
I built a side project that I put on Reddit that got 5,000 hits last month.
The second seems like better ROI
I put in a little effort each day, but thousands of people benefit. Small work, big impact. Contributing on Reddit is an easy way to have a meaningful effect on the world.
They should get measurable, direct compensation for the value created for others — be that saved time, joy or something else.
I feel there’s this quasi-apologetic approach to selling software when there should only be respect for those who can create value for others by their own creative and productive ability.
I still feel the most proud of a little library I made one weekend a few years ago [0], that’s now used all over the place. I get issues and contributions from Latin America, China, Japan, across the US and Europe, and Australia. I’ve done consulting work based on this library. It’s a great feeling to know I built something that others find useful directly and isn’t a tangential thing that was built as part of different business.
[0] https://github.com/lukevp/ESC-POS-.NET — check it out if you have a need to print to receipt printers from C#, and give it a star!
The reason I ask is that I have written, as part of my day job, a scientific library in C# that doesn't appear to have any public equivalent and I know addresses common tasks in the industry. I would love to open source it, if not for beer money, but for visibility to help my career --- I'm at that point where promotions only happen with externally-visible accomplishments.
I forget exactly what conversations I had, but it was also very clear that they had no problem with me doing so since it doesn't really have any connection with their core business. If I wanted to, I suspect I could have open sourced the original version so long as I stripped out the stuff that was specific to the company.
Did you agree on the price of that extra work? If not, I recommend to set price prohibitively high, e.g. $100 per line of code or $1000 per hour of work. If your company really want to own your side project, then they will need to pay the requested price.
My second side project[1] has not got nearly as much traction but also has a much smaller target audience and I haven’t really got fully finished.
I do find my professional work rewarding and valuable but there is definitely something different about the side projects. They feel like much bigger accomplishments.
It can be a blast to tinker with these, iterating until the output looks pretty sweet. One of my favorite projects. I can imagine the docx - to - css translation allowed for lots of neat tricks.
I've found that for the most part, you can work for money or you can work for impact. Commercial pressures prevent real disruption once a product is well established, and when it isn't, your disruption is corralled to the end of earning market share for your company, so anything disruptive that would go against that is not implemented.
That's why I don't work in software anymore. It may seem weird, but i would rather work a bullshit job. But I do write software, and it is all FOSS, and I pick my projects based on one principle: minimum effort for maximum impact.
Unless you're a big techco with worldwide reach, what could compete with that?
On the Phenomenon of Bullshit Jobs https://www.strike.coop/bullshit-jobs/
We have a long way to go before the code and the data is truly free.
They'll never know who I am but I am so proud to have improved their lives even a little.
The labor theory of value explanation for this is straightforward. In general, LTV asserts that the value output of some work approximates the amount of work that ordinarily has to go into it, or more precisely, of the socially necessary labor time going into that work (ie, the time it would take an average worker to do it without slacking off). This is because if you wanted that work done and didn't care how it got done, the socially necessary labor time would be the real cost of doing it yourself or paying someone else to support themselves while they do it (before various market dynamics and other distorting factors - it is an idealized model). I.e., in an assembly line, the cost of a part is the cost of raw materials + the cost of the labor added to them. This seems straightforward for assembly line work, but is a little less intuitive when the actual work is about making other people's work more efficient, which a lot of software dev falls into. But if someone simply said to themselves "I need the functionality of mammoth.js", the core idea still applies - of being able to replace the worker, hire a generic software dev, and get comparable work (or at least, good enough work), for a similarly low amount of value. Another way to think of it is that mammoth.js might save a lot of people a lot of time, but getting some version of mammoth.js implemented is probably historically inevitable and has a fixed and much smaller cost to actually do.
How does this resolve the contradiction in the article? Well, mwilliamson's day job career labor output might possibly have saved less time of other people's work than mammoth.js. But their day job career labor output probably couldn't have been replaced in any way but by a similarly large amount of time and effort from other developer(s). Meanwhile, mammoth.js could be reimplemented in a similarly small amount of time by someone else, maybe taking a couple of tries to get it right. If mammoth.js hadn't been written at the time it was, maybe that would have happened.
This isn't to discount ingenuity or insight going into this side project, or the usefulness of something like mammoth.js being in the right place and time. But I think it is a more precise way to think about how much value and what kinds are being added to the world by larger or smaller amounts of effort. In other words, devs shouldn't feel bad about having worked hard on stuff that is less neatly labor-saving than a small widget, as long as that hard work turned out to be useful.
Many companies (BigTech for example) are extremely net-positive financially. This means that the value they gain per employee is much higher than what they pay them.
Taking this further - the customers in many cases (and certainly in ideal cases) are getting more value than the price they are paying (hence they agree to pay), so in a sense you could argue that the value is actually even larger. This of course scales several times when working on some infrastructure (though the effect is very not obvious).
And you do.
Did you just save the city and the billions? Is that more meaningful and contributes more economically than someone who uses their rescue skills and saves a drowning stoned university student while walking home alone.