Mark,
About the tools issue: only building tools, in the hope that someone will use them, can not work. I want to see the comments; they should be in my face - everywhere and all the time. (How about a tooltip with the comment when hovering over classes or pundles or a new text pane in the browser above the code tools?) I would see all the bad or missing comments (mine and others). Now I need tools... Cheers, Christian P.S. I tried SmalltalkDoc two times. I was surprised that I did not see the SmalltalkDoc documentation for it. Actually no examples at all. What did I miss? > Von: Mark D. Roberts [mailto:[hidden email]] > > At 09:46 AM 7/20/2006, James Robertson wrote: > >Hmm. I spent my time in the mines of C (and other > languages). Believe > >me, comments were no more common there than they are in > Smalltalk. Don't > >mistake the "corporate standard" comment blocks at the top of each > >function as meaningful comments - they are typically > copy/pasted, possibly > >edited, and then never, ever kept up to date. > > http://docs.python.org/lib/lib.html > > I can't speak as a Python expert, but looking at this it > seems that every > module has a comment. > > > >At 08:41 PM 7/19/2006, you wrote: > >>Jaroslaw, > >> > >>At 06:59 AM 7/20/2006, Jaroslaw Podgajny wrote: > >>>The question is what can be done to make it more natural > to put comments > >>>in all beneficial places. If there was a way to make > people see the > >>>benefits of writing the comments straightaway or somehow > make it part of > >>>the development cycle things could look different. > >>>I have a similar feel that adding more ways of commenting > code will not > >>>work. Forcing constrains around it won't work either. It has to be > >>>integrated into environment and "make sense to write them" > for the idea > >>>to pick up. > >> > >>After looking at this problem for several years, my > conclusion is that > >>there is an underlying cultural dimension that is separate > from the tools > >>issue, and this now seems to me more decisive. For whatever reason, > >>Smalltalkers just tend not to write comments. In other programming > >>communities, comments are considered part of the > development process. In > >>ours, they are not. Smalltalkers have various excuses for > why comments > >>are not necessary, which eventually conflict with the needs > of somebody > >>trying to learn Smalltalk or re-use some existing code. In > the larger > >>scheme of things, the lack of comments serves to isolate us > from the rest > >>of the world. > >> > >>This thread started because somebody was looking in the public > >>repository, found no comments for the code components > published there, > >>and then (very charitably) wondered if the comments were to > be found > >>somewhere else. The answer was "no" and this is where the > rubber hits the > >>road. Then, we started talking about ways to improve the situation. > >> > >>While I agree that we can and should improve the tools, the > pay-off is > >>likely to be small. As Jim pointed out, if people won't use > the existing > >>mechanisms they likely won't suddenly start making > extensive use of any > >>new tool options. We can get some improvement, we need to > improve the > >>tools, we need to be realistic about the outcome. > >> > >>So, we might also consider "social" solutions to this > problem. Right now, > >>nobody is in charge of the public store and the burden > falls upon each > >>user to decide what each component does, what works, what > doesn't, what's > >>released, what's obsolete, etc. There are no conventions, > no rules. If > >>somebody were in charge of the repository and they could act as an > >>editor, marking some things obsolete, nagging developers > about comments, > >>etc., it would help to improve the new-user experience. The > tools also > >>need to be improved, Store is deficient in this regard, but > if we really > >>care about making the public repository accessible to new > developers, > >>then I think we need to do both. > >> > >>Imagine that we were all journalists working for a > newspaper called "The > >>Public Store Times". We write articles, and through the > miracle of modern > >>technology, we publish them ourselves. Yet, we have no > editor in charge > >>of our newspaper, and we have no editorial standards. Each > journalist has > >>his/her own idea about what at article looks like. Sometimes, > >>occasionally, new people read our newspaper and say "Your > newspaper is > >>kind of tedious to read -- how about including a little > summary before > >>each article?". At this point, we might discuss editorial > standards -- > >>"What should an article look like? How should it be > organized? Should it > >>have a one-line summary? Should we refuse to release it > until it does? > >>Etc." We might discuss an editorial function, i.e., "Should > we try to get > >>an editor in charge of this?". Finally, we might discuss > tools, i.e., > >>"How can we improve our tools so that it is easier to write > good articles?". > >> > >>This last discussion about tools is what we always have, > but clearly this > >>is not enough. We could improve our tools 200% but some > journalists still > >>won't use them. In lieu of new policies and somebody to > enforce them, or > >>in lieu of a collective decision to suddenly change the way > we write > >>articles, the quality of our newspaper probably won't improve much. > >> > >>This is a half-hearted analogy, but the point is clear > enough. Since we > >>do not collectively think it is important to communicate > with new users, > >>e.g. by making our repository legible to them, we haven't really > >>discussed editorial standards or an editorial function > (somebody "in charge"). > >> > >>If we decide that we care about making the public store > more legible to > >>new developers, we might do the following: > >> > >> -- Institute a policy that any code marked as > "released" must > >> have adequate package/bundle comments > >> -- Decide on a simple definition of an "adequate" comment > >> -- Put an administrator in charge of the > repository who can > >> change blessings on components, e.g., demoting anything > that is blessed > >> as "released" which lacks comments > >> -- Fix the Published Items tool to include a > "blessing filter" > >> so that by default in VisualWorks NC, it only shows > released components. > >> The filter can be twiddled easily, of course. > >> -- Improve the IDE tools for adding comments, > perhaps along the > >> lines of SmalltalkDoc > >> -- Add a web interface for displaying the contents of the > >> repository, again, along the lines of SmalltalkDoc > >> > >>If we did all of these things, it would dramatically > improve the noob > >>user-experience with Store. It would make it easier for new > developers to > >>join us, i.e., to grow our community. > >> > >>>The problem is similar to the issue of maintainability of > a help system > >>>- it is not a challenge to create one. How to make it not > become patchy > >>>or deteriorates over time is the big deal. > >>> > >>>We have a demand for a good help system but not much > thoughts went into > >>>it yet Some wild ideas were going in the direction of integrated > >>>wiki/blog things... Any ideas welcome. > >> > >>This point is tangential to the thread, but by chance I > have done some > >>work on the VisualWorks Help System and my experience has > been similar to > >>yours. The problems are in authoring content and > maintaining the system > >>and the content. The VW Help system was a prototype, there > have been no > >>resources within Cincom to improve it since, and so it has > deteriorated > >>into its current state of decrepitude. Since VisualWorks > lacked basic UI > >>features like a hypertext widget, we had to build the VW > Help browser > >>using a third-party package from Arbor. This package came with no > >>documentation, inadequate comments (sound familiar?) and it is now > >>unmaintainable junk. We want to throw it out but, five years later, > >>VisualWorks still doesn't have any support for hypertext. > >> > >> From here, there are roughly two directions ahead. One is > that we build > >> hypertext support into VisualWorks and write a new Help > Browser. The > >> other is that we punt completely on the idea of integrated > Help, admit > >> to ourselves that VisualWorks isn't up to the job of > building a Help > >> Browser, and just use an external web browser. The problem > with the > >> latter direction is that we lose the ability to click on > something in > >> the Help browser and, for example, open a Workspace or > load a parcel > >> into VisualWorks. We lose the ability to search the > content. Also, and > >> more significantly, all modern IDEs are now moving towards > integrated > >> Help/Documentation. Eclipse, for example, has this. The > facility for > >> help/documentation/tutorials in Eclipse is now years ahead of > >> VisualWorks and the gap is only going to grow wider. This > translates > >> into a direct impact on the noob experience, and IMHO > Eclipse now offers > >> a superior noob experience. We can argue all we want about the > >> weaknesses of the underlying language, we can argue all we > want about > >> the design of the Eclipse IDE, we can be the Sony Beta to > Eclipse's VHS, > >> but Eclipse offers a smoother noob experience. > >> > >>The other direction would be to build a new Help Browser > and push for > >>greater integration of tools/help/doc inside VisualWorks. > This means we > >>need to solve the long-standing problem of hypertext. > Fortunately, the > >>situation has changed since we built the prototype Help > Browser. There is > >>now a real XML display subsystem called WithStyle. It also > includes an > >>XML editor. It would not be difficult to build a new Help > System using > >>WithStyle. In fact, I made a small prototype to see how it > would work. It > >>is not difficult to read the existing Help content and > translate it into > >>structured XML, I have tried that too. The difficulty is getting > >>WithStyle more properly integrated into VisualWorks, and > finding the > >>cycles to do all the editorial work to update the content > and get it into > >>order. I can't do that now. > >> > >>If you are interested in talking about this second > direction, feel free > >>to e-mail me directly. > >> > >>Cheers, > >> > >>M. Roberts > > > ><Talk Small and Carry a Big Class Library> > >James Robertson, Product Manager, Cincom Smalltalk > >http://www.cincomsmalltalk.com/blog/blogView > > > > > |
In reply to this post by Andrea Gammachi
Dave Stevenson wrote:
> I resent your heavy-handed use of "common sense". Are you trying to > destroy everything we've been working toward in this thread? :) Oh, don't mind me. You've seen enough idiotic hacks posted here by me because I couldn't figure out the simple, proper solution. I just try and offset them occasionally with calls for design decorum like this :-). > Seriously, though, I think that while prereq usage *should* be the > logical approach, it may well turn out to be more difficult than the > alternatives in practice. Let's look at the actual version strings > involved. If I'm using a team image that is already reconciled to > Cincom's internal engineering repository, I can see that, for example, > VW 7.4.1 shipped with this version of Base VisualWorks > '7.4.1 may06.5 - 1.1' > but if I look at visual[nc].im, I see no version at all for 'Base > VisualWorks', nor is that bundle replicated to the public repository for > reference. Actually, the information is there for Base VisualWorks, and several other pundles, but for some reason VW doesn't show it until Store is loaded. And for some reason many pundles still just show * for version info after Store is loaded. > So the problem of how to determine what version of the base > is loaded remains in the vanilla image, when loading the component from > a parcel. To overcome this limitation with our current system, one has > to load store and publish the base to one's local repository. But if > one did that, how would one know that the original version was '7.4.1 > may06.5 - 1.1', rather than something completely irrational, like > '7.4.1'? Also, how could people specify prereq criteria if they have no > control over the version string others will use when publishing the base > to their various local repositories? These are issues, yes. I think there are three possible solutions: 1) If Cincom and VW users use consistent version numbers (e.g. via Store Replication), things will work 2) Versions should contain a GUID, and Store will use this to determine equivalence. I guess we need a GUID for pundles too. 3) If we must have a system of tags, it has to be like a blessing in that a given version can be updated later. The bad news is that it's not enough to have one Cincom-sponsored tag - you can bet that Soops, Heeg etc. will all have their own needs. I foresee tag wars! Actually, whilst any one of these would work, I'd be inclined to go for all three :-). 3) would have the additional benefit that if a VW component is unchanged from 7.4 to 7.4.1, there would be no need to republish it with just a changed version and copyright notice. Currently some components do that, and others leave themselves unchanged. With 3) they could simply add a new tag, which would not constitute a new version, but would when reconciled and published simply add its information to the existing version's tag set. > Then there is the unstructured nature of our version strings, which make > specifying a range of versions far more difficult than it needs to be. > I cannot say: > aPundle version > between: '7.1 mar03.5 - 1.0' > and: '7.4.1 may06.5 - 1.1' > since store's version strings cannot be directly tested for ordinality > with regard to the versions they name. But that was my point - there IS no ordinality on versions, because they can be a tree (or even an acyclic digraph, if merges are recognized, which may or may not be a good idea). But you CAN specify exactly the condition above, and have it work like it should: it means "the version is or is a descendant of '7.1 mar03.5 - 1.0', and the version is NOT a descendant of '7.4.1 may06.5 - 1.1'. (Rant: The current Store philosophy would interpret it as something like the timestamp being between that of the first and second versions mentioned, ignoring the fact that someone might have published a bugfix to 5i.4 in that timeframe.) Cheers, Steve > Steven Kelly wrote: > > At 03:44 AM 7/19/2006, Terry Raymond wrote: > >> I pretty much agree with you. I think the items need > >> a tag indicating which versions they are known to work > >> with and they need a meaningful title or description. > > > > Why not use prerequisites? Surely it's better to improve those, rather > > than add another mechanism. Think about the following: > > > > * How do we know what VW version we are in? The VM's id is not the right > > answer, since a 7.0 image could be used with the 7.4.1 VM. > > SystemUtils.SystemVersionName has only been around since 7.2, so > > wouldn't work for older versions, and is just a string set manually. > > > > * Dependencies are rarely on a VW version per se, but on some feature > > provided by some VW component. E.g. we quite often have a newer version > > of the XML and WebServices stuff loaded, because we require corrections > > or new features > > > > * If the current prerequisite mechanism doesn't work nicely for > > specifying the most basic of requirements, a VW version, it probably has > > problems specifying prerequisites in other cases too. Improving it to > > specify VW versions will improve it for other prerequisite cases. > > > > * Packages are the primary code components, and already have a > > versioning mechanism. The base visual.im contains versioning info for at > > least all bundles. Cincom recommends publishing the base, and that would > > be helped greatly if we all had the same version names - effectively > > replicating a given version from the Cincom bear73 repository to our > > local repositories. > > > > * Good examples of prerequisite mechanisms that exist in other systems, > > e.g. Linux package loaders, use the same mechanism for specifying a > > dependency on a "system version" as for a dependency on the smallest > > component's version. > > > > Note that I'm not saying this is an easy problem, quite the opposite. > > But it does seem to be something that needs solving, and adding another > > hack solution isn't going to help. > > > > Very roughly, I think as a minimum a prerequisite should be able to > > specify a specific minimum and maximum package version. Normally, you'd > > just specify the minimum version, and then that version or any > > *descendant* would be legal. Note the difference from Store's broken > > "load latest version" - that works fine until there is a branch, e.g. > > publishing a fix to an old version. > > > > Steve > > > > |
In reply to this post by Christian Haider
At 03:34 PM 7/20/2006, Christian Haider wrote:
>Mark, > >About the tools issue: >only building tools, in the hope that someone will use them, can not work. > >I want to see the comments; they should be in my face - everywhere and all >the time. >(How about a tooltip with the comment when hovering over classes or pundles >or a new text pane in the browser above the code tools?) I have asked several times for proper tooltips in list views but they are very low priority for Cincom. So, I gave up asking and have no idea about their status now. >I would see all the bad or missing comments (mine and others). In the most recent builds, a warning icon is displayed next to items that have no comments. Check it out. >Now I need tools... > >Cheers, Christian > >P.S. I tried SmalltalkDoc two times. I was surprised that I did not see the >SmalltalkDoc documentation for it. Actually no examples at all. What did I >miss? You didn't miss anything. Store cannot persist the content so there is no documentation inside SmalltalkDoc itself. That is one reason why SmalltalkDoc is still in preview. The documentation is an external HTML Readme. |
Free forum by Nabble | Edit this page |