OutSystems recommendation for archiving of code

Hi Team,


I am looking for an "OutSystems recommendation for archiving of code" for OutSystems Cloud.


do we have any documentation around this?


Regards,

Jitendra

i would suggest downloading the application as an .oap file and back it up somewhere locally.

Hello.

The standard version management logic is fine.

If you need more (or are concerned with space), you can download it as a solution and save it somewhere else.


Nuno Reis wrote:

Hello.

The standard version management logic is fine.

If you need more (or are concerned with space), you can download it as a solution and save it somewhere else.


Doesn't outsystems periodically cleanup old versions to save space?


Nuno Reis wrote:

Hello.

The standard version management logic is fine.

If you need more (or are concerned with space), you can download it as a solution and save it somewhere else.



standard version management logic is fine?

Bas de Jong wrote:

Nuno Reis wrote:

Hello.

The standard version management logic is fine.

If you need more (or are concerned with space), you can download it as a solution and save it somewhere else.


Doesn't outsystems periodically cleanup old versions to save space?



I think not but I am expecting some concreate answer from OutSystems/MVP's

Bas de Jong wrote:

Nuno Reis wrote:

Hello.

The standard version management logic is fine.

If you need more (or are concerned with space), you can download it as a solution and save it somewhere else.


Doesn't outsystems periodically cleanup old versions to save space?



More or less. Eventually you start running into low space warnings because Outsystems keeps a lot of metadata and you need tools like the Database cleaner to keep it tidy. 

Bas de Jong wrote:

i would suggest downloading the application as an .oap file and back it up somewhere locally.


That would be the last option :)

JitendraYadav wrote:

Bas de Jong wrote:

Nuno Reis wrote:

Hello.

The standard version management logic is fine.

If you need more (or are concerned with space), you can download it as a solution and save it somewhere else.


Doesn't outsystems periodically cleanup old versions to save space?



I think not but I am expecting some concreate answer from OutSystems/MVP's

The best way to get an answer from outsystems itself would be through Support. I am just trying to help because you are posting on the forums here. 

"All versions of applications and modules are stored automatically in a central repository, every time they are published. Relevant application and module milestones can be tagged, version history - including who and when - can be checked and rollback to any prior version can be easily downloaded."

Tagged versions weren't deletable until a late version 10. Now they are.

Can you specify what else you need or what you don't like?

Nuno Reis wrote:

"All versions of applications and modules are stored automatically in a central repository, every time they are published. Relevant application and module milestones can be tagged, version history - including who and when - can be checked and rollback to any prior version can be easily downloaded."

Tagged versions weren't deletable until a late version 10. Now they are.

Can you specify what else you need or what you don't like?


OutSystems periodically cleanup old versions or not? If yes what is the period?

Bas de Jong wrote:

JitendraYadav wrote:

Bas de Jong wrote:

Nuno Reis wrote:

Hello.

The standard version management logic is fine.

If you need more (or are concerned with space), you can download it as a solution and save it somewhere else.


Doesn't outsystems periodically cleanup old versions to save space?



I think not but I am expecting some concreate answer from OutSystems/MVP's

The best way to get an answer from outsystems itself would be through Support. I am just trying to help because you are posting on the forums here. 


Thanks!

JitendraYadav wrote:

OutSystems periodically cleanup old versions or not? If yes what is the period?

You can manually delete old versions from Service Center.

If you don't delete, they stay there. Right now I'm looking at modules published in 2013.


