|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: A Peeve of Great Pettishness
by radiantmatrix (Parson) on Oct 28, 2005 at 14:36 UTC | |
I do think sub-1.0 version numbers get abused a bit, because many people feel that putting the big 1.0 on something should mean the item is stable and as bug-free as possible, while having every feature one could ever dream of. I think that's partially a pipe dream, and partially a lack of good planning. When coming up with a feature list, many people draw the 1.0 line when they can't think of any more good features. It should be drawn at a point when the item has all necessary features to accomplish its goal. The other features can be divided into useful chunks with bigger version numbers. A guassian blur filter in a graphics app won't be useful until the filter engine is done, and the engine is useless without a couple of simple filters -- those are things that might be released together under a version. However, I don't think that sub-1.0 numbers are automatically bad, either. A sub-1.0 version should be, IMO, products that the author feels aren't really ready to be useful, yet. In other words, there are necessary features missing, or said features have not yet been adequately tested. I would like to see authors with versions out like 0.98 promote to 1.0 when their 0.98 "testing" version hasn't gotten a bug report in months (or years).
<-radiant.matrix->
A collection of thoughts and links from the minds of geeks The Code that can be seen is not the true Code "In any sufficiently large group of people, most are idiots" - Kaa's Law | [reply] |
by rje (Deacon) on Oct 28, 2005 at 17:47 UTC | |
<quote> (the 1.0 line) should be drawn at a point when the item has all necessary features to accomplish its goal. </quote> I suppose I'll have to revisit some of my CPAN modules. You've given me something to dwell on. | [reply] |
by stvn (Monsignor) on Oct 29, 2005 at 14:15 UTC | |
Well I think your point makes some sense, but not in all contexts. For instance, when I am building something for $work which we are selling in some way, then I will slap a 1.0 onto it for the first release. This is because it is the first release to a $paying, non-technical audience. If we do a major upgrade at some point, we will bump the version appropriately, depending upon the "size" of the upgrade. When I am building a module for internal use within these $work products, that may or may not get released to CPAN, I take a different approach. My "clients" for this kind of work are fellow developers, they are not a dazzled by the bright shiney number 1.0. For these modules, I start at 0.01 and I increment each version by 0.01. Why? Because I know that those numbers don't really mean that much to a developer. A developer should only care that the module works, that is has a solid set of tests, and if possible has been field tested by the author (aka - deployed in prod). I would sooner use a 0.01_a module which had +95% test coverage and had been deployed in a production environment for 6 months or more, than I would use a 3.0 module which does not meet those same criteria.
-stvn
| [reply] |
|
Re: A Peeve of Great Pettishness
by tirwhan (Abbot) on Oct 28, 2005 at 14:21 UTC | |
Absolutely not. A version number of >=1.0 in a library/perl module suggests to me that the modules is sufficently tested/debugged and the interface is stable and there will be no changes made that could affect programs which use it. Clearly this is not the case for many of the <=1.0 version modules on CPAN, therefore they are versioned correctly as they are. One of the tenets of free software that works particularly well IMO is Release early, release often. You want to put out software which is incomplete or incompletely debugged and designed, to make use of the community feedback on where you should concentrate your efforts in improving it. Releasing software in the alpha and beta stage is essential to this process, however you also want to warn your users about the stage the software is in so they don't end up putting your beta-level software into production use and getting fired when the product blows up in their face. Keeping a version number below 1.0 is an easy warning to say "expect changes or even bugs". Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan | [reply] |
by perrin (Chancellor) on Oct 28, 2005 at 15:06 UTC | |
A version number of >=1.0 in a library/perl module suggests to me that the modules is sufficently tested/debugged and the interface is stable and there will be no changes made that could affect programs which use it. The only > 1.0 projects where you can count on no future changes that might affect your program are the ones that get abandoned. Clearly this is not the case for many of the <=1.0 version modules on CPAN, therefore they are versioned correctly as they are. Not clear at all. Some very commonly used modules have had < 1.0 version numbers for years. Version numbers are marketing, plain and simple. All that you can tell from them is that one version came out later than another (and you can't even tell that with products that have multiple live branches, like mod_perl.) | [reply] |
by tirwhan (Abbot) on Oct 28, 2005 at 15:58 UTC | |
There is no worldwide standard for them. Agreed. But lot of software projects (inside and outside the perl community) follow a scheme similar to what I have described, therefore I find it a useful method of looking at software when evaluating it at a single glance. And I think it is a scheme which it would be useful to follow in new projects, rather than releasing all software at 1.0 as the OP demands. Some very commonly used modules have had < 1.0 version numbers for years. Again, I agree. Reread what I said, I did not say all modules <1.0 are unstable. The only > 1.0 projects where you can count on no future changes that might affect your program are the ones that get abandoned. OK, I could have phrased that better, what I meant was that I generally expect version >1.0 libraries to not break the interface on minor-version upgrades, so that I can safely upgrade the library without breaking my program. I have no such expectation of software with a version number <1.0. Version numbers are marketing, plain and simple. Version numbers can be (and often are) more than marketing. Take the major/minor numbering scheme used by Perl and the Linux kernel as an example which works well (and has been adopted by many other projects). The version number can communicate information about the status of a piece of software, which is useful. And I think the distinction I made in my post about free and commercial software versioning is important. If a company offers me a product and demands money for it, then yes, I'd expect it to be at least at v 1.0. I'd also expect it to be relatively bug-free and feature-complete, so that it's useful to me. If a piece of FLOSS is initially released at version 1.0, I'd suspect the author has missed out on one of the most important advantages of free software, that of community feedback at an early stage. Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan | [reply] |
|
Re: A Peeve of Great Pettishness
by jZed (Prior) on Oct 28, 2005 at 14:31 UTC | |
| [reply] |
|
Re: A Peeve of Great Pettishness
by perrin (Chancellor) on Oct 28, 2005 at 15:09 UTC | |
| [reply] |
by samizdat (Vicar) on Oct 28, 2005 at 16:03 UTC | |
There probably IS a happy medium, and I'm sure most authors worth paying attention to do strive to make their stuff at least perform its feature set correctly. I have found this to be the case with modules and programs I've used, for the most part, and I certainly think the open source release-and-act-on-feedback-model is a huge improvement over "We'll fix it in 5.0". | [reply] |
|
Re: A Peeve of Great Pettishness
by swampyankee (Parson) on Oct 28, 2005 at 14:21 UTC | |
I'm glad that made you feel better. I'm also used to seeing '1.0' as the first real|production|valid release; my prejudice is that release 0.3.0 is, at best, in beta. I also don't like release "numbers" that seem to be include random alphanumeric characters. I've other rants, too, such as modules released with no documentation. Sorry, but I can't be bothered trying to figure out what Purple::Blovinator does by reading the code. Since I wrote this I found out that there is actually a "purple" module, but not a Purple module. &abashed_grin; emc | [reply] |
by rje (Deacon) on Oct 28, 2005 at 17:43 UTC | |
The name is sooo cool that it shouldn't be commented! | [reply] |
by swampyankee (Parson) on Oct 28, 2005 at 19:28 UTC | |
I agree! We need this module desperately. Blovination is an extremely useful and powerful tool emc | [reply] |
by BigLug (Chaplain) on Nov 01, 2005 at 10:27 UTC | |
If you're writing a module tell me exactly what it does in the simplest terms possible, sure it obvious to you what it does, but while it might solve my problem I won't know what it does unless you tell me! There are too many modules whose documentation is typically:
NamePurple::BlovinatorDescriptionImplements lib_blovinator on the purple operating system. See lib_blovinator's documentation for interface.Firstly, I have no idea what lib_blovinator does. It may solve my problem. Secondly, while you may be able to map a C API to perl simply by reading the C docs, not everyone can - including myself. OK, I feel better now. | [reply] [d/l] [select] |
by Perl Mouse (Chaplain) on Nov 01, 2005 at 12:31 UTC | |
Sure, it would be nice if there's more documentation. But people getting software for free who still whine it's too difficult for me, you must put more work into it, because I won't really irk me.
Perl --((8:>*
| [reply] |
|
Re: A Peeve of Great Pettishness
by Perl Mouse (Chaplain) on Oct 28, 2005 at 15:21 UTC | |
Different projects use different version number strategies. Some version numbers just approach π (TeX) or ε (Metafont(?)). Others use numbers with the date in them (DNS records), or use the age of the module as the date. Yet other projects just copy whatever next CVS number their files get. And there are projects that use major.minor.patch numbers, carefully adjusting the right numbers at the right time. And not every one is consistent. Perl went from "5.005_XX" to "5.6.X". Solaris went "... 2.4, 2.5, 2.5.1, 2.6, 7, 8, 9, ...". Windows went "3.1, 95, 98, 2000, XP" - although I guess they were more names than version numbers. I prefer to use "major.minor" version numbers, starting at version "1.1", increasing the major number if and only if the interface breaks compatability.
Perl --((8:>*
| [reply] |
|
Re: A Peeve of Great Pettishness
by ww (Archbishop) on Oct 28, 2005 at 14:27 UTC | |
...but (oops: opening self to charges of pouring gasoline on fire)... some authors, properly IMO, publish work-in-progress to obtain feedback. I can't fault using sub 1.0 version numbers on those known (or believed) to be IMperfect or INcomplete. But (reverting to agreeability_mode) yeah; numbering a release with a sub 1.0 version number if it passes testing and is ready to do (something | anything ) useful seems to me to be inappropriate, and likely founded on "going along with current style" or "low self-esteem." so, ++; RANT ON!!, dwildesnl. | [reply] |
by DrHyde (Prior) on Oct 31, 2005 at 10:50 UTC | |
On the other hand, the interface is stable, it does something useful, and it passes its tests. | [reply] |
|
Re: A Peeve of Great Pettishness
by itub (Priest) on Oct 28, 2005 at 18:51 UTC | |
| [reply] |
|
Re: A Peeve of Great Pettishness
by sauoq (Abbot) on Oct 28, 2005 at 16:50 UTC | |
The version number isn't informative; wishing it were is... well... just wishing. It's there for the author's (or authors') convenience. You might as well ignore it. What should matter to you is the documentation (including change history, and todo notes if they are available) and the code, should you feel the need to inspect it prior to use. -sauoq "My two cents aren't worth a dime."; | [reply] |
|
Re: A Peeve of Great Pettishness
by sfink (Deacon) on Oct 28, 2005 at 20:08 UTC | |
The most common "standard" that people claim to support, but rarely really do, is: Well, get over it. If it does something useful with a vaguely reasonable API, smack a 1.0 on it. Most CPAN authors spend quite a bit of time polishing things up before their first CPAN release, so calling it 0.1 is disingenuous. And even if you're hesitant about the API, well... you released it, right? So you're saying you'd like other people to try using it? Through the current API, however incomplete and ill-thought-out? Well, then, you must think that something can be accomplished through it, so why not bless it with a big "1.0" even though you're certain that you'll quickly have an interface change afterwards? If you realize that some part of the API is a huge mistake and should be done totally differently -- what's so bad about calling the next one 2.0? I've found that, as painful as the quick 1.0 -> 2.0 -> 3.0 -> 4.0 succession feels, it almost always slows down dramatically sooner than you expected from the initial phases. And if anyone's using it, you'll have to make enough fixes to produce 2.1, 2.2, 2.3, ..., and by the time you do the 3.0, it'll feel about right. The "release early, release often" argument is fine, and there really are cases where pre-1.0 versions are more appropriate. But how many projects/modules really have a community of developers or users before they're actually usable for anything? Not many. Users and developers only show up after you've demonstrated the promise with a sample app. Besides, users are more attracted to versions 1.0 and later, and you want users, right? Right? I work for Reactrix Systems, and am willing to admit it. | [reply] |
|
Re: A Peeve of Great Pettishness
by Cap'n Steve (Friar) on Oct 30, 2005 at 05:50 UTC | |
I think Beta tests should be conducted in a controlled environment, and then once you get to version 1.0, go ahead and release it to CPAN or Sourceforge or wherever. | [reply] |
|
Re: A Peeve of Great Pettishness
by jimbus (Friar) on Oct 31, 2005 at 17:41 UTC | |
While I undestand that version numbers are arbitrary, it makes me nervous to see an establish product start installing .2s, .3s, .6s, etc as dependencies. I've yet to have any issues with any packages, but as a n00b, I'm worried about becoming dependant on something then finding out I'm in over my head. As my manager is fond of saying, "Its not whats wight or wrong, its the preception"... though I rebel against this as much as possible :)
Never moon a werewolf!
| [reply] |
|
Re: A Peeve of Great Pettishness
by aplonis (Pilgrim) on Jan 14, 2007 at 03:34 UTC | |
As computer folks we are trained to start counting at zero, yes? So ideally your first release should be... $VERSION = 0.00; ...with the only need of a decimal point being to indicate when some future upgrade should be considered to break the historical user interface. Thus, from releases 0.01 through 0.99 you have only fixed bugs and added features, but not broken any prior features from the user's perspective. So...a version number of 1.00 signifies you have already gone and broken faith with prior users once before! How are we to trust you now? Then comes yet another day when once again you look at your code and say, "Dear gods! What was I thinking?" and re-do significant parts, requiring the users to employ previously trusted features differently than they have become accustomed. You then release that 3rd incarnation as version 2.00, indicating the uncivil boundary crossing. Thereafter, versions 2.00 through 2.99, should only fix bugs and add new features...until your next divine epiphany changes your world view and inspires you change course significantly once again, to the annoyance of prior users with a version 3.00...and so forth. I actually read that concept somewhere else and merely regurgitate it here for you all to point at and gag over. My little contribution, having written only one taudry module in my own right Chart::EPS_Graph.pm. Following the scheme detailed above I released it as version 0.01. Retch all you like, it works just fine. I use it regularly. My documentation, however, is fairly verbose. The tests serve as complete usage examples. | [reply] |