Branching
9853
Views
97
Comments
Not right now
Collaboration

Branching could be useful in different situations, some more relevant than others, but on big factories with a team with several developers, it could be very useful.


A situation that occurs frequently is when we receive a change request which requires changes on core entities, this will break the environment , and will affect other developers that are working on a different feature, but are prevented of testing/developing without pain since the environment is broken.

So it would be great of having an way of creating a branching per pta of a solution, were the developer could make the change that will break the environment isolated, finishes the development, could test it isolated again (remeber that i've mentioned a branch of the solution), if everything is ok, perform the merge of the branches, create a new solution and schedule the publish.

Im mentioning PTA was a way of doing it, it could be by branch, if it was possible to work on different espaces on a context of a branch


If i was a smoker i would quit smoking with this feature :)

2016-04-21 20-09-55
J.
 
MVP

what about cloning?

will that not solve the branching?

Clone is a different espace, different id, which would lead to different entities (id's), and so on, so when you wanted to merge back of the original one they wouldnt match, and still i wasnt able of testing it. 
Im not seeing a way that clone could help in this situation, can you share what you were thinking?
2016-04-21 20-09-55
J.
 
MVP
Well, branching in my book is branching the source code.
not the actual data. so with cloning would accomplish that.

so actually what you are saying is "branching" the whole application including the data.
that is imho, the idea of synchronizig dev/prod/quaility servers.

see:
https://www.outsystems.com/ideas/64/
Yep, i want to branch the source code, use the same data, and dont affect other developers work that are working on a different branch. With cloning im not able to accomplish this.

it doesnt have anything to do with synchronizing DEV/QA/PROD
2016-04-21 20-09-55
J.
 
MVP
But if you change the core entities, no matter what branch you are, it will effect the developers anyways, because the core data is changed in your case.

unless you want a clear copy of the developement environment, then my original thought that you should either

a) clone the relevant espac and bootstrap the data again
or
b) synchronize DEV/QA/PROD but more like DEV1/DEV2
or rethink your development street.

for example
1. DEV1: core entities
2. DEV2: other espaces + stable core
3. QA
4. PROD

or even think about the solution is organized.
frequent changes of core entities is imho somewhat strange.

Allow me to cast my vote in favour of branching eSpaces.

Yes, I get that that could cause problems/difficulties if the entities change and it wouldn't really solve the problem where developers must change the same actions, for different reasons (i.e. one needs to change it because it's part of a new development; another needs to change it because it's part of a bug fix).

However, branching would allow two things to happen:

1. Deloy just one branch -> suppose your development rules mean than you and only deploy new developments, and not bug fixes. Simply deploying the "development branch" instead of the "bug fix branch" would achieve this.

2. Simplify confict resolution -> since you know that what's on the "development branch" are all new developments, and what's on the "bug fix branch" are all bug fixes, merging both would be a bit easier because most bug fixes will happen on existing "code" and new developments are, well, new developments so there's less chance of conflict
I like this idea and looking for the same for a long time from Outsystems. I will describe my problem here and I think the original poster is talking about the same issue.

Suppose an espace - ABC having 3 Screens has been deployed into PROD. And a developer is creating a new screen # 4 in development environment for the same epace - ABC. In the mean time there was a bug identified in Screen # 3 functionality in PRODUCTION Environment and need to be fixed as soon as possible.  So is there a way we can migrate espace without having any of the new functionality of screen # 4 which is currently in development ?

There would need to be some way of marking a version/ branch in dev to you can choose which code to work on - like the difference between dev and quality. Ravi's scenario is one which I'd like to be able to do more easily. At present we freeze code to our quality server and hotfix & release from there and apply the fix to dev at the same time. However, this doesn't work when we need to quality test a release! Having a dev server, triage server and quality is one way to go I guess!

If you'r familiar with Git or Github you know what I mean. If not, here’s an explanation.

