Publish what you support. Period. I don't buy into the notion of Cincom providing SQLite or some other engine to the customer as part of a release. You already provide interface classes for a variety of engines. Let the customer pick the product to use. Just be able to replicate from your server to ours. To wit, you can merely host a release dB (postgres for all I care) the same way you host the public repository, just make it subscription based. The only thing wrong with the Cincom Public Repository model is its generous access. Lock it down and regulate access. Inject only supported releases. And thats it. ----- Original Message ----- From: "Samuel S. Shuster" <[hidden email]> To: "Steven Kelly" <[hidden email]> Cc: "Alan Knight" <[hidden email]>; "Charles Adams" <[hidden email]>; <[hidden email]> Sent: Wednesday, January 23, 2008 3:11 PM Subject: Re: SCM'ed VW > Steven: > >> I think doing the export for weekly builds is overkill, because of the >> version numbering issue. I imagine most VW users aren't in the vw-dev >> program anyway, or at least aren't actively downloading each week. It >> would be enough to test the export in the release candidates in vw-dev, >> with the warning not to replicate them to another db. Actually, there >> seems no point replicating to another db in any case, for users on >> Windows: just keep the VW packages linked only to the local SQLite >> Cincom db, which can even be used by multiple users (all access would be >> read-only). (BTW A nice addition to Store would be that if a package in >> the image doesn't have version info for the currently selected >> repository, but does for one other, it would automatically use that >> repository for compares etc.) > > > Ok, I may be a bit off on this, but as Store Lead, that's my job. > > Let's for a second take as a notion that for releases, we produce a > SQLite DB file, with everything that is JUST in visual.im (leaving aside > issues with that for the moment). Of course, that means the visual.im > will have Store, A StoreFor(SQLite or ODBC) and a (SQLite or ODBC)EXDI in > it OR maybe a single Parcel you can load to bring that in if you want. > The details there aren't really important for this thought experiment. > > Ok, you get your brand new 7.7 (for instance) and you load up/or connect > to the DB file. > > For the next 12-16 months or so, you use this database file, pushing your > changes to it and so on. > > Now 7.8 comes along with it's own DB file (we'll assume for the moment > that it is named something different from the one that came with 7.7). > > From cursory investigation, SQLite allows you to attach to multiple DB > files. > > With that as our posit: > > It seems to me that at the very least, a mini-merge/replicator is needed, > which would take the 7.8 database and merge it into the 7.7 database (or > visa versa). Details of where to merge it to aren't really important at > this stage (probably parent to "your choice" of some kind). > > Is that good enough? Or > > Is a full merge/replicator which allows you to cross database target the > merge/replication to some other database (DB/2, Oracle, whatever)? > > And finally, is JUST visual.im enough? > > Should it be everything that is supported and not contributed? > > And So It Goes > Sames > ______________________________________________________________________ > > Samuel S. Shuster [|] > VisualWorks Engineering, Store Project > Smalltalk Enables Success -- What Are YOU Using? > > > > > |
In reply to this post by Charles Adams
I just tried
StoreForSQLite3 with SQLite 3.5.4 DLL on Windows. 4 minutes to publish
BaseVisualWorks from 7.4.1, about 1.5 minutes to reconcile it. Results in a
single 19MB file which zips to under 5MB. Adding all
the VW parcels that we use takes another 3 minutes and
bumps it up to 40MB, 10MB zipped. Reconciling 7.5 (with the same
parcels) with that repository takes 4 minutes, opening all the publish dialogs for all 60 changed
bundles or packages takes 1 minute (!), using hacky code to answer all of
these dialogs automatically takes 3 minutes. There was an error while installing the blessing
for the first pundle, but proceeding and accepting to re-open the Store connection worked
(so no worse than PostgreSQL over the Atlantic!). The final size of the db
was 50MB. All of this was over Remote Desktop Connection (so
possibly slowed down by cursor flicker, but I tried to minimize that),
running on a P4 3GHz.
Reconciling
7.5 again as a check gave errors allocating Pixmaps when updating the
DoubleBuffering display in Store's Notices: I guess SQLite3 or its use in VW is
leaking handles, or then the large number of notices somehow overwhelmed
finalization (or then there's a bug in them). I can't check now, as Windows ran out
of resources and killed my remote session, and needs me to go back to the
office to reboot it.
zipping the db gives
the warning that the file is opened by another application, apparently
even after disconnecting from Store. Sounds like that should be corrected; shouldn't be
hard.
BTW, does anyone
know who "olaf" is or have his contact info? Overall it looks like his parcels
are pretty close to being just what the doctor ordered for a local Store db, and
it would be good to check the licensing.
Also in the public
repository: StoreForSqlite by gjdvgj, Jürgen Gmeiner.
LGPL, looks a couple
of years older, for SQLite 2.8.6 rather than 3.3, but has a LOT more code.
Whether this is good or bad remains to be seen! The web page has installation
instructions, which were useful when trying out
StoreForSQLite3.
Cheers,
Steve
|
In reply to this post by Charles Adams
Sames: I agree. That's why
I'd already come down on the side of Option 1: just supply a script to reconcile
and publish all packages to a repository. I have such a script, but can't get
the latest version of it because my Remote Desktop Connection died. Below is
something that probably works. We have used this as part of our build for years,
along with code to load parcels for Store support etc. first.
If you start this script with
a connection to a Store repository open, it should reconcile all packages with
the latest VW-like version number found there (5i.2 - 7.5), and publish the
non-matching packages as the current VW version number. Obviously, you should
only test this in a scratch repository, only have Cincom packages loaded,
and any previous versions in that repository should use the same version
numbering scheme.
HTH,
Steve
"reconcile and publish VW packages from Cincom to Store with
current VW version number"
"reconcile all packages with Store"
vwVersion := ((SystemUtils version readStream upToAll: ' of ') tokensBasedOn: Character space) detect: [:vStr | vStr allSatisfy: [:ch | '1234567890.i' includes: ch]]. foundVersion := false. vwVersions := #('7.5' '7.4.1' '7.4' '7.3.1' '7.3' '7.2.1' '7.2' '7.1' '7.0' '5i.4' '5i.3' '5i.2') select: [:vs | foundVersion := foundVersion or: [vs = vwVersion]]. Undeclared purgeUnusedBindings. toPublishDict := Dictionary new. (Store.Registry allPundlesSorted select: [:pm | (Store.Registry enclosingComponentsFor: pm) isEmpty]) do: [:pundleModel | | dbVersion | dbVersion := (pundleModel class databaseClass allVersionsWithName: pundleModel name) detect: [:package | vwVersions includes: package version] ifNone: []. (dbVersion isNil or: [dbVersion getImagePundle reconcileWithDbVersion: dbVersion. pundleModel hasBeenModified]) ifTrue: [toPublishDict at: pundleModel put: pundleModel changeSet]]. "toPublishDict now contains a list of all changed or new pundles which are not enclosed by another pundle" "Open publish dialogs for all changed or new
pundles"
toPublishDict keys do: [:pun | pun storeInDB]. "For each publish dialog, fill in the version info and
publish"
((Store.PublishPundleDialog allInstances, Store.PublishPackageDialog allInstances) select: [:pd | pd builder window isOpen]) do: [:pd | pd blessingLevel value: (Store.Policies blessingPolicy releasedBlessing). pd blessingComment value: 'Auto-reconciled'. pd allBlessings. pd versionString value: vwVersion. pd allVersions. pd accept]. From: Samuel S. Shuster
[mailto:[hidden email]] Sent: Wed 1/23/2008 23:11 To: Steven Kelly Cc: Alan Knight; Charles Adams; [hidden email] Subject: Re: SCM'ed VW Steven: |
In reply to this post by Steven Kelly
> BTW, does anyone know who "olaf" is or have his contact info? That would be my colleague here at Soops. mailto:[hidden email] The code is MIT-licensed, Olaf will shortly republish the packages with a license included. R - |
In order to continue VisualWorks SCM questions and SQLite as solution...
Two questions: 1. Did anybody sucessfully manage to use SqliteForStore on Mac OS X Leopard? 2. How to link sqlite database with Store connection parameters? What should I specify in Environment field. I'am not found any docs for it. Do I need to create sqlite database and attach it? Please could anybody show any examples? |
> From: Vladimir Pogorelenko [mailto:[hidden email]]
> Sent: 24. tammikuuta 2008 16:12 > > 1. Did anybody sucessfully manage to use SqliteForStore on Mac OS X > Leopard? We're having enough trouble with VW on Leopard :-). What do people find is the best VM in terms of 7.4d/7.5/7.6 dev and Aqua/X11? > 2. How to link sqlite database with Store connection > parameters? What > should I specify in Environment field. I'am not found any > docs for it. > Do I need to create sqlite database and attach it? See instructions here: http://www.ch-werner.de/sqliteodbc/ When running the VW method to install the tables, you are asked for the name of the db, and VW then creates that db as a file of that name. Steve |
In reply to this post by Vladimir Pogorelenko
I don't have a Mac (yet), so have no experience with SQLite on that
platform.
In the environment field you put the path to the database file. C:/store/mystore.db, or /home/myHome/store/mystore.db Provide an ID, any ID. That ID will be associated with the published packages/bundles. No password is necessary. If prompted just press the OK button. Vladimir Pogorelenko wrote: In order to continue VisualWorks SCM questions and SQLite as solution... --
ControlWORKS
Adventa Control Technologies, Inc.3001 East Plano Parkway, #100 Plano, TX 75074-7422 |
In reply to this post by Steven Kelly
I'm still using 7.5/X11, but the sad reality is I rarely code on my
mac, I just use my old linux desktop machine. The question I have for Cincom is, will any of Andre's or Antony's mac vm work get integrated into the base? And if not, will VW users willing to use those modified vm's be able to under Cincom's license? (Assuming that those guys are willing to publish their work). Mike On Jan 24, 2008, at 7:51 AM, Steven Kelly wrote: > We're having enough trouble with VW on Leopard :-). What do people > find > is the best VM in terms of 7.4d/7.5/7.6 dev and Aqua/X11? |
On 25/01/2008, at 3:37 AM, Mike Hales wrote: > The question I have for Cincom is, will any of Andre's or Antony's > mac vm work get integrated into the base? My fixes have been incorporated, but it's really Andre's that are significant. > And if not, will VW users willing to use those modified vm's be > able to under Cincom's license? (Assuming that those guys are > willing to publish their work). I presume you mean fixes and not e.g. my WebKit integration involving gc mods. One problem publishing a public VM containing mods that Cincom don't wish to/have time to incorporate is that I can't publish the source, so the VM would be unsupported. I'd be cautious about doing that because not only is there a sense of moral responsibility that goes along with publication, there is also the possibility of significantly bad karma if I was unable to respond or decided to abandon the project. Having said that, it would nice if I could share source with other source licensees, but you can imagine the procedural issues with that e.g. trying to stay in sync with vw-dev membership (which is equivalent to source access). At first blush, the only realistic solution would be for Cincom to host e.g. my Bazaar repository of VM sources, independently (or not) for each contributor, because that only involves ftp/http access which Cincom could control access to. They already do that for files referenced in my blog, but it's not access controlled. This would be as close to community development as you could get for a proprietary source base. And having said that :), I don't know if there's a big enough demand for it. Antony Blakey ------------- CTO, Linkuistics Pty Ltd Ph: 0438 840 787 Nothing is really work unless you would rather be doing something else. -- J. M. Barre |
In reply to this post by Steven Kelly
Dear Steve, Alan et al.,
one thing not yet discussed is the parent-child structure. My 0.02p. 1) As it happens, I don't find publishing the base much of a problem. Scripts like Steve's help and having a Store database that is just for releases, from which you then replicate to others, can also be convenient, but if it is done as a background activity it takes little actual effort. As a marketting issue, a script (or other solution) does avoid complaints from new customers, people arriving from Envy, etc. (When I publish the base, I find most time is spent deciding issues of renaming / resubpundling and whether to revert non-change changes: when a package was last changed in 7.2, say, I dislike populating my image with spurious 7.3, 7.4 and 7.5 versions whose only difference is a parcelVersion property with value '7.3', '7.4' and '7.5'. Like Steve, I feel that if a thing has not changed from one release to the next then its parcel and package number should not change either. I commented on the first issue in response to James: http://www.cincomsmalltalk.com/blog/blogView?showComments=true&title=Migrating+to+a+new+version&entry=3378398007#3378398007.. In both cases, doing anything is unnecessary work from the point of view of someone who is happy to publish the image as supplied and accept the result.) 2) If Cincom provides a release database from which people can replicate then most customers will want one that looks like it was created via e.g. Steve's script: only changed released versions directly parented by prior released versions. (By all means test the procedure by using it on internal versions but only VW-DEV people will want those - and even they will usually want to have only releases in the database they use to help port their apps from one release to another.) If such a database appears in a month or so then Cincom's 7.6 will have parent Cincom's 7.5, which should be equal to each customer's 7.5 but will not be identified with it when they replicate, and likewise for all earlier versions. So if future releases come with a Registry>>publishBase or whatever, customers stay with equal non-identical base versions just as now. If, instead, a Cincom release database is made visible and users are encouraged to replicate releases (an option in the install dialog?), then all customers will have identical (i.e. will be identified by replication) release versions in their databases in future - and a disconnect between those and their own current and older base-publishe versions. One could say, "Live with it; does it matter?". Alternatively, a script to equalise the timestamps of source-equal release pundles is possible. Customers who publish the base reasonably soon after receiving a release should notice little effect on their databases. 3) Providing a replicable base release by publishing it to an SQLLite DB included with the distribution raises the question of what parents should be included. For all those who use other databases it is also more work than a script. To sum up: - A base-publishing script lets customers use the same process as now, but more easily. It looks like an acceptable immediate and cheap solution. - A Cincom database of release versions should exist just to test the script if for no other reason. If it were made visible (i.e. beyond VW-DEV) then the issue of identity in Store (identity in replication and identify in renaming / resubpundling) should be thought about before making replication from it a replacement for customer's publishing the base. HTH Yours faithfully Niall Ross Steven Kelly wrote: > I just tried StoreForSQLite3 with SQLite 3.5.4 DLL on Windows. 4 > minutes to publish BaseVisualWorks from 7.4.1, about 1.5 minutes to > reconcile it. Results in a single 19MB file which zips to under 5MB. > Adding all the VW parcels that we use takes another 3 minutes and > bumps it up to 40MB, 10MB zipped. Reconciling 7.5 (with the same > parcels) with that repository takes 4 minutes, opening all the publish > dialogs for all 60 changed bundles or packages takes 1 minute (!), > using hacky code to answer all of these dialogs automatically takes 3 > minutes. There was an error while installing the blessing for the > first pundle, but proceeding and accepting to re-open the Store > connection worked (so no worse than PostgreSQL over the > Atlantic!). The final size of the db was 50MB. All of this was over > Remote Desktop Connection (so possibly slowed down by cursor flicker, > but I tried to minimize that), running on a P4 3GHz. > > Reconciling 7.5 again as a check gave errors allocating Pixmaps when > updating the DoubleBuffering display in Store's Notices: I guess > SQLite3 or its use in VW is leaking handles, or then the large number > of notices somehow overwhelmed finalization (or then there's a bug in > them). I can't check now, as Windows ran out of resources and killed > my remote session, and needs me to go back to the office to reboot it. > > zipping the db gives the warning that the file is opened by another > application, apparently even after disconnecting from Store. Sounds > like that should be corrected; shouldn't be hard. > > BTW, does anyone know who "olaf" is or have his contact info? Overall > it looks like his parcels are pretty close to being just what the > doctor ordered for a local Store db, and it would be good to check the > licensing. > > Also in the public repository: StoreForSqlite by gjdvgj, Jürgen Gmeiner. > http://www.gjdv.at/software/store_for_sqlite > LGPL, looks a couple of years older, for SQLite 2.8.6 rather than 3.3, > but has a LOT more code. Whether this is good or bad remains to be > seen! The web page has installation instructions, which were useful > when trying out StoreForSQLite3. > > Cheers, > Steve > > -----Original Message----- > *From:* Tim Hutchison [mailto:[hidden email]] > *Sent:* 23. tammikuuta 2008 18:50 > *To:* VWNC > *Subject:* Re: SCM'ed VW > > Currently in the Cincom Public Repository; > SQLite3EXDI-Preload (sqlite3-vw7.x-2,olaf) > SQLite3EXDI (sqlite3-vw7.x-2,olaf) > StoreForSQLite3 (sqlite3-vw7.x-2,olaf) > > Could be that these may need a little more work. > > Alan Knight wrote: > > At 03:22 AM 1/23/2008, Steven Kelly wrote: > >> Hi, >> >> From: Alan Knight [ mailto:[hidden email]] >> Indeed, the reasons are all procedural, logistical, and >> financial :-) >> >> At 03:52 PM 1/22/2008, Charles Adams wrote: >> >>> With all the talk about Store and the best database >>> product to use, its time, once again, to bring up >>> the issue of a published distribution. It is long >>> past time for Cincom to produce versioned code in >>> some sort of Store configuration. There's no >>> technical, legal or even philosophical reason why >>> this can't or shouldn't be done. >>> >>> >>> If I tried to hand my customers files instead of >>> software under configuration management, I'd be out >>> of business. Look... I'm not going to stand here and >>> make the case for SCM. We are all seasoned >>> professionals. Its time for Cincom to acknowledge >>> their responsibilities in this area. ' >> >> >> I'd second the request, something I first asked for in 5i.3 >> :-). Alan says "procedural, logistical and financial", so >> let's look at those. >> >> "Procedural" - you mean someone at Cincom would have to >> publish the base, or more likely replicate the release pundle >> lineup. Currently, every customer wanting to see VW version >> history in Store, or wanting to know what they've >> accidentally changed in base VW packages, needs to do that. >> We've even partly automated the reconcile + publish process, >> and I'm sure you could do better. >> >> "Logistical" - you mean Cincom has to find a way to >> distribute the published repository. An SQLite file sounds >> like an obvious solution. A method in the base to script the >> reconcile + publish would of course require zero effort to >> distribute. >> >> "Financial" - there are no direct costs involved, only time: >> tell us how long it will take you in hours. We already spend >> something like that number of hours, but without the >> certainty that what we arrive at is "official". You even have >> the offer of using Adventa's (or MetaCase's) publish, if that >> helps. >> >> Making the upgrade easier will also lower the perceived >> barrier to upgrading to a new VW version. The time and >> annoyance of having to do the reconcile and publish ourselves >> are one thing. Another is the worry that in a partially >> manual and hackily automated process, we may cause ourselves >> versioning problems. With a correct reconcile + publish, it's >> easy to check for potential problems by comparing with the >> previous version, and of course it's a major help in >> debugging such problems. > > > I think there's more to it than that. There are, for example, > some interesting issues about what exactly we're exporting. > So, presumably we'd want to be creating such an export with > each weekly build, and with release candidates. I'd certainly > hate to have something that we only did once a release and > expected to get precisely right that one time. So then what > are exporting? Do we use our own internal version numbers or > something else? What's the parent version? When we release, I > think what customers would ideally like is to have version > numbers like "7.6" whose parent versions are like "7.5". So > should we do an export that warps the version numbers and the > parents to that? And if we do, what do we do in the weekly > builds? Are their parents the previously weekly builds, or are > they the previous released version? And do release candidates > then each provide a set of versions named 7.6, but which are > different? Or should we just expose our internal names (These > currently tend to look something like 7.6jan08.3 3, reflecting > the build they're targeted at, plus an increment. But things > that haven't changed don't get re-published, so may have > version numbers from different builds, or if they haven't been > changed in this release, previous releases. Our internal names > also aren't always consistent). Should we change our internal > naming convention to be something that's more convenient for > customers, and if so, what would it be? > > There's also the issue of support. If we're putting something > like this into supported status, then that implies also > putting into supported status and maintaining various other > things. Assuming SQLLite worked out, it means a SQLLite EXDI > layer, Store for SQLLite, some form of Store Replication (at > least to get it from that repository into the customers, and > probably to get it into that one in the first place), and the > specific bits of that required for SQLLite, if any. That's not > a trivial amount of stuff. If SQLLite is not supported on one > of our supported platforms (how's their SGI support? MacOS9?) > then that's also an issue. It's possible we could ignore that > on the assumption that everyone's got a machine around > somewhere that can talk to both SQLLite and their store > database, but that's an interesting decision. Or we could say > that we're distributing this, but not in a supported way - > again, an interesting product management type of decision. > > Aside: I'm assuming we'd want to replicate because I think > we'd want to do this for the full set of things we're > distributing (or at least the full set of supported things), > not just for the things that are in the standard base image, > so reconciling and publishing with regular Store, which > requires things to be loaded into the image, seems less good. > There are also alternative ways of distributing it. One would > be as ExportDatabase files. But that needs some work, might > have some scaling issues for large databases, and relies on > John Brant's Replicator for its underlying support. Another > would be, rather than distributing a file, to give customers > access to a Store database online with the information in it > and let them replicate it however they want. That would still > require replication, but might address some of the issues of > version naming. We don't put the versions into that database > until we have a shipped release, and we rename them to > correspond to the release at that point. It could also just be > a Postgresql database, removing the issue of supporting > another one (although SQLLite might be useful in its own right > as a portable starter database for Store). And we could easily > make past versions available - handling the parentage if we > only ship one release's versions in the distribution is an > interesting question. > > So, I think this is a good idea, I think it would be valuable > to customers (and a good number of customers seem to strongly > agree) and I've spent time thinking about how to implement it > previously. But it's also not trivial, and I don't even have a > good idea of how many hours it would take to do it. I don't > think that access to someone else's publish of the base is all > that helpful. We do have our own. The issues are mostly around > exactly what and how to distribute, and how this compares to > all the other things that customers think we ought to be doing. > > One of the responders asked how people could help. The most > obvious way, of course, is by giving us money. It makes it > ever so much easier to find time and money when people give us > the latter. The more the better :-) However, barring that, > useful suggestions about how people would want to receive such > a distribution and what they would want it to look like are > probably the most valuable. And writing code is good - e.g., > if someone wanted to write "rename and reparent while > replicating" functionality. But that's assuming that we knew > exactly what we wanted to do. > > > > -- > Alan Knight [|], Cincom Smalltalk Development > [hidden email] > [hidden email] > http://www.cincom.com/smalltalk > |
Free forum by Nabble | Edit this page |