(I haven't installed OS in a while so not sure if manual deletion is a setting on installation. But it is the standard behavior I always had in all the factories I visited.)

First, you need to define which cloud environment you are talking about.  In Personal Cloud, after some inactive period, your environment will go sleep. After 15 days after sleep, you will receive a solution with your entire code and the environment will be unprovisioned. 

But if you are talking about Enterprise Editions, the cleanup is your responsibility. You have features available in the Service Center to clean up old versions or make usage of the DBCleaner On Steroids to schedule an automatically clean up. But there is no policy from the OutSystems side-


Fábio Fantato wrote:

First, you need to define which cloud environment you are talking about.  In Personal Cloud, after some inactive period, your environment will go sleep. After 15 days after sleep, you will receive a solution with your entire code and the environment will be unprovisioned. 

But if you are talking about Enterprise Editions, the cleanup is your responsibility. You have features available in the Service Center to clean up old versions or make usage of the DBCleaner On Steroids to schedule an automatically clean up. But there is no policy from the OutSystems side-


Thanks, Fabio.

Yes I am asking for Enterprise Editions.

If we delete the Space using the below option, is that soft delete? I mean if we want to get again. do we have any options?


I know about the service center settings given below,

Free up system data

You can free up some system data manually.

  1. Navigate to the environment management console at https://<your_environment>/ServiceCenter.
  2. Click the Factory tab.
  3. Click the Modules option. Then click the Check Old Module Versions to Delete link.
  4. Choose the time period to delete, and click the Check Versions to Delete button.

sc-check-old-versions.png

You can then delete those module versions to free up some system data.


From SC the deletion will be a physical deletion. i.e. permanently. If you need for some reason keep this code archived for a long period but remove it from the database. You need to create a solution for your code (including all dependencies to make sure you will be able to restore it in the future). Download this solution and keep the code in a Third Party repository.   So you can delete it safely in the SC. 



If you get free space, it is gone. That's why deleting shouldn't be automatic and you have options to download solutions.

Usually I keep one year in DEV (less in some projects) and all versions that got to Quality/Production stay there. It has been enough for me.

JitendraYadav wrote:

Fábio Fantato wrote:

First, you need to define which cloud environment you are talking about.  In Personal Cloud, after some inactive period, your environment will go sleep. After 15 days after sleep, you will receive a solution with your entire code and the environment will be unprovisioned. 

But if you are talking about Enterprise Editions, the cleanup is your responsibility. You have features available in the Service Center to clean up old versions or make usage of the DBCleaner On Steroids to schedule an automatically clean up. But there is no policy from the OutSystems side-


Thanks, Fabio.

Yes I am asking for Enterprise Editions.

If we delete the Space using the below option, is that soft delete? I mean if we want to get again. do we have any options?


I know about the service center settings given below,

Free up system data

You can free up some system data manually.

  1. Navigate to the environment management console at https://<your_environment>/ServiceCenter.
  2. Click the Factory tab.
  3. Click the Modules option. Then click the Check Old Module Versions to Delete link.
  4. Choose the time period to delete, and click the Check Versions to Delete button.

sc-check-old-versions.png

You can then delete those module versions to free up some system data.


Hi Jitendra,

Once you delete the old modules either through Service Center or through DBCleaner, the changes are permanent and you will not be able to retrieve them back. This is a good way to regain space in your DB.

Thanks

Ravi





Hi!

First replying to the question: "OutSystems recommendation for archiving of code"

There is no recommendation to archive code (keeping history). The practice is to delete old versions of modules to free space. If you want to archive code while keeping the history, you will have to implement it yourself. As far as I know there is no tool or forge component that enables you to do that.


The suggestion, by others in this topic, to create a solution, and in the running of time, create several versions of that solution, will not get you the full code history, only the snapshots at the time where versions of the solution are created.


My opinion on this, code change history, is that the OutSystems platform is far from perfect, specially when compared with other VCS (version control system) systems like the established standard in the industry, GIT.

Since the beginning (2000/2001), I believe some architecture decisions were made (one influence was because of the trendy Agile way of developing - you don't need history) and they have been good enough, so far, but are now showing some handicaps, in particular when bigger and complex projects need to be tackled.


When I mean far from perfect is because, in particular, the OutSystems platform does not keep deltas of changes; every time the developer clicks that 1-Click button, a complete version of the module is always stored in the database.

So, if you have module with 3MB, and even if you just change some text, the next time you publish, another 3MB are uploaded to the server.


There are several ways (workarounds) that you can use to try to have this under control, so that you keep a longer history of your code, but they are workarounds and have drawbacks:

1) Split your modules into even more smaller modules, with very specific context/logic, so that they are less frequently changed and also when uploading (publishing) to the server will have a smaller footprint. Although this increases management effort because you have more modules;

2) Clone module, develop, merge, delete clone, manually delete clone versions from the database. You will get a cleaner line of development in your module with less versions, but you will loose the clone development versions but eventually this is acceptable;

3) Constantly keep tagging your applications as soon as you consider your developments finished. This will prevent the deletion of the versions of the modules that associated with those application tags, everything else you consider that can be deleted.


Finally, the way I see it, don't expect this procedure to change in the near future in the OutSystems platform as it is part of the core of the platform and also closely related to the merge mechanism.


--Tiago Bernardo