Casus: A colleague of yours “Citizen Developer” ha-ha. Made an app that works pretty well. Unfortunately he did not care about design, structure or future changes. Now the task is up to you to create new features in the spaghetti code he left behind. You decide to rebuild, refactor the app. This would result in a broken app that can only build again when you have finished refactoring his code resulting in a period where you are not able to perform hotfixes, maintenance or changes to the old application.

When branching is possible you could simply create a new branch from the current application and work on that when refactoring over a longer period of time. If anything goes wrong with the current application you can fix it without any worry’s. When the time for publication of the refactored branch  is ready you can merge it with the old branch and publish it to the webserver.



Merged from 'Make branching an application possible' (idea created on 2017-05-01 09:18:22 by Danny Prager), on 2017-05-03 13:59:49 by Goncalo Borrega

This is an often requested idea, duplicate of others.

J.Ja



Merged from 'Make branching an application possible' (idea created on 2017-05-01 09:18:22 by Danny Prager), on 2017-05-03 13:59:49 by Goncalo Borrega

Hello J.JA

Is there any update on this idea? is Outsystem planning to have this functionality in near future?

Hello J.JA

Is there any update on this idea? is Outsystem planning to have this functionality in near future?

2016-04-21 20-09-55
J.
 
MVP

I cannot speak for outsystems, but I really doubt it.

they have created an awesome platform with the dogma of not branching.

this also extends the agile-philosophy to deploy fast and often and there will be no need for branching.

hotfixing can always be done on production..

Hi!

Totally share the same opinion as J. expressed in the previous post, but as the complexity of "enterprise applications" in "low-code" development increases this mechanism of branching will be missed more and more.

One issue is that OutSystems development includes the Datamodel, along with the Logic and Interface (and Processes), and so the Datamodel is also included when talking about branching, and branching the Datamodel is effectively not that simple.

But, if you exclude the Datamodel, I think cloning espaces is currently the only way feasible as workaround to do branching in OutSystems development.

If others have any custom procedure implemented in their factories to do branching, please share.

Tiago Bernardo

We really want this as well.

+1


Would make things so much easier.

2016-11-21 23-23-05
Gonçalo Borrêga
Merged this idea with 'Make branching an application possible' (created on 2017-05-01 09:18:22 by Danny Prager)

+1 our current mobile deployment plan is to try and push things to production at least every 2 weeks.

We know that some new features we are working on are going to take longer then 2 weeks to develop so we dont want these changes moving on to qa and then to prod until they are done.  Or if we are planning on pushing to qa in the next day or two we are reluctant to start working on something that will not be finished in time.

If we could create a branch for these larger features the other small features or bug fixes / enhancements could continue to be developed and released without having to worry about something getting pushed that shouldnt have.  

+1  Hope this is implemented soon

+1. 

+1

I really want this :)


2025-02-22 18-27-01
Alfaro
 
MVP
Merged this idea with 'Improve Version Control to support Code Branching and Merging' (created on 21 Sep 2018 04:22:43 by Vikrant Sharma)

Please add the support for simple code branching and merging. It is very badly needed and I was quite surprised that this basic software development feature is absent from the platform. 

Without the branching feature, we are not able to handle typical software development, release, and maintenance lifecycle challenges such as - independent feature development, separation of new development code from critical bug fixes in released/live code, and similar situations. 

I noticed elsewhere that"cloning" has been recommended as a solution. Please note that "cloning" of espaces or creating copies of entire applications is not really a practical alternative to branching and merging because of the way Outsystems handles the modules (separate ids, new names, different entities, challenges in merging, challenges in making the cloned espaces as the new released versions with the same names of the older espaces, managing existing data, etc). 

The need for easy branching and merging support cannot be ignored. It is one of the basic concepts software development lifecycle and software maintenance.




