Over the last few days, we have received inquiries from customers asking whether Synergy applications can be affected by the recently discovered zero-day vulnerability in Log4j, a Java logging library. We can confirm that we do not use this library in Synergy/DE or our OpenSource solutions. Therefore, the only way you could be affected by this vulnerability would be if your application directly uses this library.
In August, I announced a New Release Strategy for Synergy, and I wanted to provide a quick update on our plans, which have changed slightly since that initial announcement.
Our original plan was to release an initial Feature Release in September, followed by the first Long Term Support release at the end of 2021. The 126.96.36.19972 Feature Release took place on schedule and is available for use, but we have adjusted our plans regarding the first Synergy 12.1 LTS release, which will now be in early March of 2022.
The primary reason for the change is to allow for a more extended period of customer testing of the many new features and enhancements in the current release and allow time for an additional 12.0 Feature Release to address any issues that arise. The next 12.0 Feature Release will be in late 2021, at which time we plan to be feature complete for the subsequent LTS release, ensuring an extended testing cycle for the LTS release before it ships in March.
For some time now, we have been contemplating changing the way we release Synergy products. This will not be a surprise to many of you; we’ve been “testing the waters” during conversations with many of you for well over a year now, and I presented information about the likely changes in my Product Update presentation at the DevPartner conference back in May. What has changed since then is that our plans have been formalized, the changes are definitely happening, and we are drawing close to what will be the first release under the new scheme. With that in mind, it’s probably a good time to tell you all about the changes that you can expect.
Before I talk about the actual changes, let me first explain what we are trying to achieve by making the changes.
Known Release Cadence
Previously, Synergy products have not had a pre-set release cadence; we released a new version of the product when we felt a significant new functionality or change in technology justified doing so. As a result, the time between releases could vary from as little as a few months for minor releases (e.g., 9.3 in December 2009 and 9.5 in November 2010) to several years between major releases (10.1 in December 2012 and 11.1 in September 2019).
While this probably works fine for most of our “end-user” customers, it can be challenging for ISV customers that release their products on pre-determined schedules. A known release cadence will make it easier for them to plan their releases, specifically when to adopt new Synergy versions, because they will know when to expect a new Synergy release in advance.
Known Support Window
Similar to the release cadence, the support period for the current Synergy version has previously also been undefined. Our commitment has been to support the current and previous major or minor releases (currently 10.3.3 and 11.1.1), and any earlier versions are technically unsupported. By the way, in this context, “supported” refers to the versions of the product for which we will issue patches if a customer finds a serious problem, not to the ability to call the Developer Support team for assistance. Our support engineers will always try to help supported customers, regardless of product version.
As our development practices became more “agile” in recent years, so did the way we released software. We got to the point where every release we published (even “patch letter” releases) typically included new or updated functionality in addition to quality enhancements. While this is great for developers who want access to the “latest and greatest” features, the strategy sometimes wasn’t great from the point of view of product stability. It’s a fact of life in software development that new or altered code means an opportunity for new bugs, but it’s frustrating if that happens in the context of a patch letter release that is supposed to fix bugs, not introduce new ones.
We have already partially addressed this issue, as I discussed in my Improving Our Internal Development Process blog post last September, but the changes we are about to make will enhance product stability even further.
Introducing Long-Terms Support (LTS) Releases
We are switching to what is referred to as a Long-Term Support (LTS) release strategy. LTS releases provide customers with a pre-defined schedule of Synergy releases that they can plan against, as well as the opportunity to deploy applications in an inherently more stable environment.
Each LTS release will contain a pre-determined set of new and enhanced features that will not change post-release. Further, the features introduced in an LTS release will have been previously made available and thoroughly tested in earlier “feature releases” (more on this later).
LTS releases provide an inherently more stable environment because of the absence of newly introduced or altered code. Although an LTS release may have subsequent updates, those updates will only contain quality improvements or security enhancements, not new functionality.
We plan to make a new LTS release available every two years, the first being before the end of this year. Synergy has many close ties with Microsoft .NET, and we will be broadly aligning our release schedule with that of .NET, which also uses an LTS strategy with a two-year cadence.
LTS releases will be labeled with a version number, an odd revision number, and an incrementing build number. The first LTS release will be 12.1.n (n being the build number). After that will be the 12.3 LTS release in late 2023, the 12.5 LTS release in late 2025, and so on. There will be no patch letter releases under the new scheme.
Each LTS release will be supported for a minimum of four years, or one year after the next LTS release ships, whichever is longer. So if you adopt the 12.1 LTS release when it ships in late 2021, you know it will be supported until at least late 2025.
Of course, some developers will take advantage of LTS releases for the improved stability they offer, but others will want to get their hands on the latest and greatest features that have just been developed, and that is where feature releases come in.
Feature releases are interim releases that provide early access to new features and enhancements that will eventually become part of the next LTS release. They may include partial (but usable) implementations of new features. They will also address any quality and security issues identified within the feature release branch.
Occurring on a more frequent cadence than LTS releases, multiple feature releases may occur each year. You can think of feature releases as being more similar to the way that we have released our software in recent years.
Feature releases will typically be made available for all supported platforms, but if the changes in any release do not apply to or are not usable on a particular platform, no release will be made for that platform.
We will fully test feature releases to the best of our ability, but developers should bear in mind that quality may be lower in areas where new code has been added or significant changes have been made. Quality will solidify as developers exercise the new or updated features and as our automated test suites are extended.
The support period for feature releases will be much shorter than for LTS releases, ending three months after the next feature or LTS release.
Feature releases will be labeled with a version number, an even major revision number, and an incrementing build number. This may seem a little strange, but remember that feature releases build-up to the next LTS release. The feature releases to support the upcoming 12.1 LTS release will be labeled as 12.0.n. We’re currently in the process of putting together the first such feature release, which you may see towards the end of this month or in September.
This first release may not seem too unusual because we will be going from 11.1 to 12.0 and then to 12.1 later in the year. But shortly after the 12.1 LTS release, the first 12.2 feature release will occur (leading up to the 12.3 LTS release in 2023). For the next two years, you will see releases in both the 12.1 and 12.2 release branches, not necessarily at the same time! For example, there may be a 12.2 feature release in March, followed by a 12.1 LTS release in April!
The build number will start at 1000 the first time we build the product in a new feature release series and will increment by 1 every time we build the product, regardless of whether that build is internal, or released to customers. And the sequence of build numbers used with a feature release will carry forward to the associated LTS release. For example, if the final 12.2 feature release is 12.2.1263, then the first 12.3 LTS release might be something like 12.3.1279.
Remember that you can take advantage of runtime version targeting, which allows you to ship your products to customers (external or internal) using an earlier and stable version of the Synergy runtime (the LTS runtime) while developers use the latest feature release to build the product, enabling them to take full advantage of all of the ever-improving productivity enhancements in our Visual Studio IDE tools.
If you have any questions about anything that I have presented here, please do not hesitate to contact me via email at firstname.lastname@example.org. And if you are interested in the changes that will be included in the upcoming 12.0 feature release, watch this space—I will post about that soon.
Synergex is pleased to announce the immediate availability of Synergy/DE 11.1.1g, a quality release that includes a wide range of improvements across the entire Synergy product line. We strongly encourage all Synergy developers to review the release notes for detailed information about everything that changed.
Besides a significant focus on quality, we have also made several feature enhancements in our Visual Studio integration tools, enhancing the developers’ experience and improving their productivity.
First off, we have introduced collapsible-region support for many DBL statements and other language constructs. For example, some of the now collapsible statements include BEGIN-END blocks, USING-ENDUSING, CASE-ENDCASE, IF-THEN-ELSE statements, and more. This feature was specifically requested and voted on by developers in the Synergy Ideas Forum.
We also added support for activating the go-to-definition feature via mouse clicks, in addition to using the existing keyboard shortcut-based mechanism. The default behavior is activated via Ctrl + Left-Click but is customizable in the Tools/Options dialog under Text Editor settings.
Another area that we focused on is improving the accuracy of those “red squiggles” that show up in your code when something is wrong and occasionally when something is not wrong! Inaccurate red squigglies should occur less frequently now, although we do know that have some additional work still to do in this area.
To give developers more options when they need to get in quickly and look at something specific, especially in solutions with large numbers of projects, we also implemented support for Visual Studio 2019’s “Filtered Solution” feature that allows you to check a “Do not load projects” option in the Project Open dialog. Visual Studio opens the solution very quickly when you do this, but all projects are in an unloaded state. The developer can then select the projects they wish to work on in Solution Explorer and use the “Reload Project” context menu to load them. The context menu then includes options to allow you to load either direct dependencies or all dependencies of the projects you loaded, meaning that you can quickly get to a buildable scenario without having all projects loaded. Solution Explorer also has options to show or hide unloaded projects.
Having filtered your solution the way you want it, you can then use the “Save as Solution Filter” context menu to save the state of your solution for the next time you need it that way. The file is saved as a .slnf file and can be reopened the same way you open the solution.
We have overhauled our project build system, reduced memory usage, and improved performance for Visual Studio and command-line builds. And at the same time, we have improved and standardized the way they interact with MSBuild, allowing us to adopt new features more quickly.
And armed with our new MSBuild capabilities, we added support for a new feature known as /graphBuild, making pre-build analysis of inter-project dependencies work much more effectively. In turn, MSBuild can now more effectively perform parallel builds of multiple projects simultaneously, in some situations resulting in improvements in overall build time.
We are confident that most developers should experience improvements in overall build times across the board, particularly for traditional Synergy projects. And in some cases, with the right combination of projects and resources, those improvements could be significant.
For example, suppose you have a small number of base libraries used by a large number of higher-level projects. In that case, once those base libraries have been built, there is a good chance that higher-level projects can build in parallel, with the overall process completing more quickly. The more CPU and memory resources that are available, the faster things can proceed. In some environments, such as on dedicated build servers running CICD pipelines, we have seen improvements of up to 30 – 40% in overall build time as compared to the previously released version. But improvements of that order do require access to considerable resources; most improvements will be more modest.
If you’re already using Visual Studio to develop your Synergy code, we encourage you to upgrade to this new version as soon as possible; remember, you can always use runtime version targeting if you’re not ready to upgrade your production systems. And don’t let the fact that you only develop traditional Synergy code or deploy to Unix, Linux, or OpenVMS deter you; Visual Studio can make a great development environment for those scenarios too! Talk to your Synergex account representative for more information.
Have you noticed some new names popping up on email signatures from Synergex Support or perhaps a new voice picking up our phones? Have you seen some number patterns appearing in email subject lines related to your cases? Over the last year we’ve made a lot of changes to our Developer Support department to address succession planning and feedback from customer surveys and to improve response times on your cases. We’d love to share a bit of what’s new with you, so you know what to expect the next time you send a case to Support.
Putting names (and faces) with the voices
As many of you know, our longtime Support Manager, Beth Ives, retired at the end of last year. That left some big shoes to fill, and I’m grateful to the whole Synergex team for helping me transition into the role of manager for both our Developer Support and Education teams over the last year. The rest of the Developer Support team members that you’ve grown to know and love are still here and are as reliable and knowledgeable as ever. The more tenured members of the team have been great mentors to our two newest developer support engineers, Matthew Nix and Mike Carleson. Mike and Matthew started with the team back in October of 2020 and are initially focusing on licensing, installation, and traditional Synergy cases. They are especially eager to answer any questions you may have about REV11 licensing as you upgrade your production subscription licenses this year. I’m very excited to have combined the Education team with the powerhouse of Synergy knowledge that is the Synergex Developer Support team. Expect to see some exciting new joint initiatives over the next few years.
Improvements to support case flows
As a team, we’ve identified a few of our policies and procedures that we’d like to update to give you the best experience possible. Many of these changes will take place behind the scenes internally, but you may have already noticed one change. Previously, emailed cases were logged manually by a developer support engineer in our support service desk (we use Salesforce Service Cloud). We knew we could automate this process to ideally result in faster case assignment and initial response from a developer support engineer. We did a soft launch of a feature called Email-to-Case, which uses a reference code in an email to determine which case that email belongs to and logs the interaction accordingly. The strange characters you may have recently seen appended to email subjects are the reference codes. We plan to do a wider launch of this feature next month. You should start to receive notifications that a case was created right after you email a question to Synergex Developer Support. These notification emails will contain your case number and unique reference code. If you need to start a new email thread for an existing case, we ask that you add the reference code to the subject to help us keep the system tidy and keep your case moving forward as smoothly as possible.
Tell us what you think!
When a developer support engineer closes a case, you should receive an automated email from our service desk. These emails often include links to surveys asking for your feedback on the case. We really want to hear from you! These surveys are quick, and your feedback is what will drive internal training and additional process improvements for the Support department. Please take a few moments to fill out the case closure survey the next time one makes it into your inbox. To sweeten the deal, we will enter all survey respondents into a drawing each quarter for a $50 gift card!
What does Support do?
In case you’re not a power user of Synergex Support services yet, I’ll fill you in. First, we strive to make it as easy as possible for you to get in touch with us. You can reach Synergex Developer Support by email (email@example.com) from 6am – 5pm Pacific. We are available for phone support (800.366.3472 toll-free US and Canada or +1.916.635.7300 all others) from 7am – 5pm Pacific. You can also submit cases through the Resource Center (log-in required). Our department can answer questions that range from “Will version 11 of Synergy work on my operating system?” to “How do I declare this in .NET?” The team can help you with questions regarding migrations to new versions of Synergy, moving your development environment to Visual Studio, configuring REV11 licensing, and more. We’re also always happy to point you to additional educational materials (e.g., documentation, training videos, code samples, etc.).
An unlimited number of Support contacts are included in your DevPartner subscription, and ad hoc support is available for those not on a subscription yet. To hear about our premier support offerings, contact your account executive. We look forward to working your next case with Synergex Developer Support!
For several years now, Synergex has maintained an open-source example that provides an example of how to implement the replication of a Synergy applications data to a Microsoft SQL Server database, in near-to-real-time. The example environment makes considerable use of CodeGen to generate the bulk of the code needed to implement the interaction with the SQL Server database, and much of the remaining required code can be used out-of-the-box, requiring very little, if any change to the original Synergy application to enable the data replication to take place. The example environment has been used as a template by many customers, and our Professional Services team has assisted many others by delivering either proof of concept examples, or full-scale implementations.
As technologies and product capabilities evolve, we periodically revisit the code to ensure that it is taking advantage of the latest features and adhering to best practices. Good performance is also of critical importance in products like this, so we frequently revisit the code looking for opportunities to make improvements in throughput.
We have just completed the latest review of the code, and on this occasion, we did make some changes, which are briefly described below.
- We now generate an additional function that returns the key number of the first unique key for each ISAM structure. This allows us to avoid the need for code that previously detected the first unique key number at runtime; that code required that the replicator had an open channel to each data file being replicated.
- We also generate an additional function that, when passed a record containing data, returns the key value of the first unique key. Previously, the code used the Synergy routine %KEYVAL for this purpose, but it also requires that the replicator has an open channel to every data file replicated.
- Because of the previous two changes, we were able to remove the replicator’s requirement to open the underlying data files that are being replicated. The only files that the replicator now opens are the instruction queue file and log file.
- We added code to make the replicator more resilient to interruptions to network connections when using xfServer to access the instruction queue file on a remote system. If a network problem is detected, the replicator now closes the instruction queue file and then attempts to re-open it on a new channel. If this operation fails, it will retry several times with a delay between attempts. The number of retries and the delay between retries are both configurable via command-line options or environment variables.
If you already have a SQL Replication environment based on our sample environment, then you might consider checking out the latest version and applying the changes to your own codebase, and if you’d like some help with that, then our Professional Services team will be happy to assist. And if you haven’t yet implemented a SQL Replication environment but are interested in doing so, get in touch with your Synergex account rep and ask them to set up a demo.
We’re about to release another version of Synergy, and when we do you may notice that we’re not documenting any new features in the release. This is an intentional change, and I wanted to let you know about it ahead of time.
In addition to working on Synergy/DE, our development teams are also working on re-organizing many of our internal systems, tools, and practices. We’re centralizing almost all of our development around Microsoft Azure DevOps; we’re consolidating all version control on Git (currently, depending on the product area and platform, we also use PVCS and Subversion), we’re making extensive use of CICD principles and tools to build automated build and test pipelines for all aspects of the product, and much more.
The only exceptions to this are our open source products, CodeGen and Harmony Core, which will remain in their current locations on GitHub. This will be an on-going process extending well into 2021 and, when complete, will put us in a great position to be able to return our focus entirely to Synergy/DE within a modern, highly efficient and productive development environment.
And as part of this reorganization of our environment, tools and practices, we have also made some decisions about how we’re going to release changes to the Synergy/DE products. For the core Synergy/DE runtime products, we have decided to revert to our earlier practice of only releasing quality improvements in patch releases; new features will be released less frequently, in numbered product releases. There are some other changes coming down the pipeline, but we’re still fleshing out some of the details, we’ll let you know as soon as things are firmed up.
This decision applies to the runtime products only, not to the development tools; you will still see regular releases for the Visual Studio-based development tools (and maybe more) in the near future. And development and releases of CodeGen and Harmony Core will continue as normal.
Back in June, I announced the launch of a new product downloads site, which at the time provided access to all of the Synergy 11 downloads, and that downloads for earlier versions would be migrated over the coming months. I am pleased to announce that process is now complete and that the downloads for products all the way back to Synergy 7.1 are now available from the new site and have been removed from the old resource center.
The old download pages also included downloads for the Synergy V6 products but, because the way the software was distributed was so different back then, we decided not to migrate those old versions to the new site. For now, the version 6 files can still be downloaded from the old resource center, and we will make those files available via some alternate mechanism before that site is eventually decommissioned.
I wanted to make you aware of a small change that we have recently made to the way that we refer to “interim” releases of the SDI (Synergy DBL Integration for Visual Studio) product.
A few years ago, it became clear that we needed to be able to release our Visual Studio Integration tools on a more frequent cadence than the main Synergy/DE product. So we started doing interim releases that we referred to as “Developer Builds.” Each developer build was identified both by a version number and a build number.
Initially, these builds were often not subject to the same levels of stringent testing that a build for a full release would be, and we made that clear to customers. But now, thanks to considerable improvements in our automated testing processes, these interim builds are now subject to the same levels of inspection and testing as a build for a full release, and it is no longer necessary to discriminate between developer- and full-builds.
For this reason, we have decided to stop referring to these releases as “Developer Builds,” they are now all just “SDI Releases,” which will continue to occur on a much more frequent cadence than Synergy/DE.
I am pleased to announce that a new release of the Synergy DBL Integration for Visual Studio product is available for immediate download from the new Downloads Center. The release includes several quality enhancements and is recommended for everyone using Visual Studio for Synergy development. For additional information please refer to the release notes.
On Thursday, June 18th we will launch a new series of webinars called the xfBBQ Webinars, and I’m guessing this may require some explanation. So here goes:
What is xfBBQ?
xfBBQ is a browser-based application, designed and created by Johnson Luong, Synergex Software Developer, (with minor input from Jeff Greene, Harmony Core Technical Lead, and Synergex Principal Engineer) to help us plan for our regular company BBQs. The ones that we are NOT currently enjoying because of the COVID-19 pandemic! Generally though, we host around six BBQs outside our office at lunchtime during the summer season, but most of you won’t care about that because you’re not invited 😉!
Who is Johnson Luong?
Johnson is a valuable member of our development team who, since joining Synergex in 2014, has worked on many different parts of the Synergy/DE toolset. Recently he has played a major role in the creation of our Windows installations using the WiX Toolset, while at the same time having made significant personal contributions to the development of the entire Harmony Core framework.
What does xfBBQ do?
The app allows customers (employees) to register for access, then informs them when BBQs are scheduled, and allows them to select from, and customize, various menu selections for each BBQ. For example, for a given BBQ, I might use the app to express my preference for a “medium rare cheeseburger with hot peppers and a well-done dog.” I could even opt for two burgers, or two dogs, or both … but in doing so I may risk the wrath of Samantha, our wellness coordinator! Johnson assures me she doesn’t have a special “back door” into the data, but I’m not convinced!
Anyhoo, the app collates the orders, presenting the BBQ officials (all who lavish in Synergex VIP status, and rightly so) with the required lists of requirements and ingredients for each BBQ event. Yada, yada, yada.
Why did we do this?
Because having developed an awesome (our words, but we’re confident) web-services framework called Harmony Core, customers were asking for real-world examples of how it might be used. And … we had a real-world problem to solve, namely that we really needed to control the amount of burger patties and sausages that we were purchasing from Costco!
Just for fun! Johnson believes that he has now defined the actual meaning of “xf”, but trust me, he has no clue! Until it’s been ratified by Marketing it means nothing, and that process could take years!
But seriously, this webinar series presents to you an end-to-end view of how a modern browser-based application is developed. You will see how the Harmony Core back-end is built, but you have seen that in previous webinars. What is much more important here is the focus on the development of the front-end application that interacts with the Harmony Core service.
This will be a series of four webinars, as follows:
Thursday June 18 @ 9 am PDT
Creating a Harmony Core solution and hooking it up to a new React app.
Register for part one here.
Thursday June 25 @ 9 am PDT
POSTing data in React, and an introduction to Redux.
Register for part two here.
Wednesday July 1@ 9 am PDT
Captchas, batch processing, and other CRUD.
Register for part three here.
Wednesday July 8@ 9 am PDT
User authentication, styling with Bootstrap, and making a React production build.
Register for part four here.
We are completely excited that over the last few months we have built up a marvelous following for our Harmony Core webinars, but I’ll be honest, there won’t be much DBL code to see here! Regardless, I encourage all of you to join us for this webinar series, and to stick with it to the end.
If you’re a DBL dev you may not learn much about your own part of the puzzle that is building a modern distributed application. But I promise you, by the end of the process you will have learned a lot about what it takes to pull together all the other pieces of that puzzle. Building a modern, distributed application requires skills in many different areas, and this webinar series touches on many of them.
It is most important that we get your non-Synergy developers to participate in these webinars. Your web devs will be right at home here, but if you don’t have web devs then invite your Windows devs, your iOS and Android devs, and your MacOS devs.
Web services are accessed via HTTP, and pretty much every development language can do that! The perfect target audience for these webinars is anyone that is involved in developing your next-generation apps. It’s not about any one part of the process, it’s about the entire process, end-to-end, and that will require devs with many different skill sets get together, and to work together to create success!
We are introducing a new download experience for all version 11 products. As we continue to migrate functionality from the Original Resource Center to the New Resource Center, product downloads are the latest functionality to move across. To access downloads for version 11 products, first, go to the Products page, and, if not already logged in, then do so.
As you can see, the products page now includes a new Downloads option, which, takes you to a new, improved, and simplified download experience. We have tried to make the experience as simple as possible for most people, with all of the most frequently downloaded products being available with a single click.
The most popular downloads for the latest released version are available via a single-click on one of the prominent blue buttons. But if you need downloads for ancillary products, such as xfNetLink .NET, or different platforms, or older v11 versions of the products, then the text links under “Downloads for all Supported Platforms” take you to pages where everything is available. For example, here’s the downloads page for the IBM AIX platform:
The downloads for the latest version of products for the platform are once again directly downloadable via a single click.
Also, notice the “Select Version” drop-down control, which allows you to pick from earlier versions of the product for the selected platform. Currently, we have moved the downloads for all of the version 11 products, so that includes the following versions:
This represents a significant change from the previous download site. Previously, for any given release, say 11.1, you would only be able to download the latest patch version of any product. When we published a patch for a product, we removed all earlier versions of that release. From now on, when we publish any download for a product, that download remains available for use at any time in the future.
The only exception to this rule is in the improbable scenario that we discover a severe flaw in an installer or in the product, which requires us to replace a download with a subsequent version and remove the previous version to guarantee that nobody else downloads it.
The downloads for all of the previous product versions are still available in the Original Resource Center. We do plan to move those downloads across to the new site, version by version, starting with version 10 and working back from there. We hope to migrate the version 10 downloads across somewhere in the June time-frame, but we have not committed to a specific date yet.
By the way, if you scroll down a little on the platform download pages, you can access various important information and notes, and view a release log showing the timeline of the current and previous releases.
If you attempt to access the new downloads site and find that you can’t see it, the most likely reason is that individual users must be granted downloads access within the resource center. This was also the case in the original resource center, and we believe that we have migrated the permissions to the new site. But if you think you should be able to see downloads and can’t, try contacting your resource center admin (each company has one or more nominated admins), or contact the Synergex Customer Services team for assistance.
We hope that you like the new downloads experience, and we look forward to receiving your feedback.