heuroci
My memory of open source in the early days is that it was a mixture of rebellion and passion interweaved with leftist/anarchist stance. A lot of the freedoms we enjoy today were unthinkable back then. What you could do with software, even if you bought it, was highly restricted. If you read about the history back then, you may come to the conclusion that was totally bizarre. Not only were we restricted on what we can do or how we use software, writing software and making it open could subject the author to legal battles and liability. you know what was the next linux?BSD! but the legal procedures complicated its spread and Linus released the kernel at just the right time. I thank everyone who fought for those freedoms.
At that time, most source code that was released under open source licenses(there weren't nearly as many as we have today) was work of passion. I made a few presentations around the world mostly to university students far removed from the bay area to inform them of what is available to them (and secretly convince them to not join the armies developing on a particular platform).
Those days are long gone. And that is ok. If "price" and "freedom of expression" were the 2 dimensions the battle was being fought over, then open source won.
Things changed from "well..uhmm..there is an open source tool.." -> "It is open source" -> "We are open source!" --> "are you open source?"
The open source ecosystem had evolved. I believe in many ways to the better(choice, accessibility, cost) and in some-not-insignificant-ways worse. The accounts of the abuse and hardships maintainers endure are numerous. The bait-and-switch strategy is well documented now. The cloud-eats-opensource is self-evident. The knowledge of the craft, paradoxically, seems more centralized. Certain domains are pretty much proprietary software. Not a bad thing in itself, more like a necessity till economic incentives are better aligned.
There are also a few things which I believe we as a community of practitioners maybe conditioned to overlook or only recognise subconsciously:
1- At some point , open source became a marketing ploy, for individuals or organizations. Open source consumers are not blind or oblivious to this, so they may feel they are indeed paying by giving their attention.
2- The price "$0.0" maybe considered the fair price considering the risks("No warranty, etc.")
3- Substitutes, existing or almost-guaranteed to materialize, are in no short supply.
4- Even though the customer(open source consumer) may not expend a monetary sum, they do expend in kind. We all know the efforts required to get most open source software to work, and to make them work together.
5- There is a mutual, likely unconscious, alienation: one group pointing to the other as the one to blame for not making this ecosystem sustainable. It doesn't help the cause to refer to open source consumers as "vultures". It doesn't help to blame corporations(many of which are responsible for massive open source efforts which would not be feasible without those corporate funds). It doesn't help for consumers to exhibit symptoms of entitlement or subject maintainers to outbursts of anger. This doesn't mean to be apologists or ignore unacceptable behavior. More that I believe focusing on the behavior is more productive than focusing on the actors. One group's apathy to the other doesn't help either one.
So we have mythos and ethos challenges to deal with. Add globalization and they become far more challenging.
In short:
1- We have an economic model that is skewed, on supply side as well as on value capture side.
2- We have an erosion of trust that has been slowly and steadily accumulating over the years.
3- The expectations of the participants are at best ill defined and likely misaligned.
4- Licenses define one type of contract. We are missing "Social" and "Economic" contracts.
5- Speaking of contracts: it can be prohibitively expensive for individual or small teams to consult a lawyer on how to find a balance between open source mythos and economic participation. It can be even more expensive to do that in hindsight. So here FOSS bodies and volunteers could help.
We can simulate what happens from here easily. If nothing changes, it doesn't look good. The rising awareness, however, presents some hope and reason for optimism.
We could try to exert agency and find mechanisms to correct. more decentralised manners could be better fit and easier to customise.
As for a business model, I can't reference any that I believe can be sustainable and result in a viable business.
It is imperative to note that what constitutes minimum and viable had generally changed since 2010.
We should also keep in mind that those terms are relative terms, depending on the domain.
For me, I think one should know a lot or experienced personally the problem(domain expertise) and be open to the form of the solution(the product). For practical reasons, if nothing else, learning any sufficiently complex domain while trying to build a business is expensive.
ideas that form a gravitational force: these are ideas that pull many, uncoordinated efforts. It is a bit hard to describe, but I think of this as ideas that are "necessary" in a grander emergence that needs the ideas to cement its existence.
Ideas that are not ready to be hatched: "the too early" class. Sometimes because a missing ingredient has not been identified or not sufficiently widely available. When those ideas fail, and a decade or so later new thinkers think them again and realise they failed, sometimes they go back and figure out the prerequisites weren't there and now they are or they build the prerequisites themselves.
Ideas that are non linear: those are the rarest to come by. I believe they require extreme tolerance for counter-factual thinking either naturally or otherwise-inhibition-reducing aids.
Excellent article!
The actually concerning aspects about AI safety in my opinion are more about misuse/abuse as well as critical processes/decisions without human oversight. To be deliberately malicious, AI has to be strong, if not general. Both are very difficult. It is good to think about those things though
Perhaps you will enjoy this: https://heurolabs.atlassian.net/wiki/spaces/AIS/overview
Hugging Face partners with AWS
Analogy to me comes after you have stabilized "shapes" where you can draw comparison between a new input a set of stable patterns at which point you can point out the analogy. Syllogism may be closely related/involved.
I am not disputing that being able to draw parallels and employ analogies are related to intelligence. I am just not so sure that this is how you can synthesize intelligence. It is all very complex of course, and there is a school of thought that cognition is very closely related to sensory and embodiment (i.e.: embodied cognition ).
I think Aubrey de grey switched from AI to longevity because he figured he will need a long life to understand intelligence :)
Personally, I am still working on it but had adjusted the scope a bit.
We (http://www.heurolabs.com) are contemplating open sourcing it, or at least publish the design documents
It may be very tempting at times to skip normalizing data and to just throw stuff in a document store. The downside will be code complexity and runtime that is less than performant.
I am sure you are familiar but the patterns “adapter” “strategy” and “interpreter” can be very valuable here
I am sure you also use dependency injection as appropriate . I wish you all the best. I will keep an eye on and think good thoughts
One issue I have seen though is the mindset of the business user may not be very tolerant of probabilistic results.
What has been the most challenging aspects technically and business wise for you so far? What has been the most exciting/rewarding?
I proposed and designed a micro services architecture with the team. I had done that sort of thing a few times even before they were called micro services. There were a few advantages: * The product team had the freedom to re-think the value proposition, the packaging, the features. It was critical for the business in order to remain competitive. * The development team could organize in small sub teams with natural affinity to the subdomains they had more experience/expertise in. * Each domain could progress at the pace that fits, with versioned APIs ensuring compatibility. Not necessarily a unique micro service success prerequisite. One can argue versioning APIs is a good best practices even for internal APIs but the reality is that versioning internal APIs is often less prioritized or addressed to begin with.
There are technical pros and cons for monolith/MS. Additional data that can augment this decision is the org structure , the teams dynamic and the skillsets available. In the case of that project, the team had excellent discipline around testing and CI/CD. Of course there are challenges. Integration testing becomes de-facto impossible locally. Debugging is not super difficult with the right logging, but still harder. One challenge I saw with that project and other projects that adopt microservices is that the way of thinking switch to 'ok so this should be a new service'. I think this is a dangerous mindset, because it trivializes the overhead of what introducing a new service means. I have developed some patterns that I call hybrid architecture patterns, and they have served me well.
One thing to consider when deciding what road to take, is how does the presentation layer interact with the micro services. When it is possible to map the presentation to a domain or a small subset of the domains, the micro services approach suffers less from the cons. A monolithic presentation ---> Micro services backend could severely reduce benefits.
2 good references here: 'Pattern oriented software architectures' 'Evaluating software architecture'