This comment was:
- originally posted on idea 'Improve Version Control to support Code Branching and Merging' (created on 21 Sep 2018 by Vikrant Sharma)
- merged to idea 'Branching ' on 30 Nov 2018 09:17:19 by Carlos Alfaro

Indeed. We need a way to tag and comment on published versions as well.



This comment was:
- originally posted on idea 'Improve Version Control to support Code Branching and Merging' (created on 21 Sep 2018 by Vikrant Sharma)
- merged to idea 'Branching ' on 30 Nov 2018 09:17:19 by Carlos Alfaro

Nice opportunity to bring more improving to Dev 



This comment was:
- originally posted on idea 'Improve Version Control to support Code Branching and Merging' (created on 21 Sep 2018 by Vikrant Sharma)
- merged to idea 'Branching ' on 30 Nov 2018 09:17:19 by Carlos Alfaro
2016-04-21 20-09-55
J.
 
MVP

Could you give an outsystems example why you want to branch?

I don't like the idea of having to merge more often than needed.


It's all about the process and when to develop what,when and why.

With outsystems you could have small release cycles, so there is no need for branching...





This comment was:
- originally posted on idea 'Improve Version Control to support Code Branching and Merging' (created on 21 Sep 2018 by Vikrant Sharma)
- merged to idea 'Branching ' on 30 Nov 2018 09:17:19 by Carlos Alfaro

Branching is needed in many situations in software development, release, and maintenance life-cycle. Let me give a typical example that most software development teams would have come across.


Suppose there is a Outsystems application that is already live, and being used, in Production environment. If any critical or showstopper kind of issues come up in Production, that need to be fixed immediately, the application support team performs a code change in the Development environment, and after following the due QA process and pre-release checks (in QA and Pre-Production environments respectively), the code is pushed to Production environment.


Now consider that the next version of this application is planned, including major changes to the existing application with new features. Assume that the overall development and QA process of the new version of the application takes 2-3 months to complete, and those features cannot be incrementally released in parts. The development team starts performing those changes in the development environment. During this period of 2-3 months, if some critical or showstopper issues come up in the live code in the Production environment, that need to be fixed immediately, the development team obviously cannot perform the bug fix in the current development environment. The development team would then have to save the current development, rollback to the released version, perform the bug fix, follow the QA process and pre-release check, finally release the fix in production environment, and then revert to the new development code version in the development branch and continue working.


There are other options as well, for example:

 - Making the critical bug fix directly in Production or Pre-Production environment, but this compromises the QA process and pre-release checks.

 - Creating a copy or clone of the individual espaces or entire applications, but this is not a preferred solution due to various reasons: separate IDs, new names, different entities, challenges in merging, challenges in making the cloned espaces as the new released versions with the same names and URLs of the older espaces, managing existing data, etc.


If branching feature was supported, it would have been possible to simply create separate branches for released code plus critical bug fixes, and new feature development, and merge as and when needed. In the example mentioned above, just to elaborate a bit more, if branching feature was supported, the application support team could work on the "release-and-maintenance" branch, while the application development team can work on the "new development" branch independently. After the new development is completed including the QA process, the "new development" branch changes would be merged with the "release-and-maintenance" branch, and then released as a new version of the application.


Hope this clarifies the requirement.




This comment was:
- originally posted on idea 'Improve Version Control to support Code Branching and Merging' (created on 21 Sep 2018 by Vikrant Sharma)
- merged to idea 'Branching ' on 30 Nov 2018 09:17:19 by Carlos Alfaro
Changed the category to
Collaboration


This comment was:
- originally posted on idea 'Improve Version Control to support Code Branching and Merging' (created on 21 Sep 2018 by Vikrant Sharma)
- merged to idea 'Branching ' on 30 Nov 2018 09:17:19 by Carlos Alfaro

I agree with Vikrant,  we often need to merge bug fixes made in the main release back into older versions that are in production. 

One problem is that the merge selects ALL the new code and you have to un-check it all to only select the updates that are needed (we may want to keep 99% of the old code). The option to simply "Select All" from the other side would help - at present you have to manually select every single item!

