List

How to Find Valuable Gems

How to Find Valuable Gems

by Nathan Bibler

In the video titled "How to Find Valuable Gems" by Nathan Bibler at Rails Conf 2012, the main focus is on guiding beginner developers on how to effectively search for and evaluate RubyGems, essential libraries for Ruby applications. The discussion highlights the approximately 38,000 gems available on RubyGems.org and the challenges in identifying the most suitable libraries for specific projects.

Key Points Discussed:

  • Finding Gems: The process of locating appropriate gems can seem daunting. Users often start by simply searching on RubyGems.org, which lacks effective categorization, making it hard for beginners to know which gem to use.
  • Community Resources: The speaker encourages leveraging community resources such as Ruby 5, Ruby Flow, and blog posts for helpful insights and recommendations about popular and new gems.
  • Evaluating Gems: A significant portion of the talk focuses on how to assess the value of a gem:
    • Documentation: A well-documented gem is likely to show that the maintainer cares about the user experience.
    • Source Code Access: Being able to view a gem's source code can provide insight into its quality and potential issues.
    • Dependencies: It's crucial to check what other libraries a gem depends on, as this impacts maintainability and potential conflicts in applications.
    • Issue Tracking: Assessing the handling of issues on platforms like GitHub helps gauge the active maintenance and responsiveness of the gem's maintainer.
    • Versioning: Understanding semantic versioning is vital. A proper versioning scheme can indicate how updates may affect applications using the gem.
  • Practical Examples: The talk references various gems such as Cucumber for testing and discusses the implications of using low-utility gems like those to retrieve a list of U.S. states, suggesting that sometimes it's more pragmatic to write simple functions than to incorporate external dependencies for trivial tasks.
  • Maintainers' Reputation: The maintainers' commitment to their project is highlighted, stressing that active project maintenance is a key factor in deciding whether to use a gem.

Conclusion:

Bibler wraps up by emphasizing the importance of a thoughtful evaluation process when it comes to selecting gems. He encourages viewers to leverage community insight and take the time to understand the gems they're considering for their projects, ultimately advocating for wise dependency management in software development.

There's no need to reinvent the wheel. There are over 30,000 RubyGems available on just RubyGems.org, alone. But with so many out there, it must be impossible to find the right one, right? In this talk we'll learn about some resources which help you find the right gems, as well as how to intelligently decide if a library is right for your project.

Help us caption & translate this video!

http://amara.org/v/FGiq/

Rails Conf 2012

