Can you comment some of the space? So a person who is thinking about creating a new open source project can get the idea and start making a alternative?
Don’t get me wrong. I’m a GNU fanboy at heart. But I dont believe in magically willing well engineered software into existence. It takes resources fungible with money. Projects with cash are at an advantage. Projects with cash, motivation and years of experience in the codebase are the ones that dominate. Not starting from scratch becomes a huge advantage.
A new project in a space needs to find an unserved market segment with resources fungible with money. That’s why successful developers’ tools are easy and CAD programs hard.
If you want to make an alternative, just make it and learn from what happens. Because what everyone wants is a free iPhone. Good luck.
Google Sheets is a fit in some situations but the real facts are that Excel is amazing and when someone has been running core biz logic on it for a long time; that operator is someone you need to get to know before feeling too certain.
There's money in replacing that person and fucking the whole thing up so they are stuck with a long tail of consultants. I never ran that sort of business. However on a couple painful occasions I overzealously pitched what python and psql could do to solve a problem and later had to eat crow.
At the end of the day, the people that do the magic that keeps everyones job paying aren't always (or nearly never are) the people that make the contract hire decisions. If you can give those people a tool that lets them 2x their work and be excited about it there's a big net win. If you want them to move to a statically modeled web interface with dynamic tables and they lose all their ability to do everything they know in Excel, everyone loses.
Portability and timing is key if you have to take on that sort of gig. Team buy in might be worth more than that. Never take somebodies sewing machine if you still want that biz to make enough money to pay you.
What trips people up is that Excel models can be deceptively inviting of replacement ideas. They may have many workflows within them that are obviously much easier to accomplish with a different tool. E.g., grouping and applying aggregate functions; filtering; joining; filling missing data, especially with constraints such as filling forward EPS estimates but only into the same fiscal quarter; etc. You could look at an ocean of INDEX(,MATCH(...)) functions in Excel and discover that the same manipulation in Pandas would require just two lines of code. But it is easy to overlook the importance of seemingly simple calculation flows, in the same model, that are uniquely suited for being expressed in Excel, the universal language for describing calculations.
For example, I have seen data analysts move from Excel to Python, replacing their models as they go -- after being wowed by Pandas' data manipulation capabilities -- and then get bogged down for months trying to recreate what Excel's =RTD("BLOOMBERG.RTD","",...) already did for them. And when the portfolio manager tells them, "this number looks wrong", which happens often, they spend half a day dumping data into Excel and building a sheet that's illustrative for the PM.
In my mind that's actually what is the root at any talk of "Why isn't there an open source alternative for X amazing program?"
As a wiser person than me once said, "It's easy to imagine so I imagine it's easy." Deceptively simple operations in things that have a long legacy of supremacy can just be near impossible to clone even if you can churn out a POC that looks reasonable in 20 minutes. That trap is a big hill a lot of us die on. At one point in my life I swore off ever doing ETL, and now I do it for a living. Seems like that's actually the world now. Sheesh. With MS embracing Python for big data, maybe the next big thing is just what it's always been... Excel.
Because that would be my gut feeling: Not interoperable enough, since some things just work differently, but not necessarily much worse. If you can't send your sheets to company b without being sure they can properly use it, it's worthless. Pretty much the same problem with Word.
The thing is that different job functions that are exposed to overlapping user bases in the same industry (and even office) use a different 20%. If it was just per-industry variation, it would be easy for industry-specific competitors to succeed, but the parts of Excel used actively by Andrew, who makes a tool that is also consumed by Bob and Carol are different than those used actively by Bob and Carol (which also differ from each other, and which each have their own users who rely on the tool and the features it relies on, even though they don't actively use the features.)
But the barrier to someone using it is much less because it is gentler than, say, giving someone python code to do the estimate and expecting them to do it correctly. I think the interface familiarity is key.
Unfortunately, while LibreOffice is usually pretty good at all this, it's always just one or two peculiar difference in function calls that breaks it. It's pretty close, but just not interoperable for anything advanced.
I suspect making it work this way requires an army of developers and some corporate will power. Having an inside track on exactly how the OS works may be an advantage.
I strongly suspect you are correct. As stale evidence of culture, I offer some writing by a software developer who used to work for Microsoft on Excel:
I still use Libre Office on Ubuntu and I wonder why they chose to be so different. It would be great if they could completely copy MS Office in UI/UX, but there's probably some kind of copyright there right?
Oracle v Google is copyright as applied to API’s. Different laws. Patents expire more quickly.
Even if you individually (yourself or your company) would be willing to move to some decent alternative (they do exist), you will still be exchanging files with people who are more locked in than you (e.g. banks/finance), because of custom plug-ins, custom macros, etc.
If I wanted to compete with Excel I would start with a plugin / add-in or complement tool and work my way from there. Some companies are probably doing it. They're not really replacing Excel itself but capturing some of the value away from Microsoft.
The entry level to power user path of Powerpoint and Excel specifically make it easy to jump in and then get very powerful usage from very quickly.
But true for Excel
For those who are interested, one promising project is SU2:
Its modular, workbench-based, Python-around-C++ core approach provides an environment for people to make their own specialized tools, like the Arch Rebar tool  that was created as part of a Google Summer of Code project.  like airfoil design as you mentioned. There was a recent forum thread started by people interested in doing exactly that. 
On windows, you're supposed to use some part of their autoinstaller through the freecad UI, which apparently didn't set some environment variable somewhere. On linux, I had package incompatibilities (using Ubuntu 18.04 LTS).
It... needs work.
Hah, very true. I have been working directly with OpenFOAM upstream to improve the packaging situation on Debian/Ubuntu but unfortunately I didn't get started in time for the 18.04 release. It's a bit tricky too in that many FreeCAD developers use Linux but I would bet most of our potential engineering end-users would be on Windows. Thanks for your feedback.
The problem is they don't.
What are some ways that FreeCAD can solve the problem of paying the rent of people who walk around holding their users' business problems and UI frustrations in their head?
Only saving grace is that these companies usually have some "start-up" discount (~95% discount), which of course I anticipate feeds the lack of open source development.
Consider Adobe's Photoshop and Lightroom. Many people (including me) would love to see those supported on Linux, or even better, be out-classed by open-source software, e.g. Gimp and Darktable.
Gimp and Darktable truly are wonderful pieces of software. But they aren't yet compelling enough to cause a mass-migration by professional photographs. Another example would be Microsoft Office vs. LibreOffice.
So you may need to refine your goals a little: Do you want to (a) fill a gap where no viable OSS exists, or (b) help OSS dethrone proprietary software in some category, e.g. Photoshop?
> So a person who is thinking about creating a new open source project can get the idea and start making a alternative?
I cringe when I read that, because I've asked that question many times for myself, and I never ended up following through. I think there's some wisdom in the notion that the best OSS project idea is one that solves a problem you have. Otherwise it's just too hard to really see it through.
Filling a gap where not OSS exists. I was trying to understand the gap. Like, many people are saying there are huge gap in CAD technologies, but this can be only solved by the persons who have domain knowledge, like Civil Engineers. Unless the people having the domain knowledge does not agree to volunteer or take the inatiative, no one will see any progress in that field.
> I think there's some wisdom in the notion that the best OSS project idea is one that solves a problem you have
Yeah, it is true. Like I am facing about a problem with APM that there are no or open core alternative of proprietary. Untill this post, I did not know other people are also thinking about its need.
Let's not kid ourselves -- Gimp is an unusable bag of crap.
Aspera: a high-performance data transfer suit, used in genetics and the film industry. I wrote a blog post about it a year ago and still get near-daily emails asking me if there is an open source alternative yet. QUIC may provide a basis for a solution, but it needs to be explored.
PDMS: software for planning, modeling and simulating oil and gas plants. Main two commercial suites are AVEVA PDMS and Autocad Plant 3D. AVEVA PDMBS is upwards of $1,000 per seat per month (!), so not feasible for projects which I have in mind (more on that in the new year). I'd imagine that Blender could be used as a starting point for a Free alternative, but I'm not sure. This is a tougher one.
They're niche industries that require tremendous amount of upfront investment, in both physical assets to realize the utility of the open-source project, and knowledge-base required to operate the software.
On the other hand, you could have a piece of software that requires niche knowledge but its used literally everywhere - for e.g. OpenSSL. Not many people can contribute to it, yet it exists as open source. The point I am trying to make is that OpenSSL and your quantum hardware control software are very different things.
On the Free side, I think one reason is the copyleft nature of the GPL. Another pattern indicator is how modular the software is - smaller bits are easier to open source than massive projects - and the general inclinations of the programmers, their bosses, and their legal teams.
That being said, I don't think it's unreasonable to expect a Free alternative to AutoCAD in 2020. (Pipes 3D is an AutoCAD extention). It's widely used software across numerous industries, much like Photoshop, Illustrator or Audition, but there is no Free alternative that I'm aware of.
A particularly annoying thing to me here is that AVEVA was actually originally developed and owned by the British government, but it was privatized (I think under Thatcher.) I think the value created for the tax payer would have been much greater to create free tools and software and make them available to everybody rather than just whatever pittance they got from selling it during a privatization firesale.
Another exception is public works paid by taxes such as Government open source projects.
And yet, in commercial industry where I've worked - it is hard to find anything that's useful and can replace internal software because there are no free alternatives. I don't expect these things to be out and open!
I did not have any idea that changing protocol will have this amount of benefit in data transmission. Also amused that no one have not solved it in Open Source world.
(honest question, and full disclosure: tus core author)
Such software also doesn't get used enough to be trustworthy as far as results without some other big companies using it to do things with and testing the results. What company is going to trust their product designs to the results of a bunch of open-source code with no company standing behind it?
(2) Cost of software is relatively small compared with the cost of retraining staff and changing business workflows and processes to cope with different software.
(3) Changing to new software is relatively simple compared with the problems of making all your staff, your contractors and your suppliers change to new software.
(4) Even if changing to new software was relatively simple and cheap, there would be massive risks in doing it. If you are designing nuclear power stations, nuclear submarines, skyscrapers, bridges or whatever, the cost of mistakes can run into the billions, or be fatal for a significant number of people.
(5) Bonus point: making this kind of switch could take a decade and could end up not saving you any money (cf Munich trying to switch to open source). Not many CEOs will attempt it because they are more focused on the next quarter's results. Anyway, in many if not most companies, the benefits -- if any -- would accrue to whoever the-next-CEO-after-the-next-CEO happens to be. And who really cares about that?
It's hard enough to get most people to change their email client or their text editor or whatever when the alternatives are free and the real-world risks are negligible. Getting them to change the software on which their whole business survival is based is another matter.
Moral: changing business software is not as simple as it seems if you only look at the software and don't look at the whole business plus the whole industry infrastructure of related businesses. It's never as simple as people think.
> the failure was not necessarily technical
Well, that was exactly my point ;-)
If you only look at the technical issues, ur doin it rong.
One misinterpretation of this mindset I have heard: "They just want someone who they can sue if things go wrong."
If my business depends on something, I want to know that attention is being paid to it.
Much better than, well this open source software has a critical bug, I sure hope somebody feels like opening a PR to fix it before our deadline. Or we could spend a few million bucks to spin up an in-house software development department to fix it ourselves, when that isn't our primary line of business. Or we could just spend a few thousand a seat to buy something proven, that somebody we can trust, and who is liable to be sued and has something to lose, is standing behind. Dirt cheap compared to the other options.
There’s Kdenlive and OpenShot that are maybe the most well-established, but they we’re both very buggy the last time I dealt with them, and they’re nowhere near featureful as what’s available commercially.
I think we could benefit from a well-know MovieMaker equivalent. Something that isn’t featureful, but is reliable (read: doesn’t crash) and intuitive.
Yes, there are a lot of players, especially on the Windows side in the under $100 price range, but nothing I've used has been comparable to iMovie on the Mac. It's the one void that hasn't been filled for me since switching from Mac to Windows.
I've purchased Cyberlink PowerDirector, Corel VideoStudio and Premiere Elements, and I didn't find them to be very good. There's too much of a sloppy "kitchen sink" mentality to them.
I actually found Windows Movie Maker to be better than the aforementioned products, but that got discontinued without a replacement for quite some time. There's now a "Video Editor" application which is part of "Photos" that is serviceable, but I would gladly pay a Windows app that is akin to iMovie - simple, focused and functional.
Edit: Not Open Source though, woops. Still a good sibstitute since Microsoft doesn't host Movie Maker anymore.
Once I can create the flashy animation style stuff I regularly create and not just Windows XP Movie Maker-level animations, I'd pay any price and switch to Linux in a heartbeat.
It seems to focus on 2D for now, almost all the showcase games for it are 2D also. I don't think it's been battletested enough in 3D yet.
My dream is to have not only an Access/Excel(in the role of pseudo-table programming) alternative, but one that could work great in a iPad/mobile device.
Also, in this space, most "options" are fully on the cloud.
Thats cool, but will never be a real challenger to Access or Excel if depend on cloud 100%. I need it to work fully standalone.
My first programming language was FoxPro. I know what it look like to "live the dream". One single language and environment and you TRULY code ALL the app: Db, logic, forms, reports, web services, etc.
BTW: why start with a relational lang? The MAIN power of the dbase/fox family above access was to have a truly tailored language for the task. With office, you MUST work from a paradigm (Access:Relational, Excel:Reactive functional) and become an inferior procedural maybe OO developer (VBA) to finish stuff. The dissonance is heavy.
P.D: I think for a company like MS FoxPro was not a good business, but it could be very good for a smaller player. Fox have a decent market and was very loved by the community.
I wish to have some funding but my need are modest, so if i cover my own expenses so i can focus at least half time is good enough...
I have a very bare bones Android app which uses the library
Incidentally my Android app is based off my free software Android project https://github.com/dennis-sheil/android-spreadsheet
- Someone who is part of the target audience. They should be able to provide your team with a good idea of the features you absolutely need to get started, and might be a good source of ideas for differentiating features.
- Someone great at manual quality assurance - user testing, poking the system through the laughably complex and diverse devices we all use, and ideally translating manual test scripts to automated ones, where possible. Lots of software has massive amounts of features hidden behind a broken UI.
- Someone great at UX, in particular related to the type of UI you are building. Web UX is not the same as desktop or API UX.
- Someone great at automated quality assurance - TDD, CI/CD, linting, fuzzing, code & user metrics, telemetry, performance and stress testing. They keep your progress from stalling over time.
- Someone trusted by the entire team to plan, direct and arbitrate. They avoid double work, keep the team going in the same direction, and keep interactions human rather than textual (which has far too low bandwidth to avoid conflict in the long term).
For most features you'll want all of these involved in the planning at the same time (and place, if at all possible), to get the most out of everyone's time. They'll all be able to see how the work fits together and will provide unforeseen insights and questions crucial to building an excellent product.
Fusion is orders of magnitudes better though.
It's used by mechanical engineers. It's what you use to design an engine. Good CAD software hooks up to the inventory system so that parts can be ordered automatically.
It's used by electrical engineers. Special CAD packages exist for integrated circuit design, magnetics, and antennas. For example a motor might contain coils of wire, permanent magnets, air, and various components through which magnetic field lines are directed. Eddy currents must be analysed.
It's used by chemical engineers. Pipes and tanks and pumps get laid out. Stuff like water hammer must be accounted for, except maybe the fluid is poisonous and explosive. Expansion joints for thermal stress and pressure changes might be important. Stress on welds must be calculated.
The age of the product would surely reveal the difficulty of creating a competing product...
In solidworks (to pick on the one I am most familiar with, NOT expert with) you can click on an edge and say "radius this". In Solidworks, you can have a master model drive dimensions down to other drawings, so that multiple people can work on different parts of the same system and get the bolt holes to line up. In Solidworks, you can say "give me 2% draft angles on these faces, and run an injection mold flow analysis."
Openscan is cool and I use it, but nobody would confuse it with Solidworks or similar.
Almost all drafters and fabricators just want to interact with the 3D model with the mouse. Dragging and adding features.
Also 2D drawings are the main output of a CAD program, to build the designs from. Which Openscad doesn't provide.
There's reverse engineering of some codebases like Rollercoaster Tycoon, Diablo, and Super Mario 64, but for 99% of games we'll never see them outside of the original release or an emulator.
There is some open source games, but not many and all the old console games are simple and graphically/audio simple, all the old PC games, it's really only modern AAA titles that have tons of complex assets and would be hard to 'open source clone of X'.
- use one physical webcam in multiple apps simultaneously
- switch which physical webcam software is using seamlessly
- add live video effects
- use a static image or video file as the webcam source
(If there is something like this already, then I have missed it!)
Thanks for sharing!
- File, email self hosted and e2e encryption has Nextcloud, but only technical people can set it up. There should be a happy-clicky thing that non technical people could set up and it would force them to do it the right way, because the right way is the easy way. By happy-clicky, I mean, they create an account on any VPS provider, then click "add service", say how big to let it scale to, define what domain name to use and they are done.
- Web based chat servers that scale. Again, there are web front-ends, like Convos and TheLounge you can put in front of IRCD, but non technical people don't have the patience to set up IRC networks and put web front-ends on them. If there was a happy-clicky solution that used RPC over HTTPS or something to negotiate clusters and all the person has to do is point DNS to it, then more people would self host chat.
- File sharing. If there was something lighter weight than NextCloud that could auto-scale in any VPS provider and could be deployed from each VPS provider, then more people would self host. I almost wrote something like this out of necessity but so many people were using dropbox, I abandoned it.
In summary, I think the gap that needs to be filled is to have more projects that integrate into VPS providers (by the VPS provider) and be part of their VM deployment system, so that anyone can deploy them easily. Maybe there could even be a business model around integrating 3rd party services into each of the VPS providers, following some non vendor specific standard, that all the VPS providers could set up. Linode, Vultr, AWS, Azure, Softlayer, OVH, Hetzner, Digital Ocean, etc... and no code specific to any of them. All of them should have a standard API that services can be integrated into and then easily deployed securely and correctly by less than technical people.
Riot is nice. https://about.riot.im/
Mozilla just adopted it for corporate communications. https://matrix.org/blog/2019/12/19/welcoming-mozilla-to-matr...
Absolutely! There should be a default configuration path that is easily accessible. That is to say, the non technical user can basically just click Install and answer maybe one question and everything else is automatic with good defaults. Any additional choice will just cause pain, because non technical people won't have the knowledge to make informed choices.
> By happy-clicky, I mean, they create an account on any VPS provider, then click "add service", say how big to let it scale to, define what domain name to use and they are done.
This is crazy if we're talking about non technical users. A non technical user won't know what a VPS even is. They won't know what a service is or why they should add one. They won't know what scale means. Is it the one in the bathroom? What's a domain name?
Supporting federation of hosting with various VPS providers can be useful for advanced technical users but any mention of it should be avoided for a non technical audiance. There has to be a sane default choice made already for all these questions.
So, out of my head (and, yeah, all of them have "alternatives" no serious user would ever switch to):
Microsoft Office (Excel in particular)
Google Calendar (self-hosted)
VisualStudio of Jetbrains IDEs
The Community Edition of IntelliJ, at least, from which all the others derive (I believe) is open source.
Photoshop does 3D modeling, animation, photo retouching, RAW processing, prepress, vector drawing, typography, and automation _before_ adding functionality that exists only in PS-compatible plugins. The component tasks all have alternatives, but nothing does all of those things in a unified interface, and _that's_ the feature where there's no real OSS alternative.
(Although I'm tempted to say "Blender does" just to see what would happen.)
They’re not open source, but quite a few graphic designers are switching from Adobe products like Photoshop and Illustrator to Affinity products like Photo and Designer. So Adobe is open to competitors, but they have to be very well executed (Affinity products are well-executed).
Also, it’s my opinion that (open-source) Inkscape is slowly closing in on Adobe Illustrator (and Affinity Designer). Not there yet, by any measure, but on its way.
There were some other alternatives as well but I think GDS starved them to death before Google got bored and killed GDS. (Please le me know if there are good alternatives, free/paid/open source, everything is interesting as long as they fo the same things GDS did and can convince me that they don't upload my data.)
you can use docfetcher for a full content indexing of your files like pdf or doc
I don't think anything comes even remotely close to the level of productivity and rapid experimentation / prototyping these DAWs can bring to the table.
The only open source alternative I was able to find was CPU-X, an alternative to CPU-Z:
Another example is I recently got interested in purchasing second hand GPUs and most of the cards found online would have their vbios modded for crypto mining, and to restore to a default bios most people would use the ATIFlash / NVFlash utilities from TechPowerUp. I got interested in how such a utility would work for modern GPUs and to no avail, I could not find any open source tools that would demonstrate the capabilities of these tools
These companies are also taking a giant cut but still losing money. Granted they are spending money on things that an open source alternative wouldn't necessarily spend money on, but I don't think very many of them are anywhere close to being profitable even without the extra spending.
All of these companies are following the ridiculous 0 to 1 monopoly model of growth and are wasting a ton of money trying to capture any market that they can get their hands on. It's not sustainable and the gig workers are paying the price. There's no doubt that they're providing a valuable service that could have spurred growth for the middle class, but instead they're using VC money to undercut existing businesses in hope of building the next Google.
Craiglist is handling as much traffic as all of them with around 50 employees.
There's no reason why someone building an open solution couldn't work with the cities and get their endorsement.
I also know a few people at food delivery companies and they all take around 35% of each order.
My point is that you could have an open source version of these services that could be managed by local governments or not for profits.
That is the idea I guess.
> Their last quarter revenue was almost $4 billion, you can definitely serve millions of daily rides for way less than that.
How do you calculate this? Sure if you were just you with car, you could - but not sure this is exactly a workable business model without uber - if it was then people would presumably not use uber.
> My point is that you could have an open source version of these services that could be managed by local governments or not for profits.
You could have open source versions - but the source code is a small part of the operation - and I'm not sure why I would want to government to run it - or why people should not be allowed to profit from it. If the issue is that workers are being exploiter maybe a better option is to see if there is some reasonable regulation to be put in place or why there is such low demand relative to the supply of labour.
I'm not a 100% sure if I understand your question. What I meant was that you could run a marketplace web service like uber or airbnb for way less than they're spending now. The variable costs of processing those transactions approach 0 at scale, also would be practically free if someone wanted to host it themselves for their small town.
> You could have open source versions - but the source code is a small part of the operation - and I'm not sure why I would want to government to run it - or why people should not be allowed to profit from it. If the issue is that workers are being exploiter maybe a better option is to see if there is some reasonable regulation to be put in place or why there is such low demand relative to the supply of labour.
Yeah I agree. The OP asked about a good open source alternative and I think that this could work as an open source project and be deployed per town (or as a decentralized application).
I love the work that the Inkscape team has done and it does do some stuff that illustrator doesn't do easily but it's no where near a replacement for illustrator. I haven't looked but I suspect it's not in their mission statement to be a replacement for Illustrator.
Hats off to Adobe for producing the world class tools they produce so consistently for basically the length of my adult life but man I think it would be good if there was something that was aiming to be an open source Illustrator alternative.
We pay roughly $7000 per year. If I want api access it cost additional $700 per year. It took them 9 months to transfer the licence when I bought the property.
Erm, nobody is going to jump up and down to replace that software if that's all you have to pay.
You can't get people to work on replacing Cadence, and that's a license that is on the order of $1 million per person per year.
A good example at the price range cited is ballroom dance competition software. Dick Douglas created it a number of years ago and people gripe what it costs (I think $1000 per comp or so) and the fact that it hasn't been actively developed over the years. It would be very useful as open source software--except that nobody seems to have the knowledge of what is needed (Dick and his wife Liz have high domain knowledge of ballroom scoring and competitions) and nobody is willing to take on the training/customer support task.
This is, in my opinion, where software, in general, breaks down. Everybody wants to be the developer of scalable software that doesn't scale support costs--unfortunately, that's the exception, not the rule.
(Link to the ballroom software: https://www.douglassassociates.com/)
Perforce is also something that's very useful for game development but relatively expensive.
Git LFS might handle this, but it's just not something that Perforce shops have to even think about, train their people on, etc. It's just "there" and there's somebody that they can call and yell at if things go wrong.
Of locking files? Sure it does; if two people modify the same piece of code, then there will be a merge conflict, and whoever's doing the merge will have the opportunity to reconcile those two versions. It's like a lock, but you don't have to think about it / explicitly lock and unlock the object you're editing. Combine this with rebasing (git-speak for "switch to the branch into which I want to merge and then try applying all the changes from my branch") and you end up with a pretty coherent idea of what changed and in what order.
Having used both branch-oriented (like Git) and locking-oriented (not Perforce specifically, but my current dayjob involves very similar version control schemes), I vastly prefer the former. Less ceremony around doing things in parallel, and less risk of development deadlocks (e.g. Alice locked A.cpp for editing, Bob locked B.dds for editing, Alice now wants to edit B.dds, Bob now wants to edit A.cpp, now Alice will have to revert her lock on A.cpp, wait for Bob to do everything he needs to do, then relock A.cpp and redo her changes all over again (probably also having to debug new things because of new bits and pieces Bob added) - or Bob will have to do so for B.dds - and cue fistfight in the breakroom).
That all being said, binary files are indeed a weak spot for Git, so if you really do want to version control your textures and models and sounds and such, then sure, perhaps a different VCS tailored for that use-case would be more ideal. In my experience, though, that tends to be an anti-pattern; generally better to keep code and assets separate (I'm well aware that tools/engines like e.g. Unity don't play the slightest bit nicely with that separation), using separate version control systems tailored to the specific content.
File locking is a way to communicate in advance that nobody should attempt to make changes to a particular file until the lock is cleared. Merge conflicts are communication in arrears (so to speak) and at that point, effort has already been wasted by at least one person.
By choosing one and discarding the other, or by creating a new audio file that incorporates both changes, just like one would do for any other file.
While I don't know if this exists, there's nothing theoretically preventing the creation of a diffing/patching tool for audio/video files, detecting insertions/deletions/replacements (perhaps by timestamp/frame rather than by line) the same way `diff` does for text.
> at that point, effort has already been wasted by at least one person.
A file lock doesn't prevent that time waste; there's nothing stopping someone from immediately overwriting it as soon as the first editor commits/releases the lock (in which case the first edit was a complete waste of time).
Locking the file is a signal not to work on it because someone else is modifying it. There isn't currently software that supports semantic merging of audio or video, so perforce says "someone is recoloring the asset, don't change the animation until they're done, or you'll just have to do the work again".
In the meantime, perforce prevents you from checking the file out. So you have to explicitly and clearly bypass your source control to do what you suggest, at which point someone rightfully yells at you.
I know how file locking works. Like I've said before, my day job involves using a locking-based version control system. My disdain for locking-based version control comes specifically from having to put up with it instead of using something sane like Git.
> So you have to explicitly and clearly bypass your source control to do what you suggest, at which point someone rightfully yells at you.
And yet that will inevitably happen anyway, because someone's breathing down your neck to get that animation done and won't take "well I'm waiting for Bob to finish recoloring first" as an answer. Cue the aforementioned fistfight over whether Alice's animation or Bob's recoloring can happen first.
Or it'll inevitably happen due to the aforementioned risk of deadlock (Alice is tweaking animations in a different order than Bob is tweaking textures, and thus run into a situation where both are waiting on the other to release locks on files; cue fistfight).
I've seen both cases happen repeatedly. All of those cases would've been avoided had we used a version control system that used branches and merges instead of locks and unlocks.
As it happens, that's exactly the answer you're supposed to give. It's not like game devs have any shortage of things to work on at any particular time.
> All of those cases would've been avoided had we used a version control system that used branches and merges instead of locks and unlocks.
I don't think you're thinking this through all the way. If I have 5 different branches where textureA.png got modified, which one is the right one to end up with after everything is merged? Who is going to have to re-do work? Branches do not solve that problem, and without out of band communication, that problem is made significantly worse than if those changes were done in sequence (which is what file locking enforces).
Well no, the failure modes would be different, but all of those things would still cause problems with branching and merging, mostly because you can't actually merge binary artifacts, only rebase.
And in a world where you can only rebase, locking actually makes sense.
The deadlock most certainly would not. One would get rebased on top of the other, in the worst case.
(In the best case, Alice and Bob would both be committing/pushing to their respective branches early and often, and could therefore look at each others' branches and see what changed between them; if you really want to emulate locking, you could do so pretty straightforwardly by checking if there are any changes to that file in commits outside of your own branch's commit history, and it should be doable to write automated tooling to that effect. All the "benefits" of locking without getting in the way of anything.)
> And in a world where you can only rebase, locking actually makes sense.
Even in a world where you can only rebase, locking is far more of a hindrance than a benefit, for the reasons already outlined.
But they're trying to do something very hard: control both quality and deadline. It's not like an open source or enterprise IT project. The game has to be finished, good, by a given date. To do that they do many things, including slaughtering sacred cows about how things are supposed to be done. If hard locking saves them time by avoiding wasted efforts, by artists who are probably over-worked already, then what's the problem?
Do you believe other tech fields are not trying to do the same exact thing? Do you believe that enterprise IT projects are somehow less beholden to both quality and deadlines than video games?
Controlling both quality and deadlines is what literally every (professional) software development project should be doing. The implication that game developers are somehow better about or more cognizant of this (let alone specifically because of broken development workflows) is pretty rich considering how frequently big-budget video games end up in development hell (see also: Duke Nukem Forever) and/or end up riddled with bugs (see also: literally everything Bethesda's released in the last decade or so).
(Not saying that enterprise IT is necessarily better in either regard, of course; bugs and delays are inevitable as software complexity grows, be it an RPG or an ERP...)
> If hard locking saves them time
It doesn't save time in aggregate, though. It maybe saves time for one specific corner case (conflicting edits on binary files) at the expense of slowing down everything else.
And if you're at the point where "conflicting edits on binary files" is no longer a corner case, then that betrays at least one of two dysfunctions:
- You're using some sort of container format instead of sanely keeping things split into separate texture/model/animation/normal/behavior/etc. files (and then - if the amalgamated container file is indeed necessary - combining it as part of the build process). If you're really running into a lot of cases where multiple people are trying to edit the exact same normal map at the exact same time, then...
- You've got a communications breakdown somewhere. You can band-aid over that with file locking, but that still doesn't address the issue of two people trying to independently edit something in the first place.
I know some smaller studios that use git to some extent, and they tend to struggle with it on occasion - again, primarily in the art & design departments, mainly with binary files. All the larger studios and some of the smaller ones seem to use perforce. Publisher-owned multinationals might have their own proprietary systems, I don’t have any insider information there.
In any case, people who aren’t familiar with the requirements of gamedev like to argue about this. It’s like proponents of forks arguing with someone trying to eat soup with a spoon.
Yes, but if they really can't be split up into smaller components, then there's always the option of using a different repository and VCS specifically for binary assets. Yes, it's kicking the can down the road, but at least it's kicking that can away from the actual code.
Git doesn't work very well with partial or subfolder checkouts which is something you would need if you want to store intermediates. In games intermediates can take multiple hours to build (like maps). Building the game from scratch every commit like it's usually done with git CI tooling does not work very well.
We also ran into wanting to give modders access to maps and materials but not to game code.
Open source makes it hard. Too many choices. Apple and Microsoft have an army and can decide an API from the top down and have an organization put resources into making a consistent experience. Windows 10 and macOS have absolutely beautiful scaling.
On Linux, fractional scaling crashes often. Wayland and Xorg having to handle it separately adds further fragmentation.
PopOS is nice: https://system76.com/pop.
- Mail clients with streamlined UI's:
Geary is as close as you can get to Airmail (macOS) and Mailbird (Windows)
- Window snapping:
Aero snap in Windows, Magnet in macOS. Gnome doesn't want to do quarter scaling, despite it being a common sense request, and the extensions don't like gTile don't use the same behavior at all - so basically it doesn't exist.
(Correction, Gnome seems open to doing it but needs help? https://www.reddit.com/r/gnome/comments/b7f3rl/any_future_pl...)
On the other hand, Linux has amazing:
- PDF readers. Every desktop environment seems to have its own PDF reader that does a better job than any proprietary one. Okular, evince, mupdf, xpdf. Any they're lite. Zero bloat.
- Package management. Every distros package management experience and their stock beats any app store. They don't force you to login.
- Terminals. Kitty is fantastic (https://sw.kovidgoyal.net/kitty/)
- Input: ibus and fcitx
- Access / Installing shared libraries and headers. No need to download xcode or grab Visual C++
- Not open source, but Spotify, Chrome, Slack, Firefox, Steam all work good
Many(all?) of the current remote access tools are nowhere near as simple/easy to use as Teamviewer, hence it continued popularity.
And though Photopea is not open source, it can mostly get things done for my minimal use-cases.
OK, not open source! but single-purchase at a reasonable price. Which reduces motivation for an OS replacement.
* Mood tracking software (e.g. Daylio ). Put owners in charge of their data for easy export and sharing
* Paper craft unfolding (e.g. Pepakura). Allow for 'automagic' unfolding but also user selectable joining/splitting of triangular islands.
* Machine learning oriented games (e.g. GWAP  (now defunct)). Open source games that allow for open data collection that can then be fed back into the community for machine learning.
* I've heard architecture software is abysmal and has no open source alternatives
* In browser CAD (e.g. OnShape ). In browser lowers the bar to accessibility.
* Photogrammetry/3d Scanning. There might be some open source alternatives but nothing that is as easily accessible as the David Scanner .
* Projection mapping. Again, there might be some open source alternatives but nothing that I've seen where I can buy a 'kit' with intuitive software to get up and running quickly (though I haven't looked too much in depth).
* Ultrasound machine. There's echOpen  but I don't know the status of that project.
* DNA sequencer. There was the Polonator  but it never became 'open source' and eventually died.
It has a bug, and sometimes gets labels swapped if you have more than one in a photo, which then metastasizes to corrupt the samples used to compare new photos against.
It was awesome, and now it's gone.
Name one. What I mean by multi-tenant is that the namespace, security space, capacity quota and I/O quota are fully isolated and managed at the storage-system API, not via other facilities such as cgroups which aren't even applicable beyond a single-host level. Each tenant gets something that looks like a private service with predictable limits (appropriate for an SLA) regardless of what other tenants are doing, despite being on shared infrastructure. Commercial vendors like NetApp and all the "hyperconverged" crowd have support for this kind of isolation at the cluster level, as do some bespoke storage systems such as the one I work on at Facebook, but in the open-source world? Nada.
That's not to say the open source stuff is bad. I get that they don't have the resources to do as much UX refinement as the others. If you can't afford the proprietary stuff or prefer open source, then you can get by. The actual audio handling systems inside are probably world class.
Also transcription software. Not voice recognition, but software that assists with manual transcription. I'm amazed that no open source alternative to F5 exists out there, since it's a relatively simple mechanism (keyboard shortcuts to denote speaker, paste timestamp, include annotations, etc and ability spool back to rewind 2 seconds).
Given the hugely abstract data driven world we live in and the inability of the human brain to have long term cache it should be important.
Open source versions exist but they are simply not up to scratch to paid versions, they are simply crap to be honest. Most paid versions have demo modes to see whats good but even the paid versions could do with improvements.
Don't get bogged down in making it work online. Keep it simple, runs locally. Windows or maybe if possible Android.
It had UML schema, Paxos replication, fine-grained transactions, cardinality checking, reversible upgrades, etc. Application code ran in-process with the database, and it made it really eady to do anything.
I'd love to contribute to an open-source version but probably can't since I've read its code.
P.S. It fell out of favor because the systems that used it tended to be monoliths that did too much to scale well. The "right way to do it," IMHO is to build a central stateful brain with it, kick all asynchronous work out to stateless worker microservices and read from active secondaries. If the brain's only job is to mutate state by applying business logic, you can scale quite far.
There are VHDL and some Verilog but from what (little) I understand, the industry has moved to SystemVerilog and there Free (as in Speech) tools haven't caught up.
- Paint.net: freeware windows mspaint replacement. Lightweight and simple UI, but powerful features and extensions system. I hate having to boot up GIMP just for editing a screenshot or something, but no other decent libre paint alternative exists
- SketchUp: this is to blender what paint.net is to GIMP. Super easy and intuitive to create simple models. A joy to use.
It's not actively developed anymore, though.
There was an link on the front page yesterday about “recycle mode” bricking devices to prevent resale. I’m now slightly disgusted that I own one.
Sonos hardware has great speakers and great sound, but the software is flaky (especially near microwave ovens) and requires a connection to Sonos servers at all times.
* Photoshop, GIMP is great but still a bit rough.
* Illustrator, Inkscape is great, but rough.
* Maya, Cinema4D: Blender is technically pretty good, UX is improving but still clunky. Even something like Silo would be pretty sweet (a fairly simple, pure 3d modeling program)
* Video editing: Is there really anything good out there? Last I tried the programs just straight out crashed.
Another is a good alternative to the Microsoft BASIC compiler for DOS. Although there are other BASIC compilers, they miss many things and don't work with real mode.
It supports single- and multi-pane modes.
Semi joke. It is quite a nice file manager. Terminal based though. No plugins, but batteries included.
Even without dvtm you can have mutiple contexts. nnn is extremely fast with tons of features. Many plugins are available already and it's easy to add new ones.
Specifically, one that will let you run your own server (Camfrog no longer allows this) and others may connect to it through a public directory or via direct IP address.
With unlimited camera feeds able to be opened.