The other major problem is the consequence of copy/paste and cloning (changed IDs) as this makes merging impossible. It would be far better if it had an option to compare "textually" (by action names) rather than using IDs, so the cloned blocks can be compared. There should also be an option to ignore all layout differences - do I care if an action ball has been moved 5mm to the right? I think not. 

As a result 9 times out of 10 we end up replicating the changes in multiple versions manually - which is tedious and prone to accidents.



This comment was:
- originally posted on idea 'Improve Version Control to support Code Branching and Merging' (created on 21 Sep 2018 by Vikrant Sharma)
- merged to idea 'Branching ' on 30 Nov 2018 09:17:19 by Carlos Alfaro
2025-02-22 18-27-01
Alfaro
 
MVP
Merged this idea with 'Better Branching' (created on 03 Apr 2018 12:39:12 by Patrick Baanvinger)

When you make a release of an application, you can develop for the next iteration. But maintaining the publiced version with hotfixes through OTAP and developing new functionality is hard to do.

Merging the hotfixes and new developments in a new version is hard to do.


A.K.A. Better version control ;) 



This comment was:
- originally posted on idea 'Better Branching' (created on 03 Apr 2018 by Patrick Baanvinger)
- merged to idea 'Branching ' on 30 Nov 2018 09:17:40 by Carlos Alfaro
2014-02-07 17-02-43
Vasco Pessanha
Changed the category to
Collaboration


This comment was:
- originally posted on idea 'Better Branching' (created on 03 Apr 2018 by Patrick Baanvinger)
- merged to idea 'Branching ' on 30 Nov 2018 09:17:40 by Carlos Alfaro
2025-02-22 18-27-01
Alfaro
 
MVP
Merged this idea with 'Working in branche lines' (created on 26 Mar 2018 09:03:52 by D.)

I would appreciate it if OutSystems also offered the opportunity to work in Branche lines. You can then quickly go back to the starting point and merge stories when you have finished. I know that OutSystems keeps track of versions but a Branche line is just a bit more clear.


Idea:

Offering the possibility to work in branch lines. Developers can  quickly return to the starting point and merge their work easily when they have built a functionality.



This comment was:
- originally posted on idea 'Working in branche lines' (created on 26 Mar 2018 by D.)
- merged to idea 'Branching ' on 30 Nov 2018 09:18:02 by Carlos Alfaro
2014-02-07 17-02-43
Vasco Pessanha
Changed the category to
Collaboration


This comment was:
- originally posted on idea 'Working in branche lines' (created on 26 Mar 2018 by D.)
- merged to idea 'Branching ' on 30 Nov 2018 09:18:02 by Carlos Alfaro

Our digital factory will have multiple sprint teams working in parallel on different themes.  At a minimum the factory has a team working on break-fix defects based on current production pipeline in parallel to a team working on new feature releases.  


The break-fix defect pipeline needs to be protected against getting polluted with new feature development that are release prematurely to production while the feature release pipeline will need a way to evaluate and merge (auto or manual) production fixes. 


This setup requires the ability to maintain two parallel (but linked) pipelines where we control synchronization at logical stages.  This is how we do it for all other technology including ASP.Net, Spring/Java, and even packaged application configuration baselines.  


This feature is necessary for reducing risk and managing complexity in an enterprise grade setup.

@Dany Hajjar

This is exactly my point :)

+1 this would be a great idea

Branching is a standard and basic idea to manage multiple feature development in parallel.


Feature Branch is used across many kind of development technologies. Here we are not using OutSystems in complex applications because it require Feature Branch to control parallel development.


I'm impressed that OutSystems don't have it yet. It is a big problem.

Do you know what's really funny,


Outsystems dev team uses github (what enables branching) according to:

https://stackshare.io/outsystems/outsystems

