V18 project mode and production, is it safe to switch?

Hello 4D community!

This post is about V18 in project mode (not binary structure). Was hoping to get some feedback from 4D users that have converted their existing application to project mode and have used it in production environment. If you one of those users, we would appreciate it if you can share your insights.

We’ve been looking forward to switching to V18, mainly to streamline our git-flow process (we’ve been using version control with help of VC_Framework for the last 5 years, but that only works for methods, and structure modifications still required quite a bit of manual process).

We want to be sure that our 4D application when converted to project and built for production is stable and unchanged. It’s quite a large application (in development for the 20 yers with 100 + forms and tables), and with clients located in developing countries (with slow internet, limited IT capacity and ‘hard to reach’ when upgrade is required). So it’s very time consuming to re-test all existing functionality and to upgrade existing instances. Thus we want to be certain before switching to V18 project mode.

Things we’ve noticed so far, during our internal testing:

  • If you use style sheets extensively, you will see that most of the objects in design view will have default styles (unless viewed in explorer or executed). This is not a huge issues, but does making alignment of styled objects a tedious job. V18 project, css, design mode

  • Styles Sheets for list box object don’t get transferred to project ! (I am making a bug report for this, hopefully will be fixed in 18.2). Styles do get applied, but directly to JSON (based on operating system that did the conversion to project).

  • Only one option available after conversion to Project, as per https://doc.4d.com/4Dv18/4D/18/Compatibility-dialog.200-4688870.en.html (not 100% sure how it affects us, but might be worth investigating how it would affect your existing application, i.e. ‘Execute QUERY BY FORMULA On Server’, looks like it will be switched off in V18, if I interpreted 4D docs correctly)

  • Transparent property, under Background and Border disappeared (no pun intended), needs to be set to ‘none’ not ‘automatic’

  • Confusion with user setting being stored in text file called ‘directory.json’ <- text files can be edited by anyone, and even if password is hashed, the groups can be changed. Also confusion about what happens to this file when application is compiled, it’s not present in .4DZ file.

Will ask the team to comment further on our findings, and greatly appreciate you sharing your experience with turning your existing applications into V18 project and deploying them in the wild.

Andrei @ Sussol

1 Like


For some things I don’t know if it is wanted / logical behavior, but I also noticed some changes after conversion :

  1. (Form event code=On Getting Focus) is fired now when I click in an enterable input type that is set to not enterable with OBJECT SET ENTERABLE(*;$obj_name;false)
  2. I occasionally use the command OBJECT SET STYLE SHEET and it causes a “stylesheet not found” error
  3. Option “Find in design” is a lot slower than in binary mode
  4. Hierarchical lists with background=transparent are converted to fill color=automatic
1 Like

Stylesheets in Binary not exist in Project. In Project-Mode there you have only the new CSS to fully defined parameters with your own cascaded definitions.

Interesting info, Find-In-Structure is slower in Project. We use a very big DB
and when with find all files must loaded and parsed, than this is not so good.
On our Binary-DB in Client/Server Mode the Find-In-Structure is on Client
only the first time a little bit slow, but all following searches runs than fast
(maybe cached stuffs/indexes).

You can place the “directory.json” file in 2-separate locations: one location takes precedence over the other location.

The two locations for “directory.json” are:

  1. “Data” folder (takes precedence if present in this folder)
  2. “Settings” folder

The two locations can have different “directory.json” files.

The idea is that the Data folder’s “directory.json” file stays at the client site.