00:00:24.750 alright so this is how to find valuable gems I'm dating fiddler I work for him
00:00:33.699 tickle in deluxe one of our products especially given a beginner track today
00:00:38.829 is good school or do training browser basic training or Ruby JavaScript for
00:00:45.489 and all that other stuff I also do something called 35 again mebbe labs
00:00:51.190 which is a five-minute twice a week podcast do it with Greg Pollock and a
00:00:57.039 handful of people anybody heard of any less curious code school Ruby five
00:01:07.310 progressively less all right so the reason I bring up 45 well kind of come
00:01:14.970 back on again during this talk but I would encourage you there if you are
00:01:20.280 interested there's a subscribe button itunes and RSS again will kind of circle
00:01:25.649 that on why i think that's important so this is the beginner truck so I'm kind
00:01:30.780 of tailoring this more toward an entry level so i thought i would kind of start
00:01:37.380 with the maybe gym but let's assume you're not know what hm is what rubygems
00:01:42.750 is so I'm not start there right ok so i
00:01:47.970 guess brief overview since we're all there somebody else's writing code for you that's great right that's means i
00:01:54.270 don't have to i'm a bit bored spend my time on whatever so now that kind of
00:02:01.500 said that the main focus of this caucus is really finding and evaluating kills
00:02:09.239 right the finding part i think by and large once you've recognized the
00:02:14.880 shortcomings is somewhat simple although we'll touch on some of those i bring
00:02:20.910 really want to focus on what i do to evaluate jones because i think that's interesting and different angelical
00:02:28.950 basically you guys are certainly will open this is a small audience if you
00:02:34.140 disagree or have questions long life let me know I'm go with that feedback is
00:02:39.180 good quiet not good alright so finding jumps groovy jobs since everybody here
00:02:46.410 notice what it is obviously this point it's hosted on rubygems.org if i
00:02:51.569 remember correctly this was a nicker anto push a while ago so rubygems.org
00:02:57.170 what's on there right now there's somewhere around 38,000 gems so by and
00:03:04.799 large anything is you might to do as bro we've been done the some
00:03:10.000 level if it's isolate a little small piece whatever even larger these are
00:03:15.910 generally free and open source by nature of rubygems is kind of open source at some level regardless of its on github
00:03:22.660 annoying so I kind of wanted to start you guys with an example because i want
00:03:28.209 to point out one of the flaws i guess upper b jones and that is let's say for
00:03:34.030 example is everybody know have some idea of testing rails but and people know
00:03:39.910 what acceptance testing is to some degree which is more like a I'm telling you what this thing is going to do you
00:03:45.910 agree we pre-release happy so if you were going to do acceptance testing and
00:03:51.040 rails does anybody have any ideas what you would do my name Jones so gem
00:04:01.989 install cucumber right then maybe let's say you don't like cucumber you could
00:04:08.079 try different flavor like a tournament you could go further down that list and tried spinach if you want something
00:04:15.519 that's a little bit more meaty you could go further and have a steak if you want
00:04:22.120 the best cut some people would say you might go for the blame for it all of
00:04:28.539 that makes no sense at all you might just have some sucking so this is actually I'm kind of to highlight the
00:04:35.080 issue and that is the way verga jumps are set up gem names are unique globally
00:04:41.070 and as a beginner it's basically impossible to know what Jim you're
00:04:48.580 looking for right so in this case we said we want acceptance testing and some guys in the bathtub obvious they've done
00:04:54.280 this before shouted cucumber right and we went down this chain and all of these are actually
00:04:59.950 libraries now that they're all together you can kind of see their names based on each other cards up it's a play on words
00:05:05.410 in some way look really as a as a new person to the community or the embark
00:05:10.600 there's no way to know that all right like I don't actually expect any of you to accept angry chris narvis so how do
00:05:19.030 you actually go about determining what gems are available what's new what's
00:05:24.670 popular what you should use in your project right so the first thing I would
00:05:30.040 say is news and peace right the community has a lot of news sources as I
00:05:36.610 mentioned earlier Ruby 5 for example is put on by us there's also review robes for be inside or be flow Ruby reddit a
00:05:44.230 million other things out there right clear and what's really nice about a lot
00:05:50.830 of these sources is not only are they attempting to stay current about what's out there and what's going on but they
00:05:56.800 also have archivist so in theory even go to some of these places and kind of search the history to see what's out
00:06:03.460 there and again this is because of poor naming for descriptions and things on
00:06:10.450 rubygems themselves so the biggest problem here though especially as a
00:06:15.700 beginner in a sexual person is this takes a lot of time right like you know
00:06:21.280 just any lecture put out a five minute podcast twice a week do I expect every baby's room to listen to us grant for 10
00:06:27.400 minutes a week now like I don't think that's realistic right you might and we appreciate if you do but I don't think
00:06:35.500 it's realistic and most people are just how do I get my job done right at the end of it like I've got this problem i
00:06:41.770 need my cell phone so you might think okay well you know i'm going to go Ruby gems which is the source they are the
00:06:48.100 canonical location we'll just review point whatever you wanna call it I'm just a search on there cuz i sell the
00:06:53.170 available search button right so look at an example here i wanted to point out which is if you go to Ruby gems that you
00:06:59.980 search for authentication for example like I won't have a user system in my application right search for
00:07:06.610 authentication seems realistic so these are all 30 results that come up there
00:07:11.740 obviously they're out the beige no we're on their PC the bus which is arguably the most popular most views Jeff there
00:07:19.240 is reference to it in one description of one gem has not revealed number three on
00:07:26.500 here is restful indication at 116 and if you actually look at the repository
00:07:31.720 poured on github the last commit was two years ago with a commit message of Glee
00:07:37.060 up so you know like it makes you kind of question that as a methodology of
00:07:43.870 finding your gems right for for some of the older people in community which arguably might not be many in here three
00:07:50.380 further down from that is this one which is full of indication and the description is a porta free Coulson's
00:07:56.980 rest of authentication which is this for Murph which is a framework that
00:08:02.950 basically no longer exists so searching rubygems.org isn't terribly useful and
00:08:11.500 some of those because the review no respect doesn't have a built-in self categorization like you can't say I'm
00:08:17.230 going to release cucumber and it is any test in a category or however else you don't think it's just not currently a
00:08:23.920 piece of the puzzle right so where else would you search more than likely you
00:08:29.170 would be going to Google right where everybody goes for everything so what do
00:08:34.450 you look for you know you look for blog posts you look for example code gists
00:08:40.930 rails casts stock exchange all actually really good resources and I would actually suggest
00:08:47.010 that if you do go to Google search for something you'll notice on the left-hand sidebar there's a little thing that says
00:08:52.460 customize the search I think our filter this search and if you can say like within the last month within the last
00:08:58.050 year right and that that alone fixes the ruby gemstone or carnal right let's
00:09:04.590 figure out to Europe yokomen on then ultimately since you know the issue here
00:09:11.250 is we're trying to fight things we really don't know anything about we have some concept of we need to do testing how do we go about testing Jim ruby gem
00:09:19.230 for testing right so here kicking you got this idea of a category or a group of things you're looking for so there's
00:09:24.420 actually a resource out there that I've heard mentioned it in a few different pots of this point briefly and that's three beautiful luxe and I would really
00:09:30.960 suggest this to especially beginners 3b jewel box was created by Christophe both
00:09:40.200 cell and we actually launched it and
00:09:47.940 released it like a day or two before rails not that you but the 2009 so this resource is basically about four years
00:09:54.839 old for this point all most of the day Ruby collapses can you driven it is
00:10:01.400 basically a categorization one point to pay any questions at this point yep the
00:10:07.860 Commission stock exchange overflow with other second students like support yes you know and stuck overflow
00:10:16.540 probably bring what was under oh yeah he said I mentioned the stack exchange thing was it was appointing I'll stack
00:10:22.389 overflow yeah I mean yeah I mean I think they're sacred of these stacked like
00:10:28.509 things where people those comments and responses there isn't one look good to you Jim see now now it's certainly not
00:10:34.540 dedicated gems there are some that focus on early but still reflect its community
00:10:41.259 driven they actually right now have somewhere around 160 categories of Jones right earlier we went there 38,000 Jones
00:10:48.160 growing on revisions it's like 160 categories they list the idea of a project and that as a gem that it's been
00:10:55.059 signed to a category so they've got about 1400 objects they do actually index the some degree or have a concept
00:11:01.300 of about 38,000 to basically all of them and 1700 get every post so they do have
00:11:07.389 reference and so idea or concept of a lot of pieces here and actually I want
00:11:14.679 to give you kind of an idea what it looks like just because I want to highlight the difference between like kind of where we started and what this
00:11:20.649 gives you so here is actually if you want to really get regular if you want to Ruby cool bucks and click on the
00:11:27.790 category step you can actually get a list of all of their categories right so this is just a small snippet snippet so
00:11:33.699 content management as a major category you might say I want to see ms right which is actually relatively popular so
00:11:39.910 here you can see content management that got refinery gradient locomotive AB de browser CMS and 15 more great and if you
00:11:48.339 actually look at it in one of those they will actually give you a ton of information about the jam they'll show
00:11:55.119 you if they know to get ever bought or they'll show you the last commit date there is kind of a score what's given to
00:12:00.220 it by the reflux there you know they'll category or order it by their score so
00:12:06.029 basically a lot of the things I'm going to kind of continue to talk about I'm going to valuate a job they kind of
00:12:11.589 built them so it's a really nice resource especially beginner so I'm kind
00:12:18.490 of talk about how to find gems a gut it looks like 15 minutes so I'm going to
00:12:26.020 kind of move along to the I'm assuming either via google like it helped search
00:12:31.089 some other means you have located in general you might not certainly any
00:12:40.270 questions um so what I'm going to say
00:12:45.940 here is kind of what I do a lot of ways or ideas I think about when I'm the
00:12:51.310 value in gym so your mileage may vary obviously I don't expect you to all of this is gospel but kind of think about
00:12:59.410 it basically how that's the very first thing I want mentioned is when you're looking at a gym that you want to
00:13:05.410 potentially using your app you should pay attention to help critical to hear app that general library is if it's
00:13:12.220 something that means my application is useless without it obviously need to be a lot more critical of what that is
00:13:19.050 implemented it's something that's like you know this
00:13:24.589 gives me a convenient way to add a twitter button it probably needs lawless right so so that's kind of where I want
00:13:34.130 to start is I think that's that's useful to have in your head when you actually start looking these jumps like how important do it how important to me is
00:13:40.490 it so this gym works correctly and doesn't somehow where code is similar left this next thing is actually kind of
00:13:50.300 from me boot up and that is people use there are a lot of gems out there thirty
00:13:55.670 eight thousand times right and they go from see full CMS systems to you know
00:14:01.459 help me put a twitter button on page to give me a list of states the united states like so you need to way to some
00:14:10.850 degree the usefulness of the jump it's like if you're looking for a gem to give you the 50 states the united states
00:14:16.370 that's probably not the greatest gem and the reason for that is whenever you pull
00:14:22.310 a gem at your application you're building in dependencies right you're building your pulling it out of people's code do you have to be someone concerned
00:14:27.950 about and if you are the developer you are now somewhat responsible for in somebody else's eyes right so so you
00:14:33.740 kind of walked away how useful it hm is to whether or not you should even use it
00:14:39.200 or if you want yourself basically in the case of it the United States date 50
00:14:44.300 states in those days it would probably be easier to you for you to just help I mean you could just copy pasted the animal files for example if they've got
00:14:50.930 a list copy you don't have to depend right nothing stopping us from now so
00:14:57.660 now they've got those totally I want to talk about the actual gems themselves so the very first thing I talked about and
00:15:03.329 this is so with regard to me boolean gem into my application and us covering gems
00:15:09.450 on 35 for example the very first thing we look for is documentation and there's
00:15:14.940 a lot of reasons for that but I think ultimately it can boil down to a very
00:15:21.120 simple question and that is does the altar boy cam care about you right have
00:15:27.329 they taken the time to try to see how somebody else using our software is
00:15:32.970 going to use their software if they thought about what my position is when I come to them basically right and that's
00:15:38.610 really telling actually because if somebody has has sat down and thought about my experience it's somewhat safe
00:15:46.260 to assume they've thought about my experience when they wrote the code itself right and that's huge thanks to
00:15:53.190 the end of the day I don't want to have to learn 17 different ways to do a million different things it would be really nice that they made it really
00:15:59.070 simple and said this is the interface this is why it's nice this is why you should use it this is White's better with something else here's an example
00:16:04.680 right that's awesome and that means a lot so once you've got stock mutation
00:16:11.040 the next thing is the source I don't think it's absolutely necessary but if you can get access to the source great I
00:16:17.399 mean pretty much all gems right now we're freeing up and source I would say almost elephant on get them it's just
00:16:23.250 awesome once you have access to the source you want to skim through it the
00:16:29.250 very least is it clear is it understandable to skim that they do same
00:16:34.380 things at the other days it's safe because you know when you use a ruby gem
00:16:41.760 and you included in your application we're in Ruby people can overwrite object like
00:16:48.360 you know you could you could override object to us and they can do whatever you want so it's nice to at least kind
00:16:53.790 of blow through the code and say are they doing anything obviously stupid here do I see a network connection going
00:16:59.370 to go through grace or a slightly no clue why they would do right so if I have actually seen people exploit that
00:17:05.280 but as possible right and the other day I'm responsible for it so it's worth looking at and while you have a source
00:17:12.299 open actually the next step that I would really suggest is look at the dependencies because you know just
00:17:19.470 because I'm requiring hm that gem can actually be dependent on 10 15 30 other
00:17:25.530 things so if I'm taking the time to actually investigate a jam the education and it's there now kind of all 10 of
00:17:31.350 their things in theory I should now be looking at all 10 of those other things right the idea is basically you're
00:17:36.990 marrying the entire family so you know you want to know you're in Los so here's
00:17:44.850 kind of a an example this isn't cute so this is a screenshot taken from ruby gem
00:17:50.100 itself when you view a jam on rubygems they kind of parsed through the jones back and help you get quick links to the
00:17:56.669 source if it's listed the home page of its listed things like that at the bottom they will kind of interpret the
00:18:03.900 gem flick for you and show you runtime dependencies which is developmentally people no difference because any
00:18:10.080 questions as far as the different sure so when you load a gem into a
00:18:20.179 production application you basically just do a standard gem install all it looks for is the runtime dependencies so
00:18:26.539 in the case of let's say a CMS that is
00:18:32.389 intended to be built on dreidels they won't most likely have a dependency on earth so if i did a gem install through
00:18:37.789 CMS it would assault through CMS and rails and alvarez dependencies for me if I don't know Marta right rubygems has an
00:18:46.759 idea of development dependencies which really hasn't been used greatly in the
00:18:52.220 community some people do them some people don't the idea there is you can actually do gem install I think dash
00:18:58.129 dash dash dash development in the name and it will install the runtime dependencies and the development dependencies and the idea there is that
00:19:04.249 you're going to be doing development locally for it so like maybe I want to got a new feature our spec in theory at
00:19:09.710 the gem install dev cars bit and it would give me so I can do that but in reality it
00:19:15.930 doesn't happen right so really all you pay attention to is there a kind of focus at this point so in this case this
00:19:26.580 isn't terrible if I glanced down this list active support is huge if you use real CBS's work right it's part of rails
00:19:32.460 board so that one doesn't concern me for example builder also doesn't concern me because it was also his identity of
00:19:38.700 rails ahi tunas rails Jason's rails kind of at this point so the only two real
00:19:43.890 questions there once you've done this a few times is ok what does money do and what is active utility rate at which
00:19:49.590 point of my technical answer you didn't see either how this gem uses it or what this junk look like because again this
00:19:56.460 is code that's going into my system they may have namespaces that collide the things i use great there's there's a lot
00:20:02.790 of issues potentially that could arise here speaking of issues the next thing I
00:20:08.610 look at generally if it's not get them are there issues and it's not looking
00:20:15.809 for our all of their issues taken care of because that's never gonna happen right it's a good popular project it
00:20:21.960 should have a community around it and people should be at the very least posting feature requests so you know you
00:20:30.240 look for their you look through the issue list view you know skin for significant problems like this grow up
00:20:37.650 rails 3 that's probably significant if it's still open right and it's good to
00:20:43.500 know and what I actually like to do which a little bit different from that is on github they actually different
00:20:50.820 tabs i know this is really small but i get if you go to get github issues they've got a tab for relevant issues
00:20:56.550 and that's have for collisions and on this particular project there were 18 open issues in theory none of which are
00:21:03.030 show-stopping 128 closed issues so i actually pay attention to that rape ship
00:21:08.450 because i like to get that sense of how active maintainer story right there
00:21:14.480 here's my next example 45 open issues 13 closed issues that's
00:21:22.470 significantly more concerned too right assuming that those are somewhat useful
00:21:27.720 issues at the very least i'd like to see activity on it right so further onto
00:21:34.110 this chain on the same github page they've got a display of Watchers and ports right so in this case this
00:21:41.250 particular project was got 45 issues has 1800 Watchers so people care about the project in theory 603 Forks the only
00:21:50.490 time people for things is when they need to fix it really or future requested or something if there's 45 open issues 13
00:21:58.679 flows and 600 words that's really scary right like that's not somebody I want me
00:22:06.620 yep I've got a situation recently where Jeff
00:22:13.149 or fix a lot of this usually you're trying to fix obscurus you have or if
00:22:21.389 you are charging fix an issue so you're using a major gem you realize there's a
00:22:28.269 problem with that you find a fork of that jam that in theory fixes it based on the commit messages I'm guessing with
00:22:34.809 computers right so I would say the careful there certainly depending your
00:22:43.539 product depending your application of social production application on a fork is dangerous in a lot of ways because
00:22:51.039 they are not the mainland thinner so the likelihood of them continuing to maintain that fort is very low if they
00:22:57.549 haven't opened a pull request upstream to try to get immersion or actively petitioning to get emerged it's going to
00:23:03.339 die right it's the main line that's what kept you going it is an active project so you know I think there are instances
00:23:10.539 where you can you know this is a little beyond skill book you could you know put a gate breath in Europe in your gemfile
00:23:16.869 and say I want this particular thing knowing that you know three weeks from now or four months from now or six
00:23:23.649 months from now person behind me isn't going to know why I did that right and so you can be very clear whether it's a
00:23:30.519 comment with it or a link to open issue right so it's somebody behind you to
00:23:36.070 notice when you're doing it that's important
00:23:42.590 this is arguably liner but I kick versioning seriously there's a idea out
00:23:48.590 there called semantic versioning and everybody know what Samantha version you do it doesn't hasn't heard of semantics
00:23:53.600 written a couple so there's URL pr7 Borg
00:23:58.850 it's really us you know basically codifying what it means to what version
00:24:03.890 numbers mean it's basically saying if you're a library author your version number should be at a minimum composed
00:24:09.830 of three numbers major minor patch and thinking something like you only rotate
00:24:16.669 a major release its backward compatible and anything you release ever is
00:24:22.610 backward compatible it's a major is even if you feel like it was a bug fix but the way fixed it changed your public API
00:24:29.059 the way somebody would interact with your library is a major of period and
00:24:34.090 the reason for that is actually bits which is a pessimist o'clock or there's
00:24:40.700 a million names where some of which are probably knock people pessimistic lock
00:24:46.399 is really a friend to be able to but only if authors actually respected is anybody here not now what pessimistic
00:24:52.610 luckiest good oh yeah out of live-in help I'll get that I'm curious so is
00:24:58.909 everybody heard of this kind of yes I
00:25:04.279 had a few I do any work these repeated please repeat it all right so let's say
00:25:11.200 you found a gem to use a semantic versioning the way you should put that into your bundle your gemfile is
00:25:18.160 basically like this so Jim super fantastic I'm going to use the best
00:25:24.250 missed o'clock at 2.12 this example so in theory you know you found a gem you love the current version is maybe 2.1
00:25:31.000 and you happen to know that they call the semantic versioning most of gems that do mention it in their reading
00:25:36.190 somewhere because it's useful information so I'm a pessimistic lost a 2.1 2.1 is the current what most people
00:25:43.750 would distort they do is greater than equal to 2.1 which is very very very dangerous to do a pessimistic lock is
00:25:51.309 only useful against December because in theory the major release is going to
00:25:58.299 change if it's backward compatible so as long as they call the semantic versioning this should never explode
00:26:03.789 right if I write my application and say it's pessimistically likes to point one I've filled my API into it living on my
00:26:10.150 application great doing a bundle update shouldn't make my application explode in
00:26:15.220 theory so a quick example if I said pessimistic locks 2.1 and the current
00:26:22.659 release this is obviously contrived is one point out will that get installed in my application anybody think that will
00:26:29.620 get installed good all right next example to point out so let's say I do a
00:26:36.700 bundle update and for whatever reason blend which is that the highest number if you can get is two point does that
00:26:41.980 meet the criteria no that does not because it's greater than got one right
00:26:47.500 so that's two dot one so let's say bundle or contacts rubygems true gem
00:26:53.020 says hey the current version is 2.1 just like I'm getting booted yes
00:26:59.410 right so tomorrow they realized 2.1 as a
00:27:04.550 plug-in so you know now or later they released 2.1 point one right it's like
00:27:09.830 I'm included yes alright then they go a
00:27:15.110 dot further for some reason right it's like I'm getting booted yes good 2.2
00:27:23.150 comes out do I get it yes three point
00:27:31.010 out comes out do I get it no I don't so it was pessimistic lock how does it work
00:27:37.340 does anybody have any question about this I heard some notes to doctors I was looking for right so the way pessimistic
00:27:51.050 lock works the easiest way to think about it is however deep you make your version number just put your finger over
00:27:58.130 the last dot and number and that's what you're about to write so I played it a pessimist o'clock at two dot one dot one
00:28:06.250 then I wouldn't get to it up to because that final dot one is variable but the
00:28:14.750 patch double dot one is not so what it does is it looks at how specific you are and goes one level up right so in this
00:28:21.590 case I'm finding myself to the 2x release if I said to 1x that I'm down to
00:28:28.790 two dot one which again if they're following December isn't useful that
00:28:33.980 someone major releases interior that were compatible okay so at the end
00:28:40.460 of the day all of this comes down to curation you know does from all of the
00:28:46.790 available information you have about a gem do you feel like the maintainer cares about you based on the issues
00:28:53.750 based on their responses the things do you feel like they care about their code do you think they care about you let's
00:28:59.380 ultimately kind of let it boil standing invite any questions to this point I know my time is basically up so I can
00:29:06.320 cut it here need for questions yep how
00:29:13.730 do you make the decision about whether copy
00:29:22.230 so my general feeling is based on the complexity so like in the case of
00:29:28.340 somebody made a view helper that lets me put a twitter button on the page I
00:29:35.090 thought that's not usually useful to me that's something I can do in five minutes so is it worth dependencies now
00:29:42.470 you know I would generally cut it about a half a day to a day of work and I
00:29:47.760 would also do some degree look at what is the potential variability on it like
00:29:52.799 is the static of change is something about this library do I anticipate changing regular and am I going to take
00:29:59.549 on responsibility for keeping up to date right it's like those kind of way line like if you're you know I made an
00:30:06.570 example earlier States I don't see the state's changing anytime soon if I do up hearing about it right but countries
00:30:15.049 countries change fairly regularly so maybe yeah the other the whole concept
00:30:24.419 of the gym being versus part of the actual rails default
00:30:34.059 how that occurs and that is insight into why so why rails in just
00:30:42.130 one jam I know it makes decisions for me falles with the club the 14 that's right
00:30:48.070 in its political yeah that's it so the question was uh how do the default gems
00:30:54.010 and rails become a cult Jones from degree in political its compare the
00:30:59.620 quickl but I'm more interested in that from that communicates what I want to
00:31:06.669 invest my time in perhaps because it flags all these things they've talked
00:31:12.429 about his criteria today I didn't you down or what I'm not invest my time in and forward with committing to a test
00:31:21.490 framework protecting our spec or whatever just it influences it seems a
00:31:27.730 lot sure so if rails blesses your gem as
00:31:33.549 a default for reals obviously the rails core team isn't some ways vouching for
00:31:38.950 you right it's not a decision they take lightly it's not like I release the gem
00:31:44.980 yesterday is how a default interest that's not never going so you know at
00:31:50.200 that point when something is a default for rails you know you can kind of assume that a lot of this evaluation has
00:31:55.570 occurred in almost all cases pretty much all cases there's also been time behind it right and they haven't had any major
00:32:02.260 screw-ups enough the concern for team too shy them away from making how many
00:32:08.320 people okay so I think you know that the traditional example there will be like our spec versus test unit right so you
00:32:15.999 know by default grails is testing that before you sit and there's a flag that you can tell it to install trails judges
00:32:22.749 in Temple arrows are using our second said you know ultimately that is a
00:32:28.840 political decision the core team to know me this is all their campus every book
00:32:35.349 but the court thing do care they do look at gems fairly regularly they do listen when community starts to push like four
00:32:41.950 we want our stuff in Twitter you know there are very strong opinions on the 14 that our stuff isn't good bird and their
00:32:50.559 the pain scales too quick so they made it interchangeable which is generally
00:32:58.359 for most of alts there's an API map for whatever that the bulk shipments it
00:33:03.580 could something else anybody else big questions little
00:33:11.830 questions completely off topic questions yeah you know a gymnast you know all the
00:33:21.370 gym six and I remember um so the question was how do you know
00:33:27.210 if I maintain air is just going to drop maintenance virgins you don't you know
00:33:33.120 you judge on track record so for example you would look at a gem and see how many
00:33:38.280 version releases I've had at how long the time you would look to see how active they are currently on fixing
00:33:45.090 issues you would look potential to commit this tree that's a give everything and see if they commit in the last week your last day for it was two
00:33:51.450 years ago right opposite of good enough which isn't bad thing and a lot of times
00:33:58.170 the more popular gems when the author knows the popular down will petition
00:34:03.660 bringing the pan whether it's through the readme or blog post or something
00:34:08.730 else they will start trying to find somebody else to take over before just about right dropping most people are
00:34:13.980 good doesn't ask where the internet is it's there forever for it so very least
00:34:19.980 you've got the last release in it if it's critical to your application I mean like I said you're marrying right here
00:34:26.460 if you're investing final money into tying into somebody else's code you're marrying this is open source currently
00:34:33.060 so you know if they disappear tomorrow we still have a last thing they did with lesson or at least you know now it's a
00:34:39.300 business decision on your end this to can we afford to maintain those obviously it's business critical to us a
00:34:45.929 little stomach so is it still is there another option at that point can swap it out realistically or
00:34:51.980 anything else
00:35:03.410 so I've got a you know couple favorite Jones an island of overtime r-spec i think is great diversity is an awesome
00:35:09.920 curator he's very good at staying out it's very good at pointing direction whether or not you like our spec I think
00:35:16.010 he's he's a great example of energy yes I'm developing a little more spec and
00:35:29.630 David everything is good the same is actually true a VCR awesome support but
00:35:37.910 maintainer behind that and actually want to point out finally Faraday on a Faraday's little books here especially for the beginner track but I want to
00:35:44.300 point out it's not even a scanner in this point why it's one of my favorite games it's actually a auxiliary commit
00:35:52.040 who is Miss love he's an incredible maintainer even up other people's gems like he is entirely willing to just say
00:35:59.360 no the features and until you you know answer your question if you have it or tell you why you're doing something
00:36:04.970 wrong about of those of us that stuff you really only not ever time for so
00:36:11.870 once you guys have any other questions and there's break right now
00:36:52.580 bye