Why would they think this feature should not be possible for the developers that use there platform? its a guess to me..


Danny -

If you read their development blogs, they don't use branching, they use feature switches, same technique they recommend in developing with OutSystems.

J.Ja

Hi Justin

Certainly feature flag based development is the obvious workaround.  But I feel this method alone would require tight governance and QA as part of a continuous integration pipeline.   Otherwise regression defects will be leaked to production.   It would be interested to hear from others on how they have manage to tackle this whole area.

Dany

Dany -


Branching requires the exact same governance and QA controls... people do bad merges, people make breaking changes and you don't find out until they do a last-minute merge and your whole deployment cycle is interrupted because now all of the consumers are broken and can't publish, etc.


I am not saying one is better than the other, and I think maybe teams should have the choice.


But I can say that after many years with the OutSystems way, I have never wanted branching back. Forcing people to actually communicate and work together in real time, rather than letting them go off, do their own thing, and praying they didn't mangle the system when they eventually merge, has proven to be very much worth the risks of remembering to put a simple feature flag in the code.


Again, that's my experience, and I'm sure others will disagree so I am not saying they are wrong. But I think that the lack of branching isn't this big "house on fire" emergency either. OutSystems is a very opinionated platform, I understand the reasoning under their opinions (it's mostly to protect you from less-than-great developers), and I rarely disagree with their overall direction, just the specific implementation of certain things.


J.Ja

Hi all,


This topic of Trunk (with feature flags) vs Branch development is always hot.

Either way you do it, it always requires Governance! You can have feature flags that live forever, the same way you can have branches that seem to live forever, and neither is good.


The point here is that, practically and effectively,  the OutSystems platform, because the way it was implemented from the start and the way it has evolved, it only supports/allows one -- Trunk development with feature flags -- so you cannot choose, you are stuck with it. (*1)


Because now OutSystems platform is (finally?):

1/2) Truly Enterprise level in a wide landscape of big customers with big applications;

2/2) Getting a lot of attention from developers coming from more classic ways of developing with other programming languages (and so, not only developers that have only known the OutSystems way),

the OutSystems platform is feeling the pressure of "demands" such as this as "Branching". Developers are use to it, so they "demand" that OutSystems platform supports it. (*2)


And we all say that one is not better than the other, but you should be able to choose for yourself.

So, I think OutSystems as a decision to make:

1) Either says: "This (Trunk development) is the way we have always done it, and we are not going to change." -- and risks loosing a lot developers/projects/clients;

2) Or clearly states that this is an important topic and it will address it somehow in the near (?) coming future. (I see the "On our radar" tag on top, but that does not mean clearly anything).


I personally really miss "Branch development". The additional problem here is that merging in OutSystems is also not easy because the smallest elements that you can merge are entire screens/web-blocks and complete actions, so I will be very curious on how the R&D team from OutSystems will solve this, if they go through with implementing this.


(*1) - You can do a kind of branching by cloning espaces but this is tricky and not that straight forward.

(*2) - Another "demand" from classic development is "Check-in comments" (Idea)... Also miss it! Now I recur to workarounds, like filling in the description of espaces, to be able to get a small understanding on what was changed in a specific version of an espace.


--Tiago Bernardo

Hi all,

Feature flags are surely useful for what their name indicates, i.e., features, specially add-ons and configurable enhancements that can be pretty neatly isolated from the "main" code. 

However, I am very surprised that feature flags are being suggested as an alternative to code branching.

The real and obvious need for branching has been explained in quite a lot of detail in the comments in this thread and the original threads. 

The lack of branching support in the platform is really a pain point for any development team that is involved in maintaining/supporting live applications along with implementing new versions of the application, for example.

Also, please note the other similar (low-code) platforms do support code branching. 

https://www.mendix.com/evaluation-guide/app-lifecycle/version-control#5-how-does-mendix-support-branching-and-merging

Regards,

Vikrant Sharma


