BleakBluets

joined 2 years ago
[–] BleakBluets 5 points 1 week ago* (last edited 1 week ago)

Great questions. There wouldn't be an investor class or stock market under socialism, as only the workers would have equal ownership of their business, so you are correct to question how the initial capital could be raised. I can think of a few ways. (1) In the case where you are dissatisfied with how your current workplace operates, but the majority of your coworkers vote/prefer the way it is, you could convince enough workers in the minority to split from the existing business and pool part of everyone's savings to create a new business. (2) An individual or group could request a loan from a credit union (essentially a community bank). Remember, banks wouldn't be for-profit, but they can still hold/lend money and collect interest on that lent money. (3) Apply for a government grant or loan. A bank or government may choose not to fund your start-up, in which case, you would have to start and grow from just your savings likely without any coworkers at the beginning. Once/if you grow your small business such that it has some government-decided amount of workers (say 10 or so, as an example), you would be required to divide ownership among all those workers and they may vote for different leadership. I.e. even though you founded the business, you don't have a right to its leadership after it grows to a certain size.

This fundraising wouldn't be too different than how it is today; the only major difference is that you couldn't sell "stake" in your company to an investor or investment company for the promise of rewarding them future earnings.

Ideally, taxes (especially from highly successful businesses) would pay for a universal basic income (UBI) that is above the poverty line, so no one would be truly bankrupt. So in the situation where a business fails to get off the ground leaving the entrepreneur in debt, income from their future jobs or UBI would be garnished to payback the debts.

In the case where an already established business fails, as Evolith mentioned, it's not too different than how it already is; that business's assets could be bought by another company or repossessed by any debtors. The difference is that debtors under socialism can't be investment companies or equity firms, so the repossessed assets would be to recoup the losses of your community's credit union or the government, rather than sold to stuff the pockets of capitalists. That's not to say that there can't be corruption under socialism, look at the Soviet Union; it's just that there is more likely to be oversight and regulation in collectivist, worker-owned communities.

[–] BleakBluets 7 points 1 week ago* (last edited 1 week ago) (5 children)

Would the worker pay to operate the business? Essentially yes*, the non-wage operating cost of a business could be withheld from the workers' wages to pay for things like the electric bill of the building they work in. This is because the workers of the companies who provide that electricity also have a right to what their labor provides. The other possibility is that the government would pay for these costs through taxes (which is indirectly paid for by the population, of course).

Just because a business is worker-owned doesn't mean that every dollar of revenue is distributed to its workers. All companies would operate more like a union or non-profit company where they are limited in the amount of money they can stockpile, but how that money is raised and spent would be determined by the workers or (more likely) leadership that the workers elect to run the company.

*According to Marx, end-stage communism wouldn't have a need for fiat money and the transition to that state is some form of socialism. Marxists have different ideas for what a government and economy look like in these various stages and how the transition between them happens. Because it's easier to imagine and explain an economy similar to what we currently have, this hypothetical assumes an economy with some form of socialism that uses fiat money, businesses that compete with each other, and the government is some kind of representative democracy.

[–] BleakBluets 22 points 3 weeks ago (2 children)

Now the worm has two ships but they can choose to double it and give it to the next person.

[–] BleakBluets 11 points 3 weeks ago* (last edited 3 weeks ago)

I know it's anecdotal and perhaps can't be blamed entirely on this medication, but I've been taking singulair since I was 12 and I dropped out of school at 17 with a 3.8+ gpa. I did three psych holds and two years of therapy and I didn't feel better until a few years ago at age 26, which was when I was booted off my parent's insurance and no longer able to get my prescription singulair.

I did get a high school equivalent degree and an associates degree in my early 20s, but even then it was very difficult for me to hold a job with how often I would burn out and suffer extended depressive episodes. I'm doing better now, but it was definitely a major set back socially and career-wise.

[–] BleakBluets 3 points 1 month ago

"What is achievement? [throws party cup] An arbitrary little pile of standards. But enough talk... Have at you!"

[–] BleakBluets 1 points 1 month ago* (last edited 1 month ago)

The claim wasn't that a code refactor is always a change in public interface, but that it could constitute a new major version. I listed two examples of when a major version should be incremented, the first being a change in a public interface, the second (erroneously) was a change in a private interface which I then clarified could only apply in the case of a more substantial code refactor, because as you pointed out (and I reiterated and agreed with), private interface changes don't necessitate breaking changes. It isn't an exclusive requirement that a public interface has breaking changes in order for the major version to be incremented, only that there be a new major version when that interface ~~breaks~~ introduces breaking changes.

I had to explain userchrome thoroughly in order to demonstrate that it is a public interface and differentiate it from the gui. I assumed it wasn't intuitive because you missed it when I provided it as an example initially and was accused of avoiding that point.

The first sentence of each paragraph addresses which point it argues other than the userchrome demonstration which follows from the prior paragraph and only addresses your userflow vs interface question in its conclusion.

[–] BleakBluets 1 points 1 month ago* (last edited 1 month ago) (2 children)

