Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
I suspect activists will continue to disagree about whether we have a moral imperative to change FOSS licenses themselves to contractually forbid Putin to copy, modify, redistribute and reinstall the FOSS he already has (or surreptitiously downloaded by circumventing sanctions). However, these horrendous events in Ukraine offer real world examples to consider the viability of expanding copyleft term expansion beyond software, and consider how it might work. My analysis is that such changes would only give us the false sense of having "done something". Ultimately enforcement of such licensing changes would either be impossible or pointless. The very entities (such as the varied international courts and treaty organizations) that could enforce such terms will also have plenty of other war crimes and sanctions violations to bring against Putin and his cronies anyway. The penalties for the actions of war that Putin took will be much stronger than Putin's contractual breach or copyright infringement claim that could be brought under a modified copyleft license and/or the Hippocratic License.
Posted Mar 18, 2022 21:46 UTC (Fri)
by cypherpunks2 (guest, #152408)
[Link] (1 responses)
The best we can do is ensure that software cannot be monopolized by those in power, and that is accomplished by regular FOSS licenses that put everyone on a more equal playing field.
Posted Mar 24, 2022 6:14 UTC (Thu)
by developer122 (guest, #152928)
[Link]
At some point you're demanding too much for the use of your code, and someone writes you out of the picture.
Posted Mar 18, 2022 22:48 UTC (Fri)
by atai (subscriber, #10977)
[Link] (9 responses)
And any license cannot constraint state actors, like Putin (as head of Russia) as by definition sovereign actors are above the laws and license can only be useful under the laws under sovereignty of a country..
Posted Mar 19, 2022 14:53 UTC (Sat)
by rgmoore (✭ supporter ✭, #75)
[Link] (4 responses)
I wouldn't go quite that far. This assumes that the law itself can never be evil, but there are plenty of examples where the law mandated evil rather than forbidding it, e.g. Jim Crow laws in the United States.
Posted Mar 19, 2022 16:29 UTC (Sat)
by elel (guest, #100484)
[Link] (3 responses)
Posted Mar 19, 2022 19:16 UTC (Sat)
by excors (subscriber, #95769)
[Link] (2 responses)
Posted Mar 19, 2022 20:04 UTC (Sat)
by isilmendil (subscriber, #80522)
[Link] (1 responses)
Intelligence agencies would probably be a good example of lawful. Whether this is lawful good or lawful evil is very much dependent on various factors and up to debate. Yet those agencies all over the world are happy to bend or outright break the law when it fits them to "stop the bad guys".
Maybe things could be different if there was some accountability for bad faith actors.
Posted Mar 21, 2022 21:32 UTC (Mon)
by bjartur (guest, #67801)
[Link]
Posted Mar 19, 2022 18:03 UTC (Sat)
by stumbles (guest, #8796)
[Link]
Posted Mar 19, 2022 20:40 UTC (Sat)
by flussence (guest, #85566)
[Link]
Posted Mar 21, 2022 19:23 UTC (Mon)
by mat2 (guest, #100235)
[Link] (1 responses)
Vague laws have many drawbacks: their subjects will not know what is forbidden and how they should behave - so they are avoided where possible. Also, vague contracts are a source of problems and frequently invite litigation. So we should avoid vague licenses.
Law is not a good definition of what is morally wrong and what is morally right. It is easy to come up with examples of evil laws and also of bad deeds that are completely legal. Many proprietary computer programs have a license that forbids use of that software to do something illegal. It could have been easy to add such a clause to licenses like GPL, but apparently for some important reasons it was not done.
Some people want to add license clauses to forbid usage of their programs to perform some particular kind of "evil" deed, be it abortion services or perhaps anti-abortion campaigning, etc. The problem is that people will not agree on what "evil" deeds should be forbidden, so everyone will add their own to the list and it will be a mess. For more, see Richard's Stallmans essay:
Evil cannot be legislated away and even more so, successfully eradicated with a software license.
Posted Mar 22, 2022 21:41 UTC (Tue)
by Wol (subscriber, #4433)
[Link]
So banning unlawful acts is denying access to free software, to people who really need it.
Cheers,
Posted Mar 19, 2022 2:15 UTC (Sat)
by NYKevin (subscriber, #129325)
[Link] (22 responses)
> Another possible approach to ending proprietary software is a universal boycott on authorship of proprietary software (perhaps through mass unionization of software developers). This is one of my favorite “thought experiments”, as it shows how much power individual software developers have regarding proprietary software. However, this universal boycott is also politically unviable, at least as long as proprietary software companies continue to pay such exorbitant salaries relative to other fields of endeavor.
It's not just about money. Some of my coworkers and colleagues at various FAANG companies are totally hostile to the idea of unionization *in general*, let alone the idea of specifically forcing Big Tech to open up all of its software. AWU, to cite a high-profile example, is much more focused on "traditional" social justice issues like fair pay and better working conditions (particularly for non-tech workers, who typically get a much worse deal than the average software engineer). AWU has taken positions on issues like user privacy, but I'm not aware of the union having a position on universal software freedom, nor do I think that AWU could successfully advocate for such a thing.
> Copyleft generally works reasonably well as a strategy [for ending proprietary software], but it admittedly requires constant vigilance.
The portion enclosed in square brackets is my interpretation of this line; it does not appear in the original, but based on the context, I believe my interpretation is at least reasonable. Frankly, I am deeply skeptical of this statement. Copyleft works well for creating more FOSS, which is a Good Thing in its own right, but I do not believe it has done very much to defeat proprietary software in practice. The vast majority of people are using tons of proprietary software on a daily basis, and to a first approximation, nobody thinks this is a problem outside of the FOSS movement (and a few highly related movements like right-to-repair).
> Over the last twenty years, we've received many reports of GPL violations in the Russian Federation, but we don't pursue them — not because they shouldn't be addressed, but because, under Putin's regime, it's highly unlikely we can get a fair hearing to uphold software freedom and rights for Russian citizens.
This, on the other hand, is exactly right. Nobody tries to enforce licensing in Russia, regardless of whether it's a FOSS license or a proprietary license. Licenses are paper, and there were already numerous pieces of paper which explicitly forbade Russia from invading Ukraine.
> For example, FOSS developers should refuse to work specifically on bug reports from companies who don't pay their workers a living wage. I also recommend that FOSS communities create (alongside their Codes of Conduct for behavior inside the project), written rules of the types of entities that the projects will officially assist with volunteer labor, or (in the case of a commercial FOSS community or organization), what types of entities the community will engage in business deals.
As an employee of a FAANG, I probably shouldn't state an opinion on this, but I will point out that this sort of thing is going to be controversial, at least for some FOSS projects.
> Every FOSS license in existence permits capricious distribution; software freedom guarantees the right to refuse to distribute new versions of the software. (i.e., Copyleft does not require that you publish all your software on the Internet for everyone, or that you give equal access to everyone — rather, it merely requires that those whom you chose to give legitimate access to the software also receive CCS). FOSS projects should thus avoid providing Putin easy access to updates to their FOSS.
I don't understand how this is meant to be accomplished. Geo-blocking is not going to be effective against a nation-state adversary. Heck, it's not even going to be effective against a moderately technically savvy consumer.
Posted Mar 19, 2022 12:27 UTC (Sat)
by Wol (subscriber, #4433)
[Link] (21 responses)
FOSS also suffers from the real-world problem that, despite its high morals and "four freedoms", those freedoms are VALUELESS to the majority because they lack both the ability, skill, AND TIME (to say nothing of desire) to take advantage of them. Banging on about giving a teetotaller a free lifetime's supply of beer is not going to bring them freedom, it's going to alienate them. Banging on about giving the proles free access to source code is going to fall on deaf ears at best, and make enemies at worst.
Your average man-in-the-street pays someone else to write code for him because he has NO OTHER REALISTIC CHOICE. Making it harder for him to find someone to pay is going to REDUCE his freedom, not increase it.
Yes, I'm a FLOSS guy. Yes I hate that logic. But you have to live with the Universe as it is, not how you'd like it to be, and it's all very well saying "but we'll change the Universe", it'll counter with "Ye canna change the laws o' Physics".
Cheers,
Posted Mar 19, 2022 13:45 UTC (Sat)
by pabs (subscriber, #43278)
[Link] (5 responses)
Posted Mar 20, 2022 20:09 UTC (Sun)
by rlhamil (guest, #6472)
[Link] (4 responses)
If by contrast, there aren't enough people coding and maintaining (whether out of the goodness of their hearts, or surviving via sponsors that depend on the code) some particular open source project, it gets stale.
TANSTAAFL, one way or the other.
Posted Mar 21, 2022 1:07 UTC (Mon)
by Wol (subscriber, #4433)
[Link] (3 responses)
In a completely different scenario, I bought some stuff on-line, and after three attempts by me to pay them, they set their lawyers on me for the debt. I just quoted "legal tender" at them, said I had tried to pay them, and said that while I wasn't sure of the status of a credit card as "legal tender", the law was quite clear that if I offered said legal tender, their failure to accept it was *in law* an agreement by them not to take legal action. I never heard another word from them ...
Cheers,
Posted Mar 21, 2022 1:15 UTC (Mon)
by Wol (subscriber, #4433)
[Link]
Cheers,
Posted Mar 21, 2022 10:06 UTC (Mon)
by farnz (subscriber, #17727)
[Link] (1 responses)
But if I implement DVD-CSS (or AACS, or other DRM scheme that has previously been deemed to be an "effective copy protection measure" by the courts) in GPLv3 code, purely for the purposes of obeying the terms of the scheme while implementing a usable media player, and then the DVD CCA or AACS LA argue in court that my implementation is "an effective protection measure", pointing at past precedent, what happens?
I simply state that I've implemented this because it's required to produce a decent optical media player for video discs. It's a third party claiming that, even though it's been implemented in GPLv3 code, it's still an effective protection measure.
FWIW, I predict that a court would take a narrow view of the GPLv3 language in this case - I can't argue that it's an effective protection measure, because I have stated in my licence terms that it is not, but that nobody else, not even someone who distributes a copy of the code under the GPLv3 licence, would be so restricted.
Posted Mar 21, 2022 16:52 UTC (Mon)
by floppus (guest, #137245)
[Link]
> a technological measure “effectively controls access to a work” if the measure, in the ordinary course of its operation, requires the application of information, or a process or a treatment, with the authority of the copyright owner, to gain access to the work.
If you wrote and distributed the program without the copyright holder's authority, then the program (if it works at all) does not require the authority of the copyright holder to operate, therefore the program is not a "technological measure that effectively controls access to" that work.
The program might be deemed to "circumvent a technological measure", but it cannot *be* a technological measure, which is what the GPL is talking about.
Posted Mar 19, 2022 19:04 UTC (Sat)
by tialaramex (subscriber, #21167)
[Link] (13 responses)
We're long past the point where anybody is doing ground-up systems development. Even if you build space probes you are standing on the shoulders of many generations of embedded systems developer, and so you benefit from all that code being available. So, our man-in-the-street probably already has software, and would like some small work done to that software, maybe they wish the bloody colour picker had the six colours they need and not the six default colours picked by somebody on another continent. Maybe they need to handle the particular tax rules of their nation which alas were not catered for in this otherwise excellent accounting package. Their needs are modest, they don't need those inevitably rock star programmers you read about, they need somebody who can do a little bit of work, somebody competent in this particular field. They are looking for the equivalent of the village blacksmith, but for software - and they can only do that if the source code is available. We're not fighting the laws of physics here, this is the natural flow of the river, the proprietary folks are the ones trying to fight that.
Posted Mar 20, 2022 10:33 UTC (Sun)
by Wol (subscriber, #4433)
[Link] (12 responses)
Never mind whether there are or aren't any village blacksmiths (I like that analogy), they CAN'T FIND ONE, and so over time they disappear. And Free Software is preaching to a smaller and smaller audience ...
You've seen my rants on databases. So much Pick effort is wasted "preaching to the converted". But I guess most of the people here know about Pick, even if they don't use it! Problem is, fighting the "if everybody uses it, it must be good" mindset is VERY difficult. imho the design paradigm behind relational is just wrong. The same for Word. Excel is very good, but if all you have is a hammer every problem looks like a nail ...
Changing the way - and what - people think is VERY hard. That's why Open Source was formed - too many people think Free Software is going about it the wrong way.
Cheers,
Posted Mar 21, 2022 11:05 UTC (Mon)
by kleptog (subscriber, #1183)
[Link] (11 responses)
As for Pick specifically, I've heard about it mostly here, but all the docs are aimed at people already using it. People write a lot about how it's not relational, which is fine, but very little is written explain how it compares why any other NoSQL database. At first glance it looks a lot like a key/value store with some tooling, but I figure it must be more than that because otherwise people would be selling it that way.
NoSQL is used extensively all over the place because it solves certain problems better. Use the right tool for the job and all that.
Posted Mar 21, 2022 11:16 UTC (Mon)
by Wol (subscriber, #4433)
[Link] (10 responses)
I know I know. Which is why I'm so glad that we've got ScarletDME, even it it's not quite there yet.
Relational is First Normal Form with a load of tooling on top. Your fundamental database unit is a set of attributes with all the tooling to manage it.
Pick is a matrix with a load of tooling on top. Your fundamental database unit is an n-dimensional array, with a primary key, and all the tooling to manage it.
My blinding flash of inspiration, thanks to nix, was that the second law of thermodynamics proves that a set has far more entropy than a matrix. Therefore Pick MUST, as a matter of Physics, be a much more information-dense environment.
So when Physics says you can sack two thirds of your relational guys and replace your system with Pick, surely you should take it seriously? The difficulty, as you point out, is that this comes with considerable "opportunity cost" - you have to invest money to save money, and if that doesn't pay off in the short time you might not be around for the long term to take advantage of the savings.
If you're interested, join us on the mailing lists, and we'll convert you :-)
Cheers,
Posted Mar 21, 2022 11:20 UTC (Mon)
by Wol (subscriber, #4433)
[Link] (2 responses)
Because relational explicitly forbids you from knowing the actual implementation, it becomes pure maths with no way to run experiments and specify real-world requirements.
Cheers,
Posted Mar 21, 2022 15:43 UTC (Mon)
by nix (subscriber, #2304)
[Link] (1 responses)
This is exactly the same as the potential speedup you can get from writing something in a language with a runtime smart enough to do JIT-compiling versus one like C where that stuff isn't provided (unless you implement it by writing such a language implementation in C). Determining the performance of Java code, or Lisp code, or JavaScript code isn't suddenly impossible, and reasoning about it isn't "pure maths with no way to run experiments". It means that running experiments (or reasoning about the JITter) becomes *necessary* to make such judgements. This is probably harder than reasoning about the performance of something written in C -- but the latter's performance isn't going to respond to the data being processed and improve over time, no matter what you do.
Posted Mar 21, 2022 20:46 UTC (Mon)
by Wol (subscriber, #4433)
[Link]
You're missing the elephant in the room. Can you improve the performance of a Huffman Coder written in C? Not speed, but compression? Can you improve the performance of a fridge that is already capable of reaching 1K? If your rocket is already doing 0.9c, can you make it go any faster?
Instead of c, the speed of light, the *maximum* *possible* speed attainable under our understanding of Physics, let's define I - the speed of information - the maximum speed possible for a database to transfer information from OS to application.
As I'm sure you'll admit, a completely naive unoptimised FNF database is hopelesly inefficient, and that hopelessness grows with the size of the database. That's part of your frustration with "why can't the optimiser do any better?". Running at pedestrian, Newtonian speeds, there is absolutely oodles of room for improvement with an optimiser.
But that's why I did that Gedanken experiment. Go back and look at it. Pick achieves a near-naive speed of 0.95I ! Yep, as programmer I need to pre-define the indexes to assist my queries, but that's not hard. (Define indices for your relational database - I won't object :-)
There's just no point having a Pick optimiser - there is no headroom whatsoever to make it worth it. You said we can't do complex queries - well if you want to do it in SQL, I could run my Pick query, retrieve the *exact* dataset you're looking for, pass it through my SQL layer, and sit back and relax before your SQL Optimiser has even worked out where to start.
Please, DON'T compare Pick to other databases. Compare it to Information Theory. You can't cool a fridge below 0K. You can't accelerate a rocket beyond c. You can't accelerate a database beyond I.
Cheers,
Posted Mar 21, 2022 13:45 UTC (Mon)
by excors (subscriber, #95769)
[Link] (6 responses)
I suspect people would take you more seriously if you tried to sound less like a total crank :-) . Working code and benchmarks and technical documentation would be much more convincing than reams of pseudoscientific nonsense.
Posted Mar 21, 2022 14:51 UTC (Mon)
by Wol (subscriber, #4433)
[Link] (4 responses)
You cannot benchmark a Mathematical Theorem.
I stated that in twenty years of Pick programming, I've never met a complex Pick query stretching over more than a couple of lines. But in six months of SQL programming they're pretty much all complex monsters. Either I'm a liar or that's pretty damning! Either way, it's evidence.
And it's very noticeable when discussing performance, I'm pretty eager to do a Gedanken benchmark experiment - yet the response from the relational guys is ... crickets ... (take my word on this, but real experiments show Gedanken is accurate to about 5%).
At the end of the day, if you're going to fight conventional wisdom, OF COURSE you're going to come over as a crank. It's inevitable.
The relational guys love to argue maths. I'm trying to counter with Maths. The Mathematics of Entropy says Pick is objectively a better model - no experiment required.
You can't counter a mathematical theorem with empirical facts - Newton's Laws Of Motion are mathematically totally solid. It's just that Reality said "Einstein did a better job".
Both the Pick and Relational models are theoretically sound - indeed if a Pickie doesn't use relational analysis he's an idiot. But the Second Law of Thermodynamics says that Pick is objectively more efficient. And all my career's experience bears that out in spades.
Please. Look at the MATHS. Look at the ENTROPY. Look at the evidence (yes you'll initially have to trust my claims - verify them when you get the chance). Then see what you think.
Cheers,
Posted Mar 21, 2022 15:47 UTC (Mon)
by nix (subscriber, #2304)
[Link] (3 responses)
RDBMSes are not mathematical theorems. JIT-capable interpreters are not mathematical theorems, and it is perfectly possible and indeed routine to run experiments to determine the performance characteristics of specific programs on them.
This obviates the rest of what you wrote.
> I stated that in twenty years of Pick programming, I've never met a complex Pick query stretching over more than a couple of lines. But in six months of SQL programming they're pretty much all complex monsters. Either I'm a liar or that's pretty damning! Either way, it's evidence.
To me this seems just as likely to be evidence that implementing complex stuff in Pick is so hard and the model is so inexpressive that nobody even tries, so the maximum complexity of stuff written in Pick is bounded above at a very low level. Nobody's written word processors in assembly since WordStar, either (and indeed writing it in assembly is what eventually killed it). The maximum observed complexity of stuff written directly in raw assembly is fairly low, and that's not any sort of indication that assembly is somehow massively more expressive and capable than higher-level languages.
Posted Mar 21, 2022 18:40 UTC (Mon)
by Wol (subscriber, #4433)
[Link] (2 responses)
> RDBMSes are not mathematical theorems. JIT-capable interpreters are not mathematical theorems, and it is perfectly possible and indeed routine to run experiments to determine the performance characteristics of specific programs on them.
Then please. Did you see my Gedanken experiment where - was it mpr22 - gave me a typical query of his?
Please take that same query, and do the same Gedanken experiment.
> This obviates the rest of what you wrote.
I appreciate I come over as a bit of fanatic. As indeed I am.
But you said you were frustrated that Relational *should* be able to take advantage of opportunities to speed up, and yet it didn't. My Gedanken experiment shows clearly that there is *no* *room* available for Pick to speed up. I would love to see a similar experiment with a Relational database ...
Show me you don't have a closed mind. Take mpr22's query. Tell me how many requests a Relational database will pass to the underlying OS to get the data. Now compare how many I needed with Pick (a full index scan of renewal dates, cherry-picking the ledger by customer id, then one read per ledger entry for the selected customers). Beat that with Relational!
> > I stated that in twenty years of Pick programming, I've never met a complex Pick query stretching over more than a couple of lines. But in six months of SQL programming they're pretty much all complex monsters. Either I'm a liar or that's pretty damning! Either way, it's evidence.
> To me this seems just as likely to be evidence that implementing complex stuff in Pick is so hard and the model is so inexpressive that nobody even tries, so the maximum complexity of stuff written in Pick is bounded above at a very low level. Nobody's written word processors in assembly since WordStar, either (and indeed writing it in assembly is what eventually killed it). The maximum observed complexity of stuff written directly in raw assembly is fairly low, and that's not any sort of indication that assembly is somehow massively more expressive and capable than higher-level languages.
As I said before, converting the Pick data model to the Relational one is as simple as hiding the primary key, and restricting the dimensions to 1. It's so easy, that every modern Pick database has a SQL layer built on it as a matter of course. But practitioners would much rather use the underlying Pick features, than ask Maxwell's demon to put back all the information that converting from Pick to SQL lost. 90% of your complex SQL query is Maxwell's demon hard at work.
Nix. I don't want to get into an argument with you. I respect you too much. PLEASE do that Gedanken experiment on mpr22's query.
Cheers,
Posted Mar 21, 2022 19:42 UTC (Mon)
by Cyberax (✭ supporter ✭, #52523)
[Link] (1 responses)
Try examples from, e.g. here: https://www.databasestar.com/complex-sql-query-example/#f...
I've seen analytic queries with dozens of joins, but extracting these kinds of schemas is impractical.
Posted Mar 21, 2022 23:34 UTC (Mon)
by Wol (subscriber, #4433)
[Link]
Publisher is Publisher.
Book_author and Book_language are attributes of Book, so they would go in the same FILE (table).
Author is author.
In this case, I'd say Customer_address is an attribute of Customer rather than an entity in its own right, so both of them, together with address status, would go in the same FILE. I see here, the ERD disagrees with me. Likewise, I probably wouldn't break Country out into its own FILE.
Do I treat order_line as an entity (in which I case I would say it belongs in the sales ledger), or as an attribute of Order? I'll treat it as an attribute of Order, so along with shipping_method, it belongs in the Order FILE. Looking at order_history and order_status, I think they belong in the same FILE, too.
Note that if I've got a one->many relationship, I list all the sub-table fields in an ASSOCiation, and that tells Pick it is a "table within a table".
"Some parts look simple. Others may not be so simple". I'm thinking the same about Pick ... :-)
Note that I'm going to use the LIST command, not the SELECT. Under the hood, they're pretty much the same (much like argc[0] makes the same executable do different things in Unix). But the LIST command actually outputs the data like SQL SELECT, the PICK SELECT just collects primary keys behind the scenes.
LIST cust_order BY order_date order_date
LIST cust_order COUNT order_date BY order_date BREAK.ON order_date
It didn't cross my mind that date might be a timestamp, not a date, but let's create a calculated column that converts timestamp to date ... (The conversion code stands for Date, Day Month Year)
LIST cust_order COUNT DATE BY EVAL('OCONV(order_date,"DDMY")) BREAK.ON DATE
I almost never used EVAL and that stuff so I can't remember the AS syntax, but it's probably the same ...
LIST cust_order COUNT DATE AS "Orders" BY DATE
The next one REALLY shows the difference between Pick and Relational ...
LIST cust_order COUNT DATE AS "Orders" COUNT book_id AS "Books" BY DATE BREAK.ON DATE
Here I would have to experiment slightly. I think "COUNT book_id" works, but it might have to be SUM EVAL( DCOUNT( book_id, @VM)). The DCOUNT stuff counts the books per order - I could put that as a calculated field in the dictionary, if I wanted.
And note that I am still only reading one row per cust_order - and not one per order plus one per book!
LIST cust_order COUNT DATE AS "Orders" COUNT book_id AS "Books" SUM price AS "Total Price" BY DATE BREAK.ON DATE
The next bit, the running total, makes me go OUCH! I really don't have a clue how to handle it in the query language, but it's pretty easy to do. Define a function RUN_AND_BREAK( var_to_sum, var_to_break) in BASIC. It just sums var_to_sum, and resets the count every time var_to_break changes. It stores all this in named common, so be careful!
LIST cust_order COUNT DATE AS "Orders" COUNT book_id AS "Books" SUM price AS "Total Price" EVAL(SUBR(*RUN_AND_BREAK(DCOUNT(book_id, @VM),OCONV(DATE,"DM")))) AS "Running Total" BY DATE BREAK.ON DATE
As before, I can just create a virtual column RUNNING.TOTAL and put all that complicated mess in it :-)
And I've just found the "stored procedure". That makes me happy. Pick doesn't have a LAG function, but now I've got SQL stored procedures, it makes me much happier writing PickBASIC functions. Unlike SQL however, I can make my custom LAG look back 7 days, not 7 rows ... But you'll counter, quite fairly, that I've written custom code ...
Now to explain ...
Unlike SQL, I'm just scanning one table! So I can't add an index to improve join performance :-) Unlike MySQL, however, I can create an index on almost any information in my FILE - I just need to create a virtual column and I can index it, so I could easily index month, for example, if I wanted - OCONV( order_date, "DY4M2").
The way I would optimise this, is to create an index on DATE. That way, when I order BY DATE, the LIST will start by scanning and sorting the index, then retrieving all the keys from the index in sorted order. So running the report is just doing a sequential scan of the cust_order FILE by pre-sorted id. So especially if I'm only reporting a small subset of a large file, the ONLY table I've had to scan in full is the date index. (And depending how that index is organised, most recent Picks use a btree I believe, and can just scan the keylist to retrieve a pointer to the index data.)
And if I had split order_line out into its own FILE, I would have stored all the keys in the cust_order FILE, so at no point would I have had to scan the cust_order FILE, I would have just declared price as a TRANS in the cust_order FILE and Pick would have taken care of all the details, retrieving the data directly with a single disk hit.
(Oh, and I didn't add that Pick, for the most part, is order-insensitive. "LIST cust_order BY DATE fields_to_list" or "LIST cust_order fields_to_list BY DATE" Pick couldn't care.)
Cheers,
Posted Mar 21, 2022 14:57 UTC (Mon)
by Wol (subscriber, #4433)
[Link]
I'm pretty certain the company was William Hill the Bookies. Six months of effort by consultants to get a complex query to run faster on Oracle / Twin Xeon 800 than the Pick / Pentium 90 system it was replacing ... ??????
And an Oracle / Cache shootout - Oracle struggled to meet the 100K insertiion target speed, Cache breezed through 250K pretty much from installation.
(Yes Cache isn't Pick. But the data model is similar.)
Cheers,
Posted Mar 22, 2022 19:55 UTC (Tue)
by MrWim (subscriber, #47432)
[Link]
Indeed, I think there’s a whole bunch of chat about the four freedoms in abstract, but very little actual coordinated work around making it practical to make use of those freedoms. I find it useful to think of it in terms of positive vs negative liberty. Negative liberty is about not having constraints. Positive liberty is the practical capacity to act. So much of free software philosophy concerns itself with negative liberty - not being constrained by software licences, without thinking much about how users can actually be practically empowered. I wrote a bit about a very specific way in which people could be better empowered to take advantage of software freedom one here: Unlock software freedom one by using better tools.
Posted Mar 19, 2022 21:22 UTC (Sat)
by mjg59 (subscriber, #23239)
[Link] (11 responses)
Posted Mar 20, 2022 1:24 UTC (Sun)
by milesrout (subscriber, #126894)
[Link] (10 responses)
Can we? If you think that point can be argued, why don't you argue it? I strongly dislike this "we can argue that [...]" framing where it's presented as obvious that we can argue something. But it's not obvious at all.
>so I think a reasonable thought exercise is "Would a license that forbid its use in restricting the ability for people to exercise their rights to use other free software" be free software?
No, because that violates freedom 0.
>Using such covered code in a weapon used to kill someone would prevent that person from exercising their rights to use other free software, and as such would be forbidden.
What else, you can't use it to collect taxes because if you collect taxes from someone they might not be able to afford to buy a more powerful computer that could be used to run more free software? You can't use it as part of a property management business, because you might evict someone, and then that person will be spending their time looking for a new flat instead of using free software?
What about a drop-in replacement for a piece of software, designed such that you can't really use it *and* the thing it's replacing. Is that preventing the user from using 'other free software'? Way way too vague.
Posted Mar 20, 2022 1:38 UTC (Sun)
by mjg59 (subscriber, #23239)
[Link] (9 responses)
Section 3 prevents me from implementing anything that's an effective technological protection mechanism. I'm fine with this, since permitting me to do so would allow me to restrict the freedom of my users, but it blocks a use case.
> What else, you can't use it to collect taxes because if you collect taxes from someone they might not be able to afford to buy a more powerful computer that could be used to run more free software?
Maybe! Like I said, it's a pretty terrible license, but is it non-free?
Posted Mar 20, 2022 2:52 UTC (Sun)
by NYKevin (subscriber, #129325)
[Link] (8 responses)
> No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.
You have every right to use GPL'd software as a form of DRM. You just can't use laws such as the DMCA's anti-circumvention prohibitions to defeat the GPL's copyleft provisions.
The resulting DRM is not very useful, of course, but that's mostly because "copylefted DRM" doesn't make sense in the first place.
Posted Mar 20, 2022 3:39 UTC (Sun)
by mjg59 (subscriber, #23239)
[Link] (7 responses)
Posted Mar 20, 2022 13:25 UTC (Sun)
by floppus (guest, #137245)
[Link] (1 responses)
(Section 3 can be interpreted as a restriction on "conveying", but it's not in any way a restriction on Freedom 0. It's not a restriction on *using* the program, because using the program is explicitly outside the scope of the GPL, and outside the scope of copyright law in the US.)
Posted Mar 20, 2022 19:00 UTC (Sun)
by mjg59 (subscriber, #23239)
[Link]
No? I can write something that's an effective technological mechanism under GPLv2 - v3 explicitly says I can't.
> It's not a restriction on *using* the program
Hm. This made me go back and re-read the FSF definitions, and I was slightly surprised that freedom 0 uses the word "run" rather than "use" - so I think I'm actually left claiming that this arguably violates freedom 3 rather than freedom 0, which I'll admit weakens my argument somewhat.
Posted Mar 20, 2022 19:26 UTC (Sun)
by NYKevin (subscriber, #129325)
[Link] (4 responses)
Posted Mar 20, 2022 19:58 UTC (Sun)
by mjg59 (subscriber, #23239)
[Link] (3 responses)
Posted Mar 21, 2022 1:24 UTC (Mon)
by mjw (subscriber, #16740)
[Link] (2 responses)
So it doesn't restrict you from writing and distributing any covered code that others might deem an effective technological measure. It just says that you cannot use that to claim the same and use such laws to restrict the users rights.
Posted Mar 21, 2022 1:44 UTC (Mon)
by mjg59 (subscriber, #23239)
[Link] (1 responses)
Posted Mar 22, 2022 4:52 UTC (Tue)
by NYKevin (subscriber, #129325)
[Link]
Whether a court buys that argument is another matter, of course.
Posted Mar 20, 2022 2:58 UTC (Sun)
by marcH (subscriber, #57642)
[Link] (1 responses)
If you have a good, real-world relationship with your uncle, trying to convince him to stop reading lunatics on the Internet is useful. Keep trying to do that. On the other hand, answering random lunatics on the Internet is worse than a waste of time, it's giving them credit. Fight misinformation by creating, supporting and promoting good information, never answer to the former directly.
XKCD 386
Posted Mar 31, 2022 0:24 UTC (Thu)
by bkuhn (subscriber, #58642)
[Link]
> Here's a very quick and simple way to support Ukraine: hit the "unsubscribe" button as soon as you read something trying to make a direct connection between FOSS and the latest Russian invasion.
As a bit of “behind the curtain”, I actually didn't have anything about the war at all in the first three drafts of this essay. My colleagues convinced me, precisely *because* we were getting so many inquiries at Software Freedom Conservancy (including from the press) about “should FOSS licenses impose sanctions”, that I ultimately added that section in about the war.
The question is often asked any time there is a particular bad action done with FOSS; my goal was to write an essay that gave a definitive answer to the question when it's raised in all its different forms (IMO, of course, lots of folks disagree with these conclusions).
On the point about D&D alignments upthread: I think it is a good shorthand to think about copyleft as being a good strategy to stop the “lawful evil” from acting badly but it doesn't do all that much to stop “chaotic evil” behavior. But do note that issue is just one of the arguments that I make as to why FOSS licenses are not a good place for dealing with software-unrelated ethical and moral issues.
On mjg's point about whether you could make a bad-behavior poison pill and the license might still be FaiF, I see where you're going with that, but I generally think poison pills are tactically bad (even though GPLv3 let a few of them through). I think copyleft works best if the only rights in play are your rights in the software in front of you, and works combined with/based on it. But I don't feel that way for ethical reasons; just tactics and coalition-building.
Anyway, thank you all for this thread; there are a lot of interesting points made and I've made note of many of them as very useful and I will want to keep in mind (including many that I just don't have time to respond to in detail right now). LWN comment threads on my articles always have the best signal-to-noise ratio and I greatly appreciate them!
Posted Mar 21, 2022 12:04 UTC (Mon)
by sadoon (subscriber, #155365)
[Link]
Where I'm from, there are no intellectual propery laws, and there probably won't ever be for the foreseeable future. (Fact)
Say my government decides to do something you don't like, whether it be as simple as taking a sociopolitical stance that you ABSOLUTELY hate, or going as far as invading a country that you love. (Hypothetical)
Would forbidding people from my country from using your software by changing your license do you any good? Down here, everyone pirates movies, games, music, and software. The "laws" did not stop them.
Some people are just so overwhelmed by their egos.
"But I *must* take action against them!"
It's futile, it's pathetic, and in the worst case, you might be woefully wrong and look back at yourself in disgust in a year or two because of how wrong you were. Believe me I've been there.
Posted Mar 21, 2022 21:13 UTC (Mon)
by bpearlmutter (subscriber, #14693)
[Link] (1 responses)
Posted Mar 23, 2022 3:26 UTC (Wed)
by pizza (subscriber, #46)
[Link]
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Ultimately any "no evil" license is useless against any evil doer, who by definition does not obey rules and laws.
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
To set this into the frame set by your D&D example: chaotic good/evil does not care about the law - lawful good/evil only breaks laws for "the greater good".
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Would this be the same "do no evil" Google used to spout?
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
https://www.gnu.org/philosophy/programs-must-not-limit-fr...
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
>
> So when Physics says you can sack two thirds of your relational guys and replace your system with Pick, surely you should take it seriously?
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
DATE = OCONV(order_date,"DDMY"). Rather than creating a new column, I could always just put that in the query with the EVAL keyword - I'll use both variants in the next query ...
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Wol
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
FOSS also suffers from the real-world problem that, despite its high morals and "four freedoms", those freedoms are VALUELESS to the majority because they lack both the ability, skill, AND TIME (to say nothing of desire) to take advantage of them. Banging on about giving a teetotaller a free lifetime's supply of beer is not going to bring them freedom, it's going to alienate them. Banging on about giving the proles free access to source code is going to fall on deaf ears at best, and make enemies at worst.
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
>
> When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them
Kuhn: Copyleft Won't Solve All Problems, Just Some of Them