With Git branching also allows to control development and reduce amount of the commits. Now the platform is easily messed up with all types of though processes that are not relevant, when studying what the guy before me has been done.  If the branching has been done, the feature can be squashed or organised to single or fewer commit(s) and that then can be contributed to other development line.

There are two features, I would require to see on the platform is the support for branching and also unit testing (with mocking) of flows. Unit testing would allow TDD really well sometimes. As newbie OS developer, I do struggle more how to achieve testing than actual feature. 

Merged this idea with 'Code base Branching and Merging' (created on 26 Feb 2019 05:56:57 by Waseema)

Having a code branching, tagging and merging options on the platform will be very useful.

currently there is no way start future development unless the code is moved to production.





This comment was:
- originally posted on idea 'Code base Branching and Merging' (created on 26 Feb 2019 by Waseema)
- merged to idea 'Branching ' on 08 Mar 2019 15:40:33 by Ângela Dinis

Not entirely true, you can achieve this with solution versioning... still, very cumbersome work! 

Having this kind of control on eSpace versioning would definitely ease the "promote-to-production" procedures.



This comment was:
- originally posted on idea 'Code base Branching and Merging' (created on 26 Feb 2019 by Waseema)
- merged to idea 'Branching ' on 08 Mar 2019 15:40:33 by Ângela Dinis

Yes there are ways to achieve this in the existing outsystems world but an explicit option/functionality for this would be helpful indeed. 

Cheers.



This comment was:
- originally posted on idea 'Code base Branching and Merging' (created on 26 Feb 2019 by Waseema)
- merged to idea 'Branching ' on 08 Mar 2019 15:40:33 by Ângela Dinis

Hi Wasemaa,
Just to let you know that there is the following similar idea: https://www.outsystems.com/ideas/160/branching

I believe that shares the same concern as yours. Do you agree? Maybe should be merged.



This comment was:
- originally posted on idea 'Code base Branching and Merging' (created on 26 Feb 2019 by Waseema)
- merged to idea 'Branching ' on 08 Mar 2019 15:40:33 by Ângela Dinis

Hello Wasemaa

I also agree with Daniel propose of merge

Regards



This comment was:
- originally posted on idea 'Code base Branching and Merging' (created on 26 Feb 2019 by Waseema)
- merged to idea 'Branching ' on 08 Mar 2019 15:40:33 by Ângela Dinis

It's been 9 years and this is still "On our radar", when working in bigger teams branching (and using personal environments) is essential for developers to refactor big chunks of code without impacting the rest of the team.

2019-10-22 12-59-37
Mark Burns

Hi Joey and others that have been active on this forum thread - 

We will be introducing the first version of an OutSystems branching capability this year.  The new capability will allow developers to create branches and test their code in isolation as well as the ability for multiple developers to collaborate. The product management team has been actively engaging our customers to collaborate (pun intended) on development of this capability.  We will be introducing the new capability to our customer base via a high-touch Early Access Program starting in July.  If you are interested in learning more, please let us know and we will actively reach out to you.

Best regards, Mark from OutSystems



I'd love to join this Early Acccess Program :)

Show!

We are specting this a lot!

We will test and adopt as soon as is present on EAP.

Great news! We are waiting for this also, it will help working with multiple people on different changes in the same applications a lot! 

In fact, it's a very good new that this feature will be implemented soon. I am waiting !!

Very interesting to read, as up to now OutSystems was very opinionated about why they did not implement more tradicional branching functionality.

+1
I was going to suggest this but seems like the feature already got its long-time fans!

It's really a pain having to "freeze" the development and depoly when a dev needs to implement something new.


+1 That is already available in the EAP?

Hi,

There is a private EAP.

Branch does not work on Personal Environments.

It also does not work on OutSystems 10 infrastructures.

You may ask to participate by sending an email to branching@outsystems.com.


Thanks

Will branching work for multi-tenant applications? The private area didn't.

