My daily ramble.
<snip>
I have tried to force myself to use cvs (and wincvs), but have not stuck
with it. The old "zip up each day's work" has worked well enough for me,
unfortunately.
</snip>
Me too... usually. For my personal stuff I've never used any source control,
just zipped it up prior to doing anything major (if I can be bothered).
It'll be interesting to see if I use CVS properly or not.
<snip>
We are currently going through the process of trying to implement a
configuration system using Rational's products (not my choice, but they
want to use it and already bought licenses last year). I appreciate that
it is almost a full-time job to keep up with that kind of stuff.
</snip>
I don't have any experience with the Rational configuration products, just
their load testing tools. I hope your local support is better than ours. We
found numerous problems with the tool (in fact Rational USA ending up
telling to install a previous release) but the only response from the local
Rational consultant was "you're doing it wrong" without being able to
actually tell us what we were doing wrong - to make it worse the way we'd
set it up was the way recommended by a previous Rational consultant (who DID
know what he was talking about). Rational finally admitted that our problems
were in the tool, not in what we were doing but it was a long road with a
lot of wasted time. Good luck.
<snip>
So, any of us developers can mess with any part of the whole source
tree? I don't plan on doing that actually, but I wonder if we want to
enforce any kind of regression testing. Speaking for myself, I plan on
staying in my own little "plugin" world.
</snip>
I have to admit I'm uncomfortable (at least in the early days) with others
modifying the core modules. I think of Squirrel as being my little baby girl
(I think I finally understand how my father felt when my 18 yo sister went
to university 600 miles from home). For now what I'd like is for everybody
to 'stay in their own little "plugin" world' as Brad so eloquently put it.
If its your plugin then you own it, the rest of us can make suggestions, say
what we like and dislike but ultimately the functionality, the way you write
the code, everything is your call. Which leads on to...
<snip>
If there's something specific I think should be changed in the main tree,
I'll probably just ask Colin to actually make the change. This would
provide an additional check on the appropriateness of the change.
</snip>
I'm not saying that I don't want others to make changes to the core, just
that I don't want you to do it directly into CVS. There is a lot of work to
do to the core in terms of writing the plugin API. As you start working with
it you'll realize just how much is missing (much of which I'm sure that I
don't even realize would be required). If you need something in the core for
your plugin first just send a msg to the list and I'll either say "already
doing it - almost finished" or "I've just put it on my todo list" or "I
don't think we should do that, how about...". Once we agree on just what
needs to be done then you might think about making the change yourself and
emailing the changes to the list so that I can integrate them back into the
core. Just let me know any changes you're about to make so that I (or
somebody else) don't start making the same mod. Once I take a look at your
changes I might say "great" and apply the changes or I might say "Great but
how about we enhance it like this..." and so on.
One problem with this emailing back and forth is going to be the time zones.
I'm in Sydney Australia and I know some of you are scattered across the rest
of the world. Turn around on emails is going to take some time so we'll just
have to be patient or everybody could just move to Sydney <grin/>.
Johan has already sent me a lot of changes to the core which are up in CVS,
Guido recently sent me some changes which now that everything has quietened
down I'm going to be looking at. The more people who do this the better
Squirrel gets.
I can see myself for a while at least just integrating other peoples changes
into Squirrel and not doing any real work myself, but if thats whats needed
to get a decent API built into Squirrel then thats what will happen.
I'll sit down over the weekend and work out a list of the next changes I
want to make to the core and put it out on the list so that you all have an
idea of what I'm going to be doing. To be honest I don't know how well I'll
keep to that list as I have a habit of doing whats fun and leaving the other
stuff. We'll just have to see.
One more thing and I'll get off my soapbox. The way I see Squirrel evolving
is more and more functionality being pushed out into plugins. I'd like to
end up with Squirrel being a framework that really doesn't do all that much
itself, all the functionality is in the plugins. How practical that will be
(certainly how practical that will be by evolving the current code base) I
don't know. What I'd like to see eventually is that all Squirrel development
is done in plugins, I don't think that will ever happen but as close to that
as possible is what I would like to aim for.
<snip>
but I wonder if we want to enforce any kind of regression testing
</snip>
If I'd done Squirrel properly there would already be JUnit test cases set up
etc. When I get some time I should start setting this up. Although I
probably won't...
<snip>
Are there others on the list here who have experience with configuration
tools and the configuration management process?
</snip>
Just with source management tools E.G. PCVS, RCS and Visual Source Safe. I
find source management very valuable as long as you have somebody
controlling it. Thou shalt not check in code that doesn't compile, thou
shalt not check in code that hasn't been tested, thou shalt set up libraries
of code that are versioned for other projects etc. If you're introducing it
to a development team that hasn't used it before you'll possibly have some
resistance - I can't remember the excuses now but there were some
interesting ones. Reasoned argument usually works, if not then a baseball
bat.
On a side note a friend of mine recently took a job with a nameless
international consultancy here in the Sydney office. His first job was to
set up the build and deployment process for a project. He discovered that
the current build process was:
1. Walk around to every developers desk and ask them to put the code that
they're working on onto a diskette.
2. Copy all the code from the diskettes into a cental location.
3. Compile the code.
4. If it compiled then send it to the client - no testing, the developers
have already done that so theres no need.
5. If it didn't compile go back to step 1.
I guess change management is what you make of it.
A quick word on the directory structure in CVS.
/squirrel-sql/app - The Squirrel client application.
/squirrel-sql/fw - A base library that Squirrel is built on top of. These
are supposed to be general purpose classes that don't actually know anything
about the Squirrel client. This code is mainly stuff that I've refactored
out of Squirrel.
/squirrel-sql/build - Build scripts etc. for Squirrel.
/squirrel-sql/doc - Some (very little) documentation for Squirrel.
/squirrel-sql/plugins - All your plugins. Each plugin will have a directory
under this one named after its internal name. E.G. the Look and Feel plugin
is in squirrel-sql/plugins/laf. If you start a new plugin just create a
directory in here. Just let me know the internal name that you want to use
before you go creating the directory as there are some rules on what it can
be. See the plugin programmers guide in the doc directory for more info.
squirrel-sql/web-site - the Squirrel web site.
One more thing and then I'll stop. Recently somebody (I think it was Brad
but I can't find the email) asked why refreshing the object tree collapses
it instead of leaving it in its expanded state. The answer is "Dammed if I
know". Theres code in there to save and restore the expansion state but it
isn't working. It appears that the view is out of synch with the model as I
can see the code doing the expansion actually executing but the tree isn't
refreshed. I'm missing something obvious but I can't see what it is. If
somebody wants to take a look the classes involved are
net.sourceforge.squirrel_sql.client.session.ObjectsTree and the class that
actually does the save/restore is an internal class in ObjectsTree called
SavedExpansionState. I'd really appreciate somebody finding this bug
<desperate begging/>.
Col
|