Robert,
I am just taking on a project for a similar situation: v11 to v17. I
haven't had a chance to really dive into the code yet so I'm not really
sure what's there but at this point the client's intention is to
essentially keep the database on 'palliative care' for the next 1 to 2
years when they migrate to another platform. Given their needs at the
moment a re-write isn't in the cards.

In another project, one I started in v6 and maintained for the past 15
years, I have performed two 'greenfield' re-writes. The first was going
from v6 -> v2004, the second v2004 -> v13. In both cases the re-write was
necessary to correct structural design issues. This project grew in scope
quite a bit and changing the basic data structure made it easier to
continue to grow as well as leverage 4D's new capabilities. Looking back
they were the right decisions at the time but especially the second
migration was a lot of work. And in both cases the data had to be dumped
from the old structure and imported into the new one with different levels
of transformation required. This is not a bad thing. Especially in bespoke
projects the data can become munged up with structure, interface elements
and this is never a good thing. It's always a result of some momentary
expediency and over time becomes increasingly detrimental.

You know the question we are talking about here is what's called 'technical
debt' and there are a ton of things written about it. I've been reading a
few of them lately as well as talking with other developers about it. 4D is
particularly ripe for these discussions because of the backward
compatibility it has so rigorously embraced. The fact there are still so
many critical systems running geriatric versions of 4D proves this point.
The final straw that's moving the client I mentioned to act is the system
has been running on a single computer for years, the person who wrote it
has retired and the computer, the hardware, is showing signs of failing and
no one in the organization knows how to deal with 4D.

This isn't an unusual story in 4D land.

So now we come to the business question - can you just keep it working for
another year or two? For better or worse the answer is yes. I don't know
what I'm going to tell them it will cost to do that yet but it's certainly
a fraction of what I'd quote for a rewrite. Is that a good thing overall?
Schmaybe. As a business principle would 4D loose some clients if there were
limits on the perpetual backward compatibility. On the other hand we
wouldn't be seeing v17 databases running code so old you just need a black
background and a gold colored, pixelated font to believe you're working on
an old VT100. It's hard to convincingly talk about how modern 4D is when
you're looking at that on the screen.

Bottom line - a re-write is a hard sell. It's a hard sell in any case but
especially for 4D precisely because we've been around so long the
perception (Perception) is the technology is old. It's not but the IT guys
sitting in the room who only know about it as this PITA system they don't
understand and can't get rid of are not going to embrace it.

What we, developers, can do is be more like 4D. Like v17 4D. ORDA is
essentially a new programming language within the 4D shell. (I know there
are some strong voices saying this isn't true. Flame on.) I didn't think
such a thing was possible or that I would ever see it. I was wrong about
that and I'm delighted. The old bones of 4D are still there and available
but there are new options as well.

I suggest this is the model we can extend to modernizing old projects.
Namely, instead of staking out large swaths of green fields and building
from scratch (think Albuquerque) move the existing tables over to the right
and build on top of what you've got (think Rome). I tend to start with the
overall approach to displaying data. The existing project probably uses a
lot of MODIFY SELECTION and MODIFY RECORD. This was fabulous in the day but
you can do better now. So do it. Structural issues can be identified,
solutions developed, tables added and the relevant data migrated within the
current structure. There are some real benefits to this approach not the
least of which being if something goes sideways you can roll back to the
old data by rolling back the structure. There is plenty of time to purge
the datafile once you have certainty the new approach works.

It is important to clear the old data AND the obsolete code. This second
point is really important because if you don't periodically identify and
remove obsolete code then this "build on top" approach spirals into
unmanageability. Or at least a structure where you may have a few thousand
methods but only a few hundred actually are used.

The point is we can modernize and migrate a mature app on top of the old
structure. This allows us to make incremental changes, particularly in the
user interface, that can revive a project.


On Wed, Oct 17, 2018 at 12:45 PM Robert ListMail via 4D_Tech <
4d_tech@lists.4d.com> wrote:

> I have an old v11 database running on Windows that’s not particularly
> well-designed and where there are more than a few subtables to deal with.
> Assuming that there is no additional budget for writing a new clean app,
> would you likely upgrade or re-write in v17 with the old v11 structure as
> guide?  I’m concerned that the upgrade path will be difficult because of
> the subtables and that by the time you deal with all of the legacy junk not
> this database from the early 90s you could have created something fresh and
> new. How might you approach this?
>
> Also, the client originally said the new database would not have to
> migrate data forward from the old system and now they are wanting to have
> the data too.
>
> Thanks,
>
> Robert
>
> **********************************************************************
> 4D Internet Users Group (4D iNUG)
> Archive:  http://lists.4d.com/archives.html
> Options: https://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **********************************************************************



-- 
Kirk Brooks
San Francisco, CA
=======================

*We go vote - they go home*
**********************************************************************
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**********************************************************************

Reply via email to