Hi, any update on this?

Hi,

Please let us know expected timeline for this feature to be available.

Thanks

Ravi

Merged this idea with 'Module branch' (created on 02 Mar 2020 21:10:00 by Massimo Giordan)

Inherit the GIT branch concept at a module level letting team have different versions of the same module but being able to select a "master" one.

The master will be the one valid for a solution publish while the other (most likely just another DEV version) could contain feature not ready to be released.



This comment was:
- originally posted on idea 'Module branch' (created on 02 Mar 2020 by Massimo Giordan)
- merged to idea 'Branching ' on 01 May 2020 13:21:41 by Daniël Kuhlmann
Merged this idea with 'Create/Select application version in Service Studio' (created on 08 Jul 2020 14:29:49 by Josh Herron)

In service studio it would be useful to have the option to select an application version that you want to work on.   

For example if application version 1.5 and that work is complete and waiting for a production release we have to be careful with any new work because any changes could accidentally be included in the V1.5 when the application is migrated in Lifetime.  

 If we had a way to easily create and select a version 1.6 in service studio (essentially a branch from V1.5) we could work on the next release with less worry about an accidental release of logic that is incomplete.



This comment was:
- originally posted on idea 'Create/Select application version in Service Studio' (created on 08 Jul 2020 by Josh Herron)
- merged to idea 'Branching ' on 09 Jul 2020 03:41:33 by Hanno

Hi,

Is the branching feature still in EAP?


Thanks,

Leandro.

Hi Leandro,


The branching EAP has ended, and the team is exploring next steps based on the feedback and results of the EAP. We have no dates to communicate at the moment.

Changed the status to
Not right now

Results of Branching EAP being evaluated and next steps analyzed.

Merged this idea with 'Group several commits into one checkin and allow external task URL?' (created on 15 Sep 2020 15:14:49 by Burt Wang)

Is it possible to group a list of commits together and allow to input a jira/Azure DevOps work item?


Further, can we not to commit to the public space but to my own space first, until I merge to public space as a checkin/Pull Request?



This comment was:
- originally posted on idea 'Group several commits into one checkin and allow external task URL?' (created on 15 Sep 2020 by Burt Wang)
- merged to idea 'Branching' on 18 Sep 2020 13:29:07 by Justin James
Merged this idea with 'Developer Branching system to publish code.' (created on 24 Sep 2020 07:53:09 by Hemlata)

It is very likely that 3-4 developer work together on large scale mobile applications. It is very difficult for each one to publish every time they do changes, because if others are also publishing you will get merge requests in between.
I would like to suggest if we add some branching concept like git then it will be beneficial for every one. Each one will work on their branch and publish their code to check and can merge all-together in the end.



This comment was:
- originally posted on idea 'Developer Branching system to publish code.' (created on 24 Sep 2020 by Hemlata)
- merged to idea 'Branching' on 24 Sep 2020 16:08:10 by Daniël Kuhlmann

Biggest developer team issue with the platform; every compile is a live application change.  There needs to be local OutSystem PAAS on the developers machine or a hosted devops stage per developer assigned on the application.  Depending on the developers coding style, sometimes you can never get your code checked in, because you need to perform a merge and checking it in again only to find that you have remerge your code do to yet another change by one of your team members.



This comment was:
- originally posted on idea 'Developer Branching system to publish code.' (created on 24 Sep 2020 by Hemlata)
- merged to idea 'Branching' on 24 Sep 2020 16:08:10 by Daniël Kuhlmann

With proper segmentation of applications into modules, and segmenation of screens into blocks, many of these challenges can be avoided. It's a different style of developing, but I quite appreciate the lack of branching, as that only creates a merge headache further down the line.

Developers shouldn't be building on a live platform, it should be a shared development platform, with publishing to pre-prod and production platforms a separate process via Lifetime or a CI/CD pipeline.

