The trouble with software patents is that if you actually answer your question for software, you come up with something that looks a whole lot like copyright. What you want to do is prevent someone from just wholesale copying a competitor instantly without doing any of the work, but do so in a way that doesn't allow the mechanism to produce monopolies and oligopolies that can exclude a later entrant from the market who does do the work.
You are confused.
Copyrights: Copying, say, the source code or the binary 10101001 of software is a transmission of an idea.
Patents: Running that code is a usage of the very idea[s] that the code describes.
These are 2 different scenarios, each of which has its own kind of restriction.
However, there is a blurring between the notions of copyright and patent as I have presented them, but that's only because the differentiation of them is too subtle for most people, especially politicians, who are mainly trained in obfuscation; for instance, if I recall correctly, it is a violation of copyright to reuse wholesale another author's novel's plot even when those ideas are transmitted much differently. In my opinion, then, the plot of a novel really falls under patents rather than copyrights.
But you know what? It doesn't matter:
What [our society needs is a way to] prevent someone from just wholesale copying a competitor instantly without doing any of the work, but do so in a way that doesn't allow the mechanism to produce monopolies and oligopolies that can exclude a later entrant from the market who does do the work.
I think "who does do the work" is the tricky part, and the ones who we'll always win that judgment are the ones with guns and money.
Patents restrict the usage of ideas. Copyrights restrict the transmission of ideas.
The only question is: What ideas deserve to have their usage restricted? It all comes down to entitlement, and that is really what we need to measure.
There are no physical constraints in software.
Everything is information. Everything is Mathematics.
I'll say it again:
People are always talking about software as though it's intangible and metaphysical. This is because most people don't understand what's going on; they can't see gears and levers and wheels that can be turned by hand, so they assume that some kind of magic is at work.
There is no fundamental difference between the Newcomen steam engine and Linux's latest execution scheduler.
People are always talking about software as though it's intangible and metaphysical. This is because most people don't understand what's going on; they can't see gears and levers and wheels that can be turned by hand, so they assume that some kind of magic is at work.
There is no fundamental difference between the Newcomen steam engine and Linux's latest execution scheduler.
Compensation for the task of finding an original solution is what is at issue. However, should the inventor of rounded GUI elements be compensated in the same ways as the inventor of the LCD screen? The contemporary patent problem has to do with preposterously disproportionate entitlement.
Do we really need these telcos anyway? Wouldn't it be possible to establish a network of cheap transceivers throughout neighborhoods and cities for at least the purpose of carrying voice and video communications? Then population centers could be connected by a few larger transceivers jointly managed by both communities. Heck, I'd bet we could implement higher fidelity audio data too.
Caps are arbitrary limitations for the purpose of stealing as much profit as possible from consumers; these communications companies who put on caps are basically saying: "Actually, we aren't any good at communications."
[Disclaimer: I don't really know what I'm talking about, which I'm sure someone will point out.]
Nothing exposes the primitive nature of profit quite like the arbitrary rules that govern the copying of easily copied information.
As an aside: Somebody is getting paid; library books are by no means free. That is the great deception propagated by social programs: "The benefits are free."
It sounds like a new secret weapon of the Cybermen: The brain of a squid fused with the advanced cybernetic technology of a parallel world; it's only purpose is to delete from existence those species that are incompatible with such an upgrade.
It seems to me that by using multiple signatories, you are approaching a distributed model. I think it would be worthwhile to put some thought into a system that would take this to the limit: Allow anyone and everyone to become a source of trust according to the configurations of anyone and everyone else; why should it be the case that other people get to decide for me what what the core of my web of trust looks like? I don't trust Diginotar or any other weirdly named Web 2.0 company; I trust my fanatical, principled, OSS friends.
Indeed. Despite Apple's hip image, Steve Jobs is actually quite square.
Re:Git could use revision numbers
on
The Rise of Git
·
· Score: 2
how do I get a list of every commit ever made to a Git repository, on any branch? I have no clue. With Subversion, it's easy -- you just ask for the log higher up the tree.
Like this: git log --all
RTFM:-)
Second, what if I'm only interested in a single branch? There there can't be more than one child, because the second child is on another branch.
What you call a `branch' here is not what git calls a `branch'. In git, a branch is simply a pointer (as a nice human-readable name) that points to a particular commit object at any given time, and this pointer's value can be changed at any time; it just provides a convenient way to refer to a commit, and in practical terms it is all that is necessary to be productive (tags take care of the rest).
What you're describing as a `branch' is a much more absolute concept, something that would better be called a `linear ancestry' or `line [of development]', and calculating that line is the crux of the problem; you're begging the question by assuming you already know exactly what you want to calculate.
In git's terminology, branch `master' as shown in the diagram just [currently] means commit `D0', and branch `some-branch' just [currently] means commit `E'. There are 3 linear ancestries or lines (see Figures 1, 2, and 3 at the same link).
As you can see, the first 2 lines are traversabe from the same git branch, `some-branch'.
Now, let's say you want to know "the" child of commit `B'. Firstly, which line are you talking about? Well, you must already know which line (or set of lines, as you'll see) that you want to consider. As per my last comment, you could do something like the following (where I've simply replaced `483b3ced' in the original with `B'):
git log B..master --reverse -1
The command says:
* git log: show me log information for...
* B..master: the set of commit objects reachable from `master' but not reachable from `B' (this would be {D0,C0}),
* --reverse: order that set from oldest ancestor (C0) to the newest descendant (D0), but...
* -1: display only the first in that ordering (C0).
Now, in this case, you can actually be a bit more ambiguous with your lines and still get the same answer:
git log B..some-branch --reverse -1
The command says:
* git log: show me log information for...
* B..master: the set of commit objects reachable from `some-branch' but not reachable from `B' (this would be {E,D0,D1,C0}),
* --reverse: order that set from oldest ancestor (C0) to the newest descendant (E), for a total ordering of something like (C0,D0,D1,E), but...
* -1: display only the first in that ordering (C0).
What about the third line of development, though? Assuming you know (unlikely) that `D2' comes after `B' in a line, consider:
git log B..D2 --reverse -1
The command says:
* git log: show me log information for...
* B..master: the set of commit objects reachable from `D2' but not reachable from `B' (this would be {D2,C1}),
* --reverse: order that set from oldest ancestor (C1) to the newest descendant (D2), but...
* Any abbreviation of a hash string will do as long as it's unique among the hash strings known to your repo.
* Use tags instead of hashes.
* Use branches and their names effectively.
* Use git's `name-rev' command.
* Read about the other ways to specify revisions.
* You only need a handful of commands to use git for the vast majority of the time: checkout, log, pull (fetch and merge separately can be nice), rebase, add, commit, reset.
What's your problem?
Git is superior to svn... But it's also a massive pain in the arse, whereas svn is simple and elegant.
You must be joking!
The conceptual underpinnings of git have been poorly expressed by many people, but they are utterly simple. If you understand pointers, linked lists, and hashing, then you understand git. My feeling is that you never bothered to reason about what's going on.
Re:PostgreSQL CVS-git conversion
on
The Rise of Git
·
· Score: 1
You can cherry-pick which files/folders to checkout in git as well; see the `show' and `checkout' commands. Also, you could just create tags for conveniently referring to the revisions from which you want to `show' or `checkout' a particular file.
Re:Git could use revision numbers
on
The Rise of Git
·
· Score: 1
What's wrong with using git name-rev?
Re:Git could use revision numbers
on
The Rise of Git
·
· Score: 3, Informative
Now, Git works around this mostly, because you can say 483b3ced^ to go to the previous revision (and actually SVN supports this too because you can say HEAD^). But it's not a full solution. What's the next revision? Git doesn't have a way of getting you that information.
That question doesn't make any sense, because in absolute terms, there are an indeterminate number of immediate children across every repository and across time.
There are a number of things you could do to narrow the search (such as something like git log --reverse -1 483b3ced..master, but ultimately you'd have to account for merge commits there, too; perhaps the --children flag for git rev-list and git log might be useful).
Re:because the others still suck
on
The Rise of Git
·
· Score: 1
You can also use git's `checkout' to grab files from other revisions, and it updates the index at the same time.
Why do you NEED to copy information other than the SHA1 in order to reflect the commit properly? Also, why can't you just use shared tags to make it easier to discuss particular commits?
Moreover, you don't need to type in the entire SHA1; any abbreviation will do as long as it is unique among the other SHA1s known in the repository.
Revision numbers (git doesn't have them, but other DVCSs do) are meant for local usage; universal names like git's SHA-1 names are what are meant to be used uniquely across any repository.
Except with a major difference: Bazaar gives you the ability to have both checkouts share the same database, so it doesn't take up twice the amount of space. Git doesn't let you do this -- you'll have to create two full copies of the repository. (Ironically, this accusation is often made towards Bazaar by people who haven't heard of shared repositories.)
Local clones of a git repository use hard links by default in file systems that support hard links, so they are not two full copies.
Also, there is the git concept of an `alternate object database', which allows two repositories to share the same data.
The trouble with software patents is that if you actually answer your question for software, you come up with something that looks a whole lot like copyright. What you want to do is prevent someone from just wholesale copying a competitor instantly without doing any of the work, but do so in a way that doesn't allow the mechanism to produce monopolies and oligopolies that can exclude a later entrant from the market who does do the work.
You are confused.
Copyrights: Copying, say, the source code or the binary 10101001 of software is a transmission of an idea.
Patents: Running that code is a usage of the very idea[s] that the code describes.
These are 2 different scenarios, each of which has its own kind of restriction.
However, there is a blurring between the notions of copyright and patent as I have presented them, but that's only because the differentiation of them is too subtle for most people, especially politicians, who are mainly trained in obfuscation; for instance, if I recall correctly, it is a violation of copyright to reuse wholesale another author's novel's plot even when those ideas are transmitted much differently. In my opinion, then, the plot of a novel really falls under patents rather than copyrights.
But you know what? It doesn't matter:
What [our society needs is a way to] prevent someone from just wholesale copying a competitor instantly without doing any of the work, but do so in a way that doesn't allow the mechanism to produce monopolies and oligopolies that can exclude a later entrant from the market who does do the work.
I think "who does do the work" is the tricky part, and the ones who we'll always win that judgment are the ones with guns and money.
Patents restrict the usage of ideas. Copyrights restrict the transmission of ideas.
The only question is: What ideas deserve to have their usage restricted? It all comes down to entitlement, and that is really what we need to measure.
There are no physical constraints in software.
Everything is information. Everything is Mathematics.
I'll say it again:
People are always talking about software as though it's intangible and metaphysical. This is because most people don't understand what's going on; they can't see gears and levers and wheels that can be turned by hand, so they assume that some kind of magic is at work.
There is no fundamental difference between the Newcomen steam engine and Linux's latest execution scheduler.
People are always talking about software as though it's intangible and metaphysical. This is because most people don't understand what's going on; they can't see gears and levers and wheels that can be turned by hand, so they assume that some kind of magic is at work.
There is no fundamental difference between the Newcomen steam engine and Linux's latest execution scheduler.
Compensation for the task of finding an original solution is what is at issue. However, should the inventor of rounded GUI elements be compensated in the same ways as the inventor of the LCD screen? The contemporary patent problem has to do with preposterously disproportionate entitlement.
Do we really need these telcos anyway? Wouldn't it be possible to establish a network of cheap transceivers throughout neighborhoods and cities for at least the purpose of carrying voice and video communications? Then population centers could be connected by a few larger transceivers jointly managed by both communities. Heck, I'd bet we could implement higher fidelity audio data too.
Caps are arbitrary limitations for the purpose of stealing as much profit as possible from consumers; these communications companies who put on caps are basically saying: "Actually, we aren't any good at communications."
[Disclaimer: I don't really know what I'm talking about, which I'm sure someone will point out.]
Nothing exposes the primitive nature of profit quite like the arbitrary rules that govern the copying of easily copied information.
As an aside: Somebody is getting paid; library books are by no means free. That is the great deception propagated by social programs: "The benefits are free."
/facepalm
Here's a hint: You don't understand the point of Gödel's incompleteness theorems.
It sounds like a new secret weapon of the Cybermen: The brain of a squid fused with the advanced cybernetic technology of a parallel world; it's only purpose is to delete from existence those species that are incompatible with such an upgrade.
You are not compatible!
You will be DELETED!
According to TFA, they developed an "evolutionary algorithm"; that means it is still trial and error.
Everything is information; there is no fundamental difference between doing something in a computer simulation or with beakers and ovens.
Performing trial and error on a supercomputer just happens to be much faster than performing trial and error in the laboratory.
Let's not introduce religious baggage into our communities, OK?
"Hear, hear!" is the expression.
It seems to me that by using multiple signatories, you are approaching a distributed model. I think it would be worthwhile to put some thought into a system that would take this to the limit: Allow anyone and everyone to become a source of trust according to the configurations of anyone and everyone else; why should it be the case that other people get to decide for me what what the core of my web of trust looks like? I don't trust Diginotar or any other weirdly named Web 2.0 company; I trust my fanatical, principled, OSS friends.
This line:
Written by Theodore Ts'o, 3/29/93
is at the top of the following file from the Linux source code:
linux/drivers/block/loop.c
That means the ability to mount an ISO has probably been supported by Linux for nearly the last TWO decades.
Around 240 BC, Eratosthenes calculated the circumference of the Earth to an error of less than 2%.
Indeed. Despite Apple's hip image, Steve Jobs is actually quite square.
how do I get a list of every commit ever made to a Git repository, on any branch? I have no clue. With Subversion, it's easy -- you just ask for the log higher up the tree.
Like this: git log --all
RTFM :-)
Second, what if I'm only interested in a single branch? There there can't be more than one child, because the second child is on another branch.
What you call a `branch' here is not what git calls a `branch'. In git, a branch is simply a pointer (as a nice human-readable name) that points to a particular commit object at any given time, and this pointer's value can be changed at any time; it just provides a convenient way to refer to a commit, and in practical terms it is all that is necessary to be productive (tags take care of the rest).
What you're describing as a `branch' is a much more absolute concept, something that would better be called a `linear ancestry' or `line [of development]', and calculating that line is the crux of the problem; you're begging the question by assuming you already know exactly what you want to calculate.
Consider the history in Figure 0 (I would have inlined it, but Slashdot's commenting system erroneously flags it as spam).
In git's terminology, branch `master' as shown in the diagram just [currently] means commit `D0', and branch `some-branch' just [currently] means commit `E'. There are 3 linear ancestries or lines (see Figures 1, 2, and 3 at the same link).
As you can see, the first 2 lines are traversabe from the same git branch, `some-branch'.
Now, let's say you want to know "the" child of commit `B'. Firstly, which line are you talking about? Well, you must already know which line (or set of lines, as you'll see) that you want to consider. As per my last comment, you could do something like the following (where I've simply replaced `483b3ced' in the original with `B'):
The command says:
* git log: show me log information for...
* B..master: the set of commit objects reachable from `master' but not reachable from `B' (this would be {D0,C0}),
* --reverse: order that set from oldest ancestor (C0) to the newest descendant (D0), but...
* -1: display only the first in that ordering (C0).
Now, in this case, you can actually be a bit more ambiguous with your lines and still get the same answer:
The command says:
* git log: show me log information for...
* B..master: the set of commit objects reachable from `some-branch' but not reachable from `B' (this would be {E,D0,D1,C0}),
* --reverse: order that set from oldest ancestor (C0) to the newest descendant (E), for a total ordering of something like (C0,D0,D1,E), but...
* -1: display only the first in that ordering (C0).
What about the third line of development, though? Assuming you know (unlikely) that `D2' comes after `B' in a line, consider:
The command says:
* git log: show me log information for...
* B..master: the set of commit objects reachable from `D2' but not reachable from `B' (this would be {D2,C1}),
* --reverse: order that set from oldest ancestor (C1) to the newest descendant (D2), but...
* -1
In practice, this is not a problem; if you're concerned, use tags. Also, consider git's `name-rev' and `describe' commands.
The problems you present are really not problems at all.
* Any abbreviation of a hash string will do as long as it's unique among the hash strings known to your repo.
* Use tags instead of hashes.
* Use branches and their names effectively.
* Use git's `name-rev' command.
* Read about the other ways to specify revisions.
* You only need a handful of commands to use git for the vast majority of the time: checkout, log, pull (fetch and merge separately can be nice), rebase, add, commit, reset.
What's your problem?
Git is superior to svn... But it's also a massive pain in the arse, whereas svn is simple and elegant.
You must be joking!
The conceptual underpinnings of git have been poorly expressed by many people, but they are utterly simple. If you understand pointers, linked lists, and hashing, then you understand git. My feeling is that you never bothered to reason about what's going on.
You can cherry-pick which files/folders to checkout in git as well; see the `show' and `checkout' commands. Also, you could just create tags for conveniently referring to the revisions from which you want to `show' or `checkout' a particular file.
What's wrong with using git name-rev?
Now, Git works around this mostly, because you can say 483b3ced^ to go to the previous revision (and actually SVN supports this too because you can say HEAD^). But it's not a full solution. What's the next revision? Git doesn't have a way of getting you that information.
That question doesn't make any sense, because in absolute terms, there are an indeterminate number of immediate children across every repository and across time.
There are a number of things you could do to narrow the search (such as something like git log --reverse -1 483b3ced..master, but ultimately you'd have to account for merge commits there, too; perhaps the --children flag for git rev-list and git log might be useful).
You can also use git's `checkout' to grab files from other revisions, and it updates the index at the same time.
Why do you NEED to copy information other than the SHA1 in order to reflect the commit properly? Also, why can't you just use shared tags to make it easier to discuss particular commits?
Moreover, you don't need to type in the entire SHA1; any abbreviation will do as long as it is unique among the other SHA1s known in the repository.
In git, the first parent (e.g. HEAD^ or HEAD^1) is the commit into which the second parent (e.g. HEAD^2) was merged.
Revision numbers (git doesn't have them, but other DVCSs do) are meant for local usage; universal names like git's SHA-1 names are what are meant to be used uniquely across any repository.
Except with a major difference: Bazaar gives you the ability to have both checkouts share the same database, so it doesn't take up twice the amount of space. Git doesn't let you do this -- you'll have to create two full copies of the repository. (Ironically, this accusation is often made towards Bazaar by people who haven't heard of shared repositories.)
Local clones of a git repository use hard links by default in file systems that support hard links, so they are not two full copies.
Also, there is the git concept of an `alternate object database', which allows two repositories to share the same data.
Basically, Bazaar has no advantage here.