You are correct about private interfaces. When I wrote that I was imagining something more significant like a code refactor, but yes, obviously, changing something like an internal function definition would not require a new major version if it doesn't change a public interface. Similarly, implementing a bugfix or new feature wouldn't necessarily mean that an existing public interface was broken, or that the major version should be incremented. I didn't intend to imply that.

I am using public interfaces in my examples because the original point was how SemVer can communicate at a glance to the end user the kinds of changes that were made (compatibility-breaking, bugfix, etc.) and I had the offhand idea to also communicate when the update was released by including the date in the patch number. I am not confused about what semantic versioning is or whether it can only apply to public interfaces or libraries. If I knew it was going to start an argument, I wouldn't have mentioned backwards compatibility; it was an offhand comment tangential to the idea I was explaining. I could have just as easily said:

"I prefer the SemVer Major.Minor.Patch approach so I can tell at a glance if the update is a new feature release or is just bug fixes".

I don't think I skipped the question about Firefox interfaces. An interface I was looking at for backwards compatibility was in the example I provided with the UserChrome interface and I provided a specific example of a third party tool using that interface, the FireFox-UI-Fix project. Admittedly, this isn't a strong example because the UserChrome customization doesn't expose any functions to be called and doesn't define any kind of protocol in a traditional sense. But that doesn't make it any less of an interface in my opinion.

The UserChromeCSS customization feature is provided to the user by Mozilla for the purpose of modifying the browser's chrome i.e. graphical user interface (note I'm not confusing a gui with a programming interface, they just happen to be the same thing in this example). In order to make these customizations, the user must be aware of how the browser's gui is layed out, i.e. the user must know the structure of the HTML that makes up the browser's chrome. If the user writes a gui customization which depends on that structure for one version of the web browser but then the browser changes that HTML structure in the next update, that constitutes a breaking change. In this example the interface is defined by the chrome's HTML itself. The CSS written in the UserChrome.css references/selects that HTML and is thus dependent on the stability of that HTML in order to produce the same effects across different versions of the web browser. Third-party tools that distribute custom UserChrome.css files should therefore expect that their customizations be compatible across minor and patch versions of the same major version release. It's not necessarily that the major version must increment every time this gui is changed, but when the interface for customizing this gui has introduced a breaking change (which in this case is usually synonymous). I think this is what you mean when you say "userflow". If so, then no, I don't think "userflow" is an interface. The userflow/gui happens to be an interface in this example because of the UserChrome feature that exposes the gui to modification through its own HTML/CSS interface, the stability of which is depended upon by both users and third-party developers such as the Firefox-UI-Fix project I mentioned.

As for other Firefox interfaces which would call for a major version increment upon being changed, there is the WebExtensions API for browser extensions, and the cli arguments that you mentioned. I don't think providing an exhaustive list supports or invalidates any point or opinion I've stated. The major version number is incremented if any public interface changes, it doesn't have to be representative of a single interface exclusively. An application can provide multiple public interfaces, where a library tends to be more singularly focused (maybe this is the source of our disagreement/misunderstanding?). An incremented major version just means that there is some breaking change(s) in some interface(s). Conversely, an incremented major version number doesn't imply that every provided interface contains a breaking change.

If it's your opinion that SemVer is better suited to a narrow API or library where a new major version exclusively indicates a breaking change in its singular public interface. Ok. That doesn't indicate a lack of understanding SemVer on my part, and that's not a requirement of SemVer. There exist applications using SemVer that expose multiple interfaces.

[–] BleakBluets 1 points 1 month ago

My suggestion is in compliance with standard SemVer as far as I can tell, but yes it is frustrating when apps use versioning that looks like SemVer, but make interface changes in Minor versions and don't really adhere to SemVer.

[–] BleakBluets 1 points 1 month ago (4 children)

Yes, especially for applications, and especially for Firefox. The Major version in SemVer increases with any interface change public or private (or it's supposed to). This is important to communicate to users who rely on any 3rd party plugins, or who need to open files created with prior versions of the software, including configuration profiles.

Using Firefox as an example, I use the Firefox UI Fix. If Firefox changes their browser userchrome/layout, this mod breaks. But it is nice that I can tell at a glance when a new Minor version or Patch version releases that it contains no changes that break this mod. Any breaking changes in these versions are bugs in Firefox.

As for higher number versioning. I'm not advocating that Firefox restarts their Major versioning number back to 0. They could skip Major versions and call the next Major version 200 for all I care. The only thing my comment advocated for was including the date in the patch version number.

[–] BleakBluets 7 points 1 month ago* (last edited 1 month ago) (11 children)

I prefer the SemVer Major.Minor.Patch approach so I can tell at a glance if the update breaks compatibility or is just bug fixes. Technically the Patch part can be any number as long as it increases each update of that same Minor version, so one could write the versions as AA.BB.YYMMXX where AA is the Major version, BB is the Minor, YY is the two digit year, MM is the month, and XX is just an incrementing number.

I think this approach has the best of both systems.

[–] BleakBluets 11 points 1 month ago

Smell-o-scope

[–] BleakBluets 76 points 1 month ago (2 children)

Omelette du Garbage

view more: next ›