Summarized using AI

Q&A with Matz

Yukihiro "Matz" Matsumoto • September 29, 2011 • New Orleans, Louisiana • Q&A

In this Q&A session with Yukihiro "Matz" Matsumoto, the creator of the Ruby programming language, several key topics regarding Ruby's development and future were discussed. The event took place at RubyConf 2011 and allowed attendees to pose questions directly to Matz, leading to a dynamic conversation about Ruby's ongoing evolution and community involvement.

Key Points Discussed:
- Ruby Development: Matz addressed questions regarding plans for Ruby's future, specifically about Ruby 2.0 and its features. Attendees were eager to know which features would be prioritized and how the community could contribute.
- Hiring and Resource Allocation: Matz mentioned the current hiring freeze for core Ruby developers but indicated a willingness to expand the team later on, emphasizing the importance of community support.
- Ruby Features: Questions were raised about favorite features in Ruby versions, highlighting the anticipation for the upcoming Ruby 2.0 release. Matz mentioned improvements related to modules and keyword arguments, which would enhance Ruby's flexibility and usability.
- Performance Concerns: Performance on different platforms, especially Windows, was discussed extensively. Matz acknowledged issues related to Ruby's performance on Windows and stressed the need for volunteers to help improve it.
- Community Contributions: Matz encouraged attendees to contribute to Ruby's development, stating that documentation and code improvements are essential for Ruby's progress. He emphasized that active community participation could drive Ruby's enhancements.
- Parallel Processing: The conversation included inquiries about potential built-in capabilities for parallel processing in Ruby, with Matz indicating this might be managed at a library level rather than through core language features for now.
- Feedback on Existing Features: Matz expressed openness to suggestions regarding existing Ruby features that could be improved or removed to streamline the language.
- Personal Insights: Matz shared personal anecdotes about his children and programming, touching on the importance of intrinsic motivation in learning programming languages.
- Security Practices: The discussion also included thoughts on code signing in the Ruby community and how it could enhance security in Ruby applications.

Overall, the session showcased Matz's commitment to Ruby's growth and the integral role the community plays in shaping its future. Attendees left with insights into upcoming features and an understanding of how they can contribute to Ruby's ongoing improvement and advocacy.

Q&A with Matz
Yukihiro "Matz" Matsumoto • New Orleans, Louisiana • Q&A

Date: September 29, 2011
Published: December 13, 2011
Announced: unknown

Question and Answer session with Yukihio "Matz" Matsumoto creator of the ruby programming language.

RubyConf 2011

