Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. Design and Architecture
  4. Multiple Versions Of Application

Multiple Versions Of Application

Scheduled Pinned Locked Moved Design and Architecture
helpquestion
9 Posts 5 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Matt U
    wrote on last edited by
    #1

    Hello, CP, and good afternoon. I'm not sure if this is the correct forum but it seemed like the best fit. Please redirect if not. Anyhow, I've been thinking a lot about this lately. Where I work, we have various partners who we work with for software solutions. Many of them create custom builds of their existing software to fit our needs. How would one go about creating customized builds of software to fit specific needs without modifying the entire solution? Is this implemented via source control, duplicating the project or what?

    djj55: Nice but may have a permission problem Pete O'Hanlon: He has my permission to run it.

    P J E 3 Replies Last reply
    0
    • M Matt U

      Hello, CP, and good afternoon. I'm not sure if this is the correct forum but it seemed like the best fit. Please redirect if not. Anyhow, I've been thinking a lot about this lately. Where I work, we have various partners who we work with for software solutions. Many of them create custom builds of their existing software to fit our needs. How would one go about creating customized builds of software to fit specific needs without modifying the entire solution? Is this implemented via source control, duplicating the project or what?

      djj55: Nice but may have a permission problem Pete O'Hanlon: He has my permission to run it.

      P Offline
      P Offline
      Pete OHanlon
      wrote on last edited by
      #2

      This is the perfect place for this question, so don't worry about it. To answer your question, for custom builds for clients, we use source control to manage this. Basically, we have a branching strategy where these clients are branched off our main development trunk. Appropriate changes from the trunk can be merged down to those branches as appropriate. The process is a lot more involved than this, but that's the basic level (because we have branches off branches, to deal with test phases, etc, and release branches - it all sounds horrendously complicated, but our CI procedures make it a complete breeze).

      *pre-emptive celebratory nipple tassle jiggle* - Sean Ewington

      "Mind bleach! Send me mind bleach!" - Nagy Vilmos

      CodeStash - Online Snippet Management | My blog | MoXAML PowerToys | Mole 2010 - debugging made easier

      M 1 Reply Last reply
      0
      • M Matt U

        Hello, CP, and good afternoon. I'm not sure if this is the correct forum but it seemed like the best fit. Please redirect if not. Anyhow, I've been thinking a lot about this lately. Where I work, we have various partners who we work with for software solutions. Many of them create custom builds of their existing software to fit our needs. How would one go about creating customized builds of software to fit specific needs without modifying the entire solution? Is this implemented via source control, duplicating the project or what?

        djj55: Nice but may have a permission problem Pete O'Hanlon: He has my permission to run it.

        J Offline
        J Offline
        jschell
        wrote on last edited by
        #3

        Depends on what the needs are. Some possibilities exist with many variations within each. - Create abstraction layers. Customer specific code replaces the default implementation. - Run time meta data. The application functions differently based on data that drives the application. This can include but is not limited to run time scripting. - Distinct application layers. A customer choice replaces a default layer. - Customer overlays. Customer software is created which is part of a build step which either replaces source or binary sources with customer specific idioms. - Extract customer choices and push them back into the main code base.

        D 2 Replies Last reply
        0
        • M Matt U

          Hello, CP, and good afternoon. I'm not sure if this is the correct forum but it seemed like the best fit. Please redirect if not. Anyhow, I've been thinking a lot about this lately. Where I work, we have various partners who we work with for software solutions. Many of them create custom builds of their existing software to fit our needs. How would one go about creating customized builds of software to fit specific needs without modifying the entire solution? Is this implemented via source control, duplicating the project or what?

          djj55: Nice but may have a permission problem Pete O'Hanlon: He has my permission to run it.

          E Offline
          E Offline
          Expert Coming
          wrote on last edited by
          #4

          Source control is by far the easiest way to do this. It gives several benefits, to name a few: Reverse Integration (fix a bug in one, move it everywhere) Single point of backup (Developers don't have all the code on their machine) Versioning Simple version differencing Many more. Once you start using something like TFS you'll never go back.

          The best way to accelerate a Macintosh is at 9.8m/sec² - Marcus Dolengo

          J 1 Reply Last reply
          0
          • P Pete OHanlon

            This is the perfect place for this question, so don't worry about it. To answer your question, for custom builds for clients, we use source control to manage this. Basically, we have a branching strategy where these clients are branched off our main development trunk. Appropriate changes from the trunk can be merged down to those branches as appropriate. The process is a lot more involved than this, but that's the basic level (because we have branches off branches, to deal with test phases, etc, and release branches - it all sounds horrendously complicated, but our CI procedures make it a complete breeze).

            *pre-emptive celebratory nipple tassle jiggle* - Sean Ewington

            "Mind bleach! Send me mind bleach!" - Nagy Vilmos

            CodeStash - Online Snippet Management | My blog | MoXAML PowerToys | Mole 2010 - debugging made easier

            M Offline
            M Offline
            Matt U
            wrote on last edited by
            #5

            I understand. It does indeed sound complicated but thinking enough about it, I can see how it really isn't so painful. Haha. Thank you all for the input! I use Git for source control, although I am a standalone developer, both independently at home and at work. I'm the only developer. But I've read about the many benefits of source control, even if you're a single developer. And I have seen truth to it all. Haha. But I'll look into branching more, I've seen the term in Git, just never took the time to learn. Thanks again!

            djj55: Nice but may have a permission problem Pete O'Hanlon: He has my permission to run it.

            1 Reply Last reply
            0
            • E Expert Coming

              Source control is by far the easiest way to do this. It gives several benefits, to name a few: Reverse Integration (fix a bug in one, move it everywhere) Single point of backup (Developers don't have all the code on their machine) Versioning Simple version differencing Many more. Once you start using something like TFS you'll never go back.

              The best way to accelerate a Macintosh is at 9.8m/sec² - Marcus Dolengo

              J Offline
              J Offline
              jschell
              wrote on last edited by
              #6

              Expert Coming wrote:

              Source control is by far the easiest way to do this

              That doesn't seem to have anything to do with the OP. The OP has a single product to which customizations must be done to support different customers. They are already aware of how to do that using completely different code bases (which is the only way in which source control can have an impact.) What they want is ideas on how to do that differently.

              E 1 Reply Last reply
              0
              • J jschell

                Expert Coming wrote:

                Source control is by far the easiest way to do this

                That doesn't seem to have anything to do with the OP. The OP has a single product to which customizations must be done to support different customers. They are already aware of how to do that using completely different code bases (which is the only way in which source control can have an impact.) What they want is ideas on how to do that differently.

                E Offline
                E Offline
                Expert Coming
                wrote on last edited by
                #7

                The last sentence in the OP is what I was replying to. He asked if this is usually done in SCC, to which my response was that it is the easiest way. I did however fail to provide specifics which I should have done.

                The best way to accelerate a Macintosh is at 9.8m/sec² - Marcus Dolengo

                1 Reply Last reply
                0
                • J jschell

                  Depends on what the needs are. Some possibilities exist with many variations within each. - Create abstraction layers. Customer specific code replaces the default implementation. - Run time meta data. The application functions differently based on data that drives the application. This can include but is not limited to run time scripting. - Distinct application layers. A customer choice replaces a default layer. - Customer overlays. Customer software is created which is part of a build step which either replaces source or binary sources with customer specific idioms. - Extract customer choices and push them back into the main code base.

                  D Offline
                  D Offline
                  dojohansen
                  wrote on last edited by
                  #8

                  A custom build is necessarily a different BUILD, so things like run-time metadata is out the window. :)

                  1 Reply Last reply
                  0
                  • J jschell

                    Depends on what the needs are. Some possibilities exist with many variations within each. - Create abstraction layers. Customer specific code replaces the default implementation. - Run time meta data. The application functions differently based on data that drives the application. This can include but is not limited to run time scripting. - Distinct application layers. A customer choice replaces a default layer. - Customer overlays. Customer software is created which is part of a build step which either replaces source or binary sources with customer specific idioms. - Extract customer choices and push them back into the main code base.

                    D Offline
                    D Offline
                    dojohansen
                    wrote on last edited by
                    #9

                    A custom BUILD doesn't have much to do with configurability (run-time metadata as you call it). All of this is really architecture considerations to have in mind if you want to make it easy to create and deploy custom builds. None of it really addresses how to create custom builds. That is all about managing the code, and the short answer is "branches".

                    It depends. It *always* depends.

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • World
                    • Users
                    • Groups