Registered: Sep, 2005
Re: Version Control is Undo . . . or more
Posted: Dec 10, 2008 10:59 AM
> It appears you are dissatisfied not so much with the idea,
> but with the quality of an imagined implementation of the
> idea. So lets assume for a moment we have a sound working
> system, however far fetched it may seem to you, and maybe
> you'll find the concept a little less toady.
These are not imagined issues. I was asked what issues I have had. All of these are real things that I have struggled with in my career. I'm fed up with vendor lines about how their 'code-free' tools will improve productivity and reliability when the exact opposite is always the case.
What I am dissatisfied with is the tools that I have worked with that did not have human readable text as the canonical persistence format.
> * no useful diff / merge (XML-based source is big
> The actual storage/format of the source doesn't matter.
> The idea is that the source control manager works directly
> on the parse element model; the raw storage has no impact,
> be it xml or binary. So quite the opposite is true -- the
> diff/merge tool becomes much more capable. It can do more
> than diff in terms of lines of text. It exposes changes in
> terms of language elements e.g., data member _foo changed
> to _bar; the expression in method baz() has conflicts. And
> you can edit/view changes and conflicts in your favorite
> code format.
I can see that. The problem I see is that there are lots of tools for doing diffs against text but as far as I know, any diff that works the way you describe here would have to have intimate knowledge of the structure of the model. If that's not the case, please enlighten me.
I would love to have that kind of diff. However, I don't want to be limited in what I can use. I want it all. I want that and the ability to do text based diffs if that's my desire. I see no reason why both cannot be supported.
> * source that is difficult or impossible to read. If
> the source becomes corrupted, it costs a lot of time/money
> to repair the source if it's not human readable.
> I understand, but lets assume a sound system.
That's the problem. I can't assume this because I know it will not always be the case. All software has bugs. Any argument based on an assumption that a given piece of software will never have bugs is going to ring hollow.
> * ultimate vendor lock-in (cannot see our own process
> logic or extract it from text)
> I hear you, but lets assume a standard parse element
> model. This is the missing link I mentioned earlier.
> * silent corruption of code by tool
> Again, lets assume no corruption.
> * lack of persisted format between tool versions (see
> Again, lets assume a standard parse element model.
> * infeasible to write custom analysis, code generation,
> and refactoring tools
> I believe the opposite is true. With a standard parse
> element model as the SOR, you can write tools in a much
> more straight forward manner. In fact thats a driving
> force behind the concept.
> * inability to conform to change management (manual
> production deployments)
> Are you referring to patches? Nothing much changes here.
> Object code deployment is not affected. Maybe you have
> something else in mind?
In IT enterprise IT, for example, change management processes often require software must be able to be delivered directly from QA to Production without human intervention. A lot of tools lack a modular way to persist code and/or binaries in a way that they can be delivered in such a way. This reliably results in process violations and ultimately production problems.
> * integrated source control broken / unusable
> Again, for now, lets assume a sound system.
> * gui-based development much slower than text based
> (modal dialog hell)
> Wha?? Writing code is still very much a textual interface.
> Nothing much changes there except, perhaps, the larger set
> of tools you have at your disposal.
So this is really the heart of my disagreement. If the tool is going to provide a textual format for the code and presumably be able to parse changes to that text back into the model, the work required to persist the model to and from text will have already been invested. Why then are you so adamant that this text can't be what is persisted?
I think all of the things that you are suggesting here make sense. What I don't understand is why you believe that a textual format is the limiting factor, especially if you are assuming textual formatting and parsing will be supported anyway? What difference does it make whether the text comes from a screen element or from a file?
> Can I ask what IDE you currently favor? I ask only
> because, in my opinion, very few IDEs are worth using.
> I'll admit my strong bias toward IDEA. After using both
> Eclipse and IDEA on the same codebase, I have an even
> bigger appreciation for IDEA (something I thought not
> possible). I suppose what I'm saying is that if your IDE
> isn't serving you well, it's unlikely you'll be convinced
> that this nutty idea of using a parse element model and
> integrating source control has any merit.
As I was saying in the paragraph above, it's not that I disagree with the ideas you are proposing. I think they are quite good. It's that you haven't shown me that you would have to jettison text-based files persistence in order to achieve these things.
Above you keep saying assume that the system is sound. Why should I have to? Just persist the model as text (something that should require almost no additional work) and give users a contingency. It's not important to me that I actually use this textual format, it's important that it's there in case I need it.