So, at the urging of Michael Koziarski and many others, I decided to try putting an entire Rails environment into svn, rather than just the Rails app itself. The developers use a mix of Mac OS X, Windows XP, and Linux workstations to develop on; the production box is Linux. Within the first hour of working on a new app, I realize I have dependencies on: - Postgres adapter (which means the native one for Linux, and postgres- pr) - libiconv on Windows, since Windows doesn''t have it, and neither does the one-click Ruby installer - Several gems, including rails itself and the salted login generator. So, CM experts, what''s the best way to deal with a heterogeneous environment for both development and production, without a dedicated CM staff? 1. Don''t bring libraries into svn if you''re not modifying their source. Just document "install requirements", and keep THAT in svn. Developers and the production team manually keep dependencies up-to-date. 2. Create an initial install script. For each tag, create an "update" script. Keep those scripts in svn. Developers and the production team try to stay out of its way and not install conflicting versions, so each update starts and ends with a known config. 3. Do something similar to #2 with autoconf or the like. 4. Bring dependencies such as gems and libraries into svn; install them into a /vendor directory using "gem install --install-dir" and the like. Have a single platform-dependent script that will set appropriate runtime paths, and make sure those come before any system paths. Keep as many copies of the libraries around as you have scripts. 5. Bring only non-gem libraries into svn, as #4. Make your app a gem itself, and use the gemspec to depend on other gems. 6. Something else. -- Jay Levitt | Wellesley, MA | I feel calm. I feel ready. I can only Faster: jay at jay dot fm | conclude that''s because I don''t have a http://www.jay.fm | full grasp of the situation. - Mark Adler
I''m not a "CM Expert" by any means, but I can offer you a little advice based on almost a dozen years of usage of ClearCase in a mixed UNIX/Linux and Windows environment: 1. Define your processes first, and make sure you have buy-in (and *stay-in*!!) from the developers and management. I''ve seen lots of projects die because tools and processes were forced on the developers by management, and just as many die because "agile" or "extreme" became synonymous with "chaotic", or because enthusiastic people confused "can do" with "must do". 2. I assume, from what you''ve written, that your chosen CM system is svn, about which I know next to nothing. To be fair, I know next to nothing about CVS either; I work in a ClearCase shop. :) And I also assume it''s a Rails project. I''d recommend using a communications tool like -- pregnant pause -- BaseCamp, in addition to CM. It''s better to over-communicate and over-record-keep than the other way around. In short, *everything* that *can* change should be subject to change control. And ... speaking as a "manager", I''d look *real* hard at what the costs are of having a mixed network of Mac OS X, Windows and Linux workstations for developers to develop Linux applications. If your target application must support all three as *clients*, obviously you need to have them around for *testing*. As you''re finding, though, there is a cost to that. If indeed your application is targeted at Mac OS X, Windows and Linux clients, I''d consider going to your marketing folks and getting the requirements to support Mac OS X and Linux clients dropped from the first release and focus on Windows clients. Mac OS X clients and Linux clients aren''t going away, but the market share on the desktop of Windows is overwhelming. Jay Levitt wrote:>So, at the urging of Michael Koziarski and many others, I decided to try >putting an entire Rails environment into svn, rather than just the Rails >app itself. The developers use a mix of Mac OS X, Windows XP, and Linux >workstations to develop on; the production box is Linux. > >Within the first hour of working on a new app, I realize I have >dependencies on: >- Postgres adapter (which means the native one for Linux, and postgres- >pr) >- libiconv on Windows, since Windows doesn''t have it, and neither does >the one-click Ruby installer >- Several gems, including rails itself and the salted login generator. > >So, CM experts, what''s the best way to deal with a heterogeneous >environment for both development and production, without a dedicated CM >staff? > >1. Don''t bring libraries into svn if you''re not modifying their source. >Just document "install requirements", and keep THAT in svn. Developers >and the production team manually keep dependencies up-to-date. > >2. Create an initial install script. For each tag, create an "update" >script. Keep those scripts in svn. Developers and the production team >try to stay out of its way and not install conflicting versions, so each >update starts and ends with a known config. > >3. Do something similar to #2 with autoconf or the like. > >4. Bring dependencies such as gems and libraries into svn; install them >into a /vendor directory using "gem install --install-dir" and the like. >Have a single platform-dependent script that will set appropriate >runtime paths, and make sure those come before any system paths. Keep >as many copies of the libraries around as you have scripts. > >5. Bring only non-gem libraries into svn, as #4. Make your app a gem >itself, and use the gemspec to depend on other gems. > >6. Something else. > > > >-- M. Edward (Ed) Borasky http://www.borasky-research.net/ http://borasky-research.blogspot.com/ http://pdxneurosemantics.com http://pdx-sales-coach.com http://algocompsynth.com
In article <431CB371.2070706-2WxwdZd67h7R7s880joybQ@public.gmane.org>, znmeb- 2WxwdZd67h7R7s880joybQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org says...> I''m not a "CM Expert" by any means, but I can offer you a little advice > based on almost a dozen years of usage of ClearCase in a mixed > UNIX/Linux and Windows environment:Thanks. All excellent advice, but not applicable here. I''m in an odd position; I''ve done some really high-powered server development and management in the past, but needed a break. So I went back to get my B.A., and ended up in charge of my college''s nascient Internet radio station. We''re going to need custom software, so Rails is a great fit. In a way, this is my first new application in 13 years... computers sure have advanced, but I''m confused about the cupholders. So, that said, there''s no management to speak of, no marketing folks, and therefore no buy-in required (but correspondingly little budget for the toolchain). Developers are students, and so we have to develop on whatever hardware they have. It''s a Mac-based school, and a Powerbook is part of the tuition, but that''s an ergonomically harsh dev environment, so many of us use our desktops instead. Our office, once it''s built, will have an iMac G5, shared between developers and office staff. I have to expect most development will happen at home. And, like any college, students come and go; turnover is high, and it''s important to get new developers up to speed quickly. Originally, I''d tried keeping all development on our one Linux development server, and doing everything via editors with built-in SFTP. But that model just doesn''t work well for the quick-edit-and-test style of development encouraged by agile programming and TDD; loading and searching is slow, most editors don''t support SFTP, etc.> In short, *everything* that *can* change should be subject to change > control. And ... speaking as a "manager", I''d look *real* hard at what > the costs are of having a mixed network of Mac OS X, Windows and Linux > workstations for developers to develop Linux applications.Yep. My instinct matches yours; I want to throw every single dependency into source management, so I can take a blank machine, type "svn checkout radio", and get whatever''s needed. The problem, of course, is that this creates a "gated community" for the app, contravening all the other library and packaging conventions that exist. In a sense, it''s the same problem we''ve always had with library versioning, shared vs. static, "DLL hell", updates vs. stability, etc. I''ve just always been able to let the CM group take care of it, and we were always running one application per box anyway, so there was no "system" vs "application" library. -- Jay Levitt | Wellesley, MA | I feel calm. I feel ready. I can only Faster: jay at jay dot fm | conclude that''s because I don''t have a http://www.jay.fm | full grasp of the situation. - Mark Adler
Do you have to have the whole environment in svn, instead of just the rail app? Why not stick to a version of rails and just put the app up in svn, no problem then with different dev platforms. Kris. Jay Levitt wrote:>In article <431CB371.2070706-2WxwdZd67h7R7s880joybQ@public.gmane.org>, znmeb- >2WxwdZd67h7R7s880joybQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org says... > > >>I''m not a "CM Expert" by any means, but I can offer you a little advice >>based on almost a dozen years of usage of ClearCase in a mixed >>UNIX/Linux and Windows environment: >> >> > >Thanks. All excellent advice, but not applicable here. I''m in an odd >position; I''ve done some really high-powered server development and >management in the past, but needed a break. So I went back to get my >B.A., and ended up in charge of my college''s nascient Internet radio >station. We''re going to need custom software, so Rails is a great fit. >In a way, this is my first new application in 13 years... computers sure >have advanced, but I''m confused about the cupholders. > >So, that said, there''s no management to speak of, no marketing folks, >and therefore no buy-in required (but correspondingly little budget for >the toolchain). Developers are students, and so we have to develop on >whatever hardware they have. It''s a Mac-based school, and a Powerbook >is part of the tuition, but that''s an ergonomically harsh dev >environment, so many of us use our desktops instead. Our office, once >it''s built, will have an iMac G5, shared between developers and office >staff. I have to expect most development will happen at home. And, >like any college, students come and go; turnover is high, and it''s >important to get new developers up to speed quickly. > >Originally, I''d tried keeping all development on our one Linux >development server, and doing everything via editors with built-in SFTP. >But that model just doesn''t work well for the quick-edit-and-test style >of development encouraged by agile programming and TDD; loading and >searching is slow, most editors don''t support SFTP, etc. > > > >>In short, *everything* that *can* change should be subject to change >>control. And ... speaking as a "manager", I''d look *real* hard at what >>the costs are of having a mixed network of Mac OS X, Windows and Linux >>workstations for developers to develop Linux applications. >> >> > >Yep. My instinct matches yours; I want to throw every single dependency >into source management, so I can take a blank machine, type "svn >checkout radio", and get whatever''s needed. The problem, of course, is >that this creates a "gated community" for the app, contravening all the >other library and packaging conventions that exist. > >In a sense, it''s the same problem we''ve always had with library >versioning, shared vs. static, "DLL hell", updates vs. stability, etc. >I''ve just always been able to let the CM group take care of it, and we >were always running one application per box anyway, so there was no >"system" vs "application" library. > > >-- Interkonect Services UK Ltd. Boundary House Main Street Hoveringham Nottingham NG147 JR web: www.interkonect.com tel: 0115 9663696 fax: 0115 9663696
On 9/6/05, Kris Leech <krisleech-BSIDdvZawMx9qp0gCGiW7Q@public.gmane.org> wrote:> Do you have to have the whole environment in svn, instead of just the > rail app? > Why not stick to a version of rails and just put the app up in svn, no > problem then with different dev platforms.Yeah, in such a mixed env, I''d just keep the rails up in svn, and then provide instructions on a wiki on how to properly setup the development env (postgres, etc). If you decide to keep the entire env in svn, let me know how that goes. It must be tricky if you have more than one platform. Joe> Jay Levitt wrote: > > >In article <431CB371.2070706-2WxwdZd67h7R7s880joybQ@public.gmane.org>, znmeb- > >2WxwdZd67h7R7s880joybQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org says... > > > > > >>I''m not a "CM Expert" by any means, but I can offer you a little advice > >>based on almost a dozen years of usage of ClearCase in a mixed > >>UNIX/Linux and Windows environment: > >> > >> > > > >Thanks. All excellent advice, but not applicable here. I''m in an odd > >position; I''ve done some really high-powered server development and > >management in the past, but needed a break. So I went back to get my > >B.A., and ended up in charge of my college''s nascient Internet radio > >station. We''re going to need custom software, so Rails is a great fit. > >In a way, this is my first new application in 13 years... computers sure > >have advanced, but I''m confused about the cupholders. > > > >So, that said, there''s no management to speak of, no marketing folks, > >and therefore no buy-in required (but correspondingly little budget for > >the toolchain). Developers are students, and so we have to develop on > >whatever hardware they have. It''s a Mac-based school, and a Powerbook > >is part of the tuition, but that''s an ergonomically harsh dev > >environment, so many of us use our desktops instead. Our office, once > >it''s built, will have an iMac G5, shared between developers and office > >staff. I have to expect most development will happen at home. And, > >like any college, students come and go; turnover is high, and it''s > >important to get new developers up to speed quickly. > > > >Originally, I''d tried keeping all development on our one Linux > >development server, and doing everything via editors with built-in SFTP. > >But that model just doesn''t work well for the quick-edit-and-test style > >of development encouraged by agile programming and TDD; loading and > >searching is slow, most editors don''t support SFTP, etc. > > > > > > > >>In short, *everything* that *can* change should be subject to change > >>control. And ... speaking as a "manager", I''d look *real* hard at what > >>the costs are of having a mixed network of Mac OS X, Windows and Linux > >>workstations for developers to develop Linux applications. > >> > >> > > > >Yep. My instinct matches yours; I want to throw every single dependency > >into source management, so I can take a blank machine, type "svn > >checkout radio", and get whatever''s needed. The problem, of course, is > >that this creates a "gated community" for the app, contravening all the > >other library and packaging conventions that exist. > > > >In a sense, it''s the same problem we''ve always had with library > >versioning, shared vs. static, "DLL hell", updates vs. stability, etc. > >I''ve just always been able to let the CM group take care of it, and we > >were always running one application per box anyway, so there was no > >"system" vs "application" library. > > > > > > > > > -- > Interkonect Services UK Ltd. > Boundary House > Main Street > Hoveringham > Nottingham > NG147 JR > > web: www.interkonect.com > tel: 0115 9663696 > fax: 0115 9663696 > > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails >
In article <c715e64050906103522dc5dcb-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>, joevandyk- Re5JQEeQqe8AvxtiuMwx3w-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org says...> Yeah, in such a mixed env, I''d just keep the rails up in svn, and then > provide instructions on a wiki on how to properly setup the > development env (postgres, etc). > > If you decide to keep the entire env in svn, let me know how that > goes. It must be tricky if you have more than one platform.I should think so... I saw some "rails packaging" goals for 1.0 in Trac, so maybe that will help someday. I''d love to hear Michael K''s opinion, but looks like he''s on vacation... -- Jay Levitt | Wellesley, MA | I feel calm. I feel ready. I can only Faster: jay at jay dot fm | conclude that''s because I don''t have a http://www.jay.fm | full grasp of the situation. - Mark Adler