Some method of check-out, or warning that someone is editing a screen/block/action would be desirable.



This comment was:
- originally posted on idea 'Developer Branching system to publish code.' (created on 24 Sep 2020 by Hemlata)
- merged to idea 'Branching' on 24 Sep 2020 16:08:10 by Daniël Kuhlmann
Merged this idea with 'Code base branch' (created on 12 May 2021 10:33:39 by $hri)

Hi Team,


There should be provision to create branch for a code currently published on development environment, so that, that branch can be used for testing and directly publishing to higher environments, instead of publishing the code to higher environment and then testing it.

This will facilitate the developers to continue there code in development environment initial code base and if required any code changes can be done in the branched version.


Thanks




This comment was:
- originally posted on idea 'Code base branch' (created on 12 May 2021 by $hri)
- merged to idea 'Branching' on 13 May 2021 04:07:56 by Justin James

New to OutSystems, and in this situation a possibility to branch would be much appreciated.
I don't really understand why outsystem is against it? Is there any links and videos that describe this? Would be much appreciated if someone could post it here, since it seems to be a lot of people FOR branching.


TIA! 

Merged this idea with 'Get the localhost of the code or branching of code in Dev environment to work with parallel version.' (created on 20 Dec 2022 05:59:32 by Jeffin James)

We need to work on a different version of code in same environment. Like the Product is in Live and the maintenance is happening in Dev to fix the Prod issues and the same time we need to work on the improvement for the app in same environment. 

Changed the category to
Collaboration

I believe that this feature would be a valuable addition to the platform, as it would allow developers to manage complex codebases more effectively.

With branching, developers would be able to create different versions of their codebase and work on them separately. This would make it easier to manage multiple features or bug fixes without disrupting other parts of the application.

I 100% agree with you. Rojo

This is simply becoming a must have with ODC. The feature toggle approach only goes so far. And cloning is also not the most efficient way of working.


Branching is the only real solution for a smooth collaboration, and now that hot-fixes are out of the picture on non-dev environments for ODC, this seems like the straight answer to it. I don't see how teams would be able to to work efficiently on projects that have a non-continuous delivery model but for which development is ongoing for the next version after a release.

The effort to isolate functionalities with feature toggles could become quite huge. Reverting to a previous version, fixing the issue, deploying and then going back to the latest version with the latest features and manually replicating the fix (if still applicable) is also a very cumbersome way of working.

Having a main branch with 1 branch per developer while working on the same App would definitely make lives easier and most probably solve the hot fixing challenge in ODC at the same time.

100% Agree with you Gregory

I've been read some coments and I admit that topic is very hot... 
But I have an opinion about Branch in OutSystems..

I understand that OutSystems should have Branch with ramification.

If not possible to have only 1 option about branch. 

So could then have 2 way (Actual OutSystems branch and branch with ramification) options and the company chose wich way do ?

Another question.. How are the status of this topic ?

O11 will stay around, and OutSystems does improve the platform, but even on the ODC platform they did not change too much and still use Trunk based branching, with only a nice addition that applications can selectively use released libraries.

So what is the status of this topic, I would say dead. No version control changes to be expected in O11.

Merged this idea with 'Add Branching Option' (created on 29 Aug 2024 10:47:54 by Kerollos Adel)

add Branching to allow branching the code with no need to clone and merge manually 

Branching was already an idea multiple years ago, it has been marked 'Not right now'.

https://www.outsystems.com/ideas/160/branching/

And there are no signs it will be a feature in either O11 and/or ODC.

"You broke my heart like a software update that keeps getting postponed. Every time you say 'Not right now,' I feel like the 'Branching' feature in OutSystems, waiting for years and still no sign of release!" 😅


There will be no branching feature in OutSystems. OutSystems uses Trunk based branching, they always have been pretty vocal about it. Anyhow, the idea already exists like from the beginning of OutSystems, no need to double post it. I now need to merge it.