00:00:16.960 one of my favorite parts of the conference which is a q a session with the creator
00:00:22.400 ruby the creator of happiness in the programming world max
00:00:34.399 is if you have a question now if you have a question there's a mic here and we'll line up with that mic to
00:00:41.600 ask a question and then he'll be up here and answer any questions we need some people to line up now
00:00:48.719 to ask some questions it was really impressive to see
00:00:54.559 do you think that that kind of sets the stage for uh or might be a vehicle for looking to
00:01:00.879 i don't think so that movie is it couldn't have said feature-wise so
00:01:07.680 it's not intended to be replaced any
00:01:14.880 would any of that coincide with maybe simplifying some of what would be yes yeah the
00:01:21.119 emerald brought all together
00:01:38.880 so
00:01:47.840 uh
00:01:55.200 hi hi um two questions
00:02:02.880 yes i'm totally ranked right now to ask two questions actually i'll ask one then we'll get back in line
00:02:08.560 so the first question is is um are there plans for um
00:02:15.040 heroku salesforce to sponsor slash pay for more full-time
00:02:21.760 people to work on c ruby or mri i'd like to call
00:02:35.280 fiscal it of the this year we are not going to hire in this this whole year
00:02:41.040 but we yeah yes we are able to hire more at least one more two so i would have to
00:02:47.360 buy one with
00:03:14.720 um what is your favorite uh ruby 193 and
00:03:20.000 ruby 200 feature uh your favorite two one the your
00:03:25.440 favorite feature of the release that's coming up right now and your favorite feature of that you hope will be in
00:03:43.360 uh
00:03:58.239 and then
00:04:07.840 afterwards so that if we don't we do not have to use the dialectic
00:04:20.479 and the ruby's back it says a conforming processor may omit any invocation of a method of a built-in cluster module for
00:04:26.800 optimization purpose and do the same calculation as the method instead in this case even if a program redefines
00:04:33.840 the method the behavior of the program might not change oh sorry
00:04:43.040 there might no change because the redefine redefined method might not actually be invoked
00:04:48.240 this is for some uh core methods the case in ruby at the
00:04:53.360 moment is there any chance we can get rid of that so
00:04:58.479 we so so that if you call the method that is defined in c
00:05:03.680 in c ruby it often calls just calls the c method
00:05:09.440 another c method instead of going through the dispatch again is there any chance of always going
00:05:15.199 through the dispatch again so you can actually refine any method if i ask them correctly so i need that
00:05:23.360 think so the project providing redefinition of the department
00:05:28.639 is the decreased possibility of the language
00:05:34.160 instead so if some guys like romanians and their
00:05:39.680 future the 194 would have some kind of
00:05:45.199 the inline gas which fits avoid these parts in sense
00:05:54.000 or maybe we can do some kind of specialization which is the specific version for specific type of
00:06:00.639 arguments so if the precondition like that these arguments
00:06:06.160 are integers that is this file that we call the specialized version the specific
00:06:13.280 possible integer of arguments and then it's not so called the generic version
00:06:18.880 so that kind of optimization can be implemented in the future so that we
00:06:24.160 will have to so you would see it as in the future it would be possible to
00:06:29.919 move more like actually recording methods and optimizing
00:06:43.280 hello hi so uh i believe in some past interviews you um
00:06:49.120 when you were asked if there were any features of ruby that you wish you had done differently um you said something
00:06:55.199 along the lines of i wish i had asserted something like actors or something like that some sort of more
00:07:00.800 advanced parallelizing construct into the language um since ruby 2.0 will be a new major
00:07:08.400 version do you think we will see something like that but at the language level or do you think it will still be done with libraries
00:07:28.319 i don't want to
00:07:42.720 on
00:07:55.520 it would be done by language okay great thank you
00:08:02.400 hello hi uh is the next ruby going to be 194 or 2.0
00:08:09.120 okay after releasing one and three we are able to make strong to be one to all so
00:08:17.919 even maybe we could have one like four in the future but it's
00:08:26.000 caused by the sometimes that there are so many dogs or something like indian one and three so we cannot do that too
00:08:33.839 okay so after 193 is released trump will beat 2.0 yep
00:08:41.039 hi um this is not a criticism directed at you
00:08:49.600 i say this just to try to explain some like recently
00:08:55.600 i was trying to i've been advocating ruby at my company and teaching my
00:09:00.800 co-workers how to use it in various things and we have a number of cucumber tests for a product we're
00:09:07.440 working on that and many of the developers or or qa
00:09:13.279 people like prefer to use windows and i was shocked when a
00:09:19.440 a system we were running on 192 took like 10 times longer to run our
00:09:24.959 cucumber tests on windows due to a required problem i think i think it was a required problem i'm not
00:09:31.360 totally sure what it was but we all had to just flee to jruby
00:09:37.600 and it was really i'm just wondering if how my question is
00:09:43.600 do you think it's important that we focus on more on windows and
00:09:48.800 windows performance or do you think that's just it's okay for us to just sort of say use mac or linux
00:09:57.760 okay i i believe that particular problem was called entry
00:10:03.279 okay but and the the the reason the
00:10:09.040 our windows port is not as good as the linear zone map is just just
00:10:14.959 due to our lack of resource so if somebody are willing to help us to include the
00:10:22.240 food on windows so we are very welcome so
00:10:28.720 you know maybe some companies some individuals
00:10:34.959 raise their hand to help us improve
00:10:40.399 so we out of 32 our
00:10:54.399 it's just an issue you can't find the people who are interested in contributing in that area is that
00:11:01.600 thanks hello hi um i actually also had a ruby 2.0
00:11:08.720 question although aaron's question covered some of it but i'm wondering just especially since there's a lot of
00:11:13.920 new people here that haven't heard previous keynotes i don't want to make you give another keynote but can you
00:11:19.200 just sum up very quickly kind of three or four things about that you've got planned for ruby 2.0 just for benefit of
00:11:25.760 people might not have you
00:11:38.800 so we are going to add the module prepared which i explained to
00:11:44.320 even and the module mix which replaced the uh
00:11:49.920 people you include which we can avoid
00:11:57.040 priority order of that included method and then
00:12:02.240 we are going to have the keyword actions in the in the world language so we
00:12:07.839 for example ruby uh rails use this for documents to perform inside
00:12:13.120 but you know we have to decompose the hash in the
00:12:18.160 receiving side but i i'm going to add the
00:12:36.880 which can isolate the monkey pattern in a certain module
00:12:42.399 so that we can safely the tree
00:12:48.160 safely change the existing class without affecting the
00:12:53.200 code outside of the specific namespace and i think these
00:13:00.320 big features with
00:13:16.399 i believe that the act of using sign code is a good idea but the idea of
00:13:22.800 forcing developers to sign their code is a data what are your thoughts on
00:13:28.959 quote signing in the ruby community non-existent as it is
00:13:43.440 correctly right now but you know for james so signing might be
00:13:48.480 very interesting so some you know some basic articles of the video would be
00:13:56.959 dangerous in some cases so we often use this get installed something that is your
00:14:03.120 network from the you know third-party calls so that would be dangerous
00:14:10.000 that can be dangerous exactly so both signing money will
00:14:26.800 good morning morning so uh that's a very short question but when people say mri i'm usually saying matt's
00:14:33.920 ruby interpreter when you say do you are you meaning my ruby interpreter
00:14:47.519 well i don't think so just because you know mri often include ruby one nine
00:14:53.360 which core is done by the koichi so
00:15:10.800 originally
00:15:25.279 that's a good question this is a good setup for me um what name what would you have us call it because i think
00:15:32.399 media and charlie started started calling it mri because we needed a new name i think that was before
00:15:38.399 uh ruby core started calling it c ruby so it was a long time ago so do you have a name should we should we come up with
00:15:45.680 a name maybe suggest some names yeah okay
00:15:56.240 uh is there something that the ruby community can do or a few things so that
00:16:01.759 to make uh ruby 200 and further things easier or better or
00:16:07.199 whatever so like uh something that these people can on monday when they go back to their real jobs they can think about
00:16:13.839 and help with yeah last night i i talked with brian fold that
00:16:19.440 regarding ruby bag and then we started yeah we
00:16:27.040 we talked about we do something to
00:16:33.600 absolute development
00:16:49.040 time i will see some mountains much better than um but still we
00:16:56.160 you know it's it's quite difficult to set up some kind of documentation or something like that so
00:17:02.839 we uh we had no idea at that time that we
00:17:08.000 have to say that it's important for our washington alongside the ifc
00:17:14.720 business i don't know i think
00:17:28.640 so these people should go home and write ruby spreads
00:17:45.120 hello hi uh i was curious if um if right the ruby light uh project yes
00:17:52.880 is uh is that um is that continuing uh with sponsorships or is that all
00:17:58.720 you know uh the the project that was originally called ibm and we
00:18:04.400 now i call it rain and ruby which is exported by the japanese government
00:18:09.840 so it's just separation is it a subset of ruby 2 or is it what
00:18:15.919 is it
00:18:22.720 and then after yeah this is
00:18:29.520 will be available in six months so after that it could it will be on
00:18:35.440 sale so everyone can even uh
00:18:42.400 improving six months all right
00:18:50.720 so the other day on the panel somebody had mentioned in standard library
00:18:55.760 something called sync so i looked it up and the wi-fi being spotty here i checked
00:19:01.360 the pickaxe the pickaxe said this isn't a direct quote but it's
00:19:07.440 broken we're not including it so my question is for ruby 2.0 instead of
00:19:13.760 adding new features what's your opinion about cleaning up what's already there uh
00:19:19.440 yeah as i i told you before that ruby 200 would not be a big
00:19:25.919 step so that we are going i think we are going to remove sometimes the dedicated
00:19:31.600 libraries like what english or something
00:19:36.799 some and we might separate some the santa barbara
00:19:43.039 into jams but we are not going to you know make the big big change but we might
00:19:50.960 remove something and we might separate some part of the sun
00:19:59.840 so if you thought about some things to remove what would some of those libraries be yeah we
00:20:18.960 hey um one of the things that i find in general is ruby is really nice and intuitive to use um
00:20:26.160 one thing that surprised me was um like japanese tech support is not quite so
00:20:31.520 straightforward and easy and i just processing text using japanese text
00:20:38.640 and stuff is is not as natural as i might have expected so i just wondered like is that because
00:20:45.200 you've got a strong international focus so yeah yeah it was too difficult to
00:20:52.080 implement wow actually in japanese expression is so
00:20:58.320 so difficult it's too big that me a programmer like me
00:21:04.640 but you're japanese well
00:21:12.760 yeah how difficult it is okay
00:21:18.400 but yeah if somebody maybe japanese willing to help me to have a better
00:21:25.200 text hunting library so we knew that this should
00:21:33.120 hi thanks um i don't have so much of a question
00:21:43.520 so you mentioned before with ruby 20 the module boxing or class boxing i forget
00:21:49.120 what we're calling it and um i wonder if you would give any thought to um
00:21:55.039 there was a language called dylan which had multiple inheritance so a little different but one of the things
00:22:01.360 that they did was the mechanism to find methods or constants
00:22:07.520 was implemented in w so it was sort of a method resolution
00:22:12.960 constant resolution algorithm in dylan and i was wondering if we could
00:22:18.320 i mean again this is more of a suggestion request but could we maybe think about
00:22:23.360 ways of describing constant lookup in ruby instead of relying on
00:22:28.799 the seed well for example to come up with the system as the map
00:22:35.600 made out from protocol which you can find your own
00:22:40.880 lookup folder and right here which is yeah english everything matter
00:22:50.480 and then yeah i don't know just because you know
00:22:55.520 by doing so it will slow down for months
00:23:01.280 very badly yes my guess is
00:23:06.799 so
00:23:14.720 yeah even just as a reference if it ends up being informative yeah that's the experiment
00:23:19.840 okay thank you how about you i'm sure why not
00:23:25.440 yeah he said that i'm just curious do you remember a root
00:23:31.360 choke with the dash values with the w flat
00:23:45.520 so matt i'm wondering how old your kids are now if you taught any of them ruby
00:23:51.600 well i have four kids and uh the oldest one is always 19 but she has
00:23:58.559 no interest in the program
00:24:13.520 so my parents did not force me to do any programming
00:24:24.080 so you know they it is very important to have some kind
00:24:31.200 of the internal motivation to program so not even from outside so
00:24:39.520 if if any of my children have that kind of motivation to progress in
00:24:46.799 in some language i would definitely help them and then even i would make some
00:24:52.080 kind of tools to help to help them but until now
00:24:57.760 they didn't they haven't shown any motivation
00:25:03.039 would you would you just own them and use python
00:25:27.200 uh well the the basic in the functionality of mrb is is as defined in
00:25:32.960 the iso so if they are actually
00:25:38.640 described so the the standardization actually describes both of them and the way they
00:25:44.880 are yes yeah yeah yeah yeah so the first version of the standard covers the very
00:25:50.159 subset of the ruby language and then mrp also confirms uh
00:25:55.520 most of the standards except that the enemy doesn't have i o by people
00:26:00.799 and then i i suspect that it's quite reliable
00:26:05.919 but are we trying to differentiate within the standard what qualifies as you know what you described as movie
00:26:11.760 versus the whole thing or is it just going to be a subset of sorry i just wanted to actually be a
00:26:18.000 delineation in the standard of this is zen ruby and this is the full ruby or is it if you're gonna have a guess yeah uh
00:26:25.279 we are not going to add that that kind of like in the description in the standard so
00:26:32.159 that it will be in general should work like this that
00:26:44.960 is the next thing that implements a c ruby interpreter in movie no okay
00:27:04.559 when you're running a lot of ruby processes to measure performance or kind of
00:27:09.919 introspect on the runtimes there are plugins and various things that you use inside the environment which kind of
00:27:16.799 disrupts the environment there are different run times now with videos and jruby is there um
00:27:23.120 some goal like jvm has uh johnny but where protocol and different uh you know uh
00:27:29.600 kind of wire protocols to actually introspect the jvm is there anything that you're looking at
00:27:34.880 to say can we provide a similar function to uh ruby run times such that things
00:27:40.720 can collect data on them performance data you know things like object space type
00:27:45.919 data and for for measurement and or debugging well the
00:27:52.480 weird in this separate neverness we discussing we are discussing about
00:27:58.240 that's a grouping like a proving api that we for the
00:28:04.880 near future version here the database into the language and
00:28:12.240 along with some kind of other program
00:28:23.679 okay
00:28:29.200 um yesterday during ryan ford's talk on nikita he was talking about making your videos magnitude faster
00:28:36.480 than it is now i wonder if there are any hard goals of performance
00:28:42.960 and if so how you're kind of measuring those and going about like getting there yeah i think actually i'm not the
00:28:49.760 performer but the the koichi
00:28:55.760 told me that he would love to spend his time on
00:29:01.200 improving performance so i expect him
00:29:09.840 thanks uh what is the most important thing that
00:29:17.840 groovy programmers misunderstand about ruby that we should study and learn better
00:29:24.080 yeah maybe
00:29:29.120 yeah people very easy to complain about the performance of the language
00:29:38.960 but you know the microbes work doesn't tell anything about the real application so that so you have to
00:29:44.880 yeah i i want there will be programmers to learn about the common behavior on the real
00:29:51.120 application so
00:30:03.600 so it's you know performance tuning is kind of like science so you have to you have
00:30:10.399 to you know analyze there so
00:30:16.399 learn love learn about
00:30:35.760 all right well let's give max
00:31:21.440 you
Explore all talks recorded at RubyConf 2011
+55