MonoDevelop
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 97 | |
Author | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/45728 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
Selectivity (electronic)Graphics tabletOperator (mathematics)Flow separationComputer fileFood energyDirection (geometry)Focus (optics)Computing platformDebuggerSoftware developerMathematicsDivisorImplementationCode refactoringOnline helpFree variables and bound variablesSet (mathematics)BitProjective planeWeb-DesignerRevision controlText editorLevel (video gaming)Electric generatorConfiguration spaceAsynchronous Transfer ModeFile formatBeta functionSource codeSoftware testingState of matterLocal ringBuildingFormal languageEndliche ModelltheorieVisualization (computer graphics)Cycle (graph theory)Phase transitionCodeWindowCartesian coordinate systemService (economics)Application service providerAreaMultiplicationPlug-in (computing)MultilaterationHeegaard splittingIntegrated development environmentRemote procedure callTemplate (C++)Goodness of fitStability theoryLecture/Conference
07:16
MathematicsComputing platformWindowWordRange (statistics)Menu (computing)Lecture/Conference
07:58
CodeWindowVisualization (computer graphics)BuildingSoftware frameworkWeightMenu (computing)Asynchronous Transfer ModeCartesian coordinate systemParameter (computer programming)Latent heatFrame problemWater vaporDirectory serviceIntegrated development environmentComputer configurationMultiplication signRun time (program lifecycle phase)Variable (mathematics)Set (mathematics)Machine codeProjective planeText editorDefault (computer science)Flow separationUnit testingFront and back endsElectronic mailing listSoftware testingCase moddingDebuggerService (economics)Macro (computer science)Keyboard shortcutCASE <Informatik>MathematicsPoint (geometry)View (database)Different (Kate Ryan album)Graphical user interfaceAdditionSoftware developerInstallation artAssembly languageConfiguration spaceVirtual machineParallel portPlug-in (computing)WordHeegaard splittingLecture/Conference
15:34
Computer fileTemplate (C++)Electric generatorComputer configurationGraphical user interfaceOperator (mathematics)WindowGodFile formatVariable (mathematics)Online helpBlogCode refactoringObject-oriented programmingMenu (computing)Video gameException handlingCoordinate systemContext awarenessInsertion lossSet (mathematics)Cartesian coordinate systemCodePerformance appraisalCategory of beingExpressionField (computer science)ImplementationSystem callLibrary (computing)MereologyLine (geometry)Projective planeSound effectLatent heatOrder (biology)Physical lawProcess (computing)Object (grammar)Inheritance (object-oriented programming)Level (video gaming)Front and back endsOpcodeText editorDifferent (Kate Ryan album)Group actionRevision controlCASE <Informatik>DebuggerElectronic mailing listPosition operatorWritingBlock (periodic table)Local ringFirewall (computing)String (computer science)FlagLecture/Conference
23:10
Chi-squared distributionUsabilityText editorComputer fileOpen setINTEGRALComputing platformDifferent (Kate Ryan album)DebuggerPlanningProjective planeFile formatImplementationData compressionGroup actionWindowComplete metric spaceProgrammschleifeTraffic reportingForm (programming)Lecture/Conference
25:20
Execution unitElectronic mailing listInformationOperator (mathematics)WindowLoginView (database)Branch (computer science)MathematicsGraphical user interfaceBitFeedbackDebuggerCartesian coordinate systemEvent horizonGraphics tabletSet (mathematics)PlastikkartePersonal identification numberSpacetimeObject-oriented programmingRow (database)Error messageText editorComputer fileLine (geometry)Function (mathematics)BuildingProjective planeContext awarenessLatent heatRevision controlResultantDefault (computer science)Point (geometry)BootingEndliche ModelltheorieSummierbarkeitSoftware development kitMultiplication signLecture/Conference
32:17
Text editorTable (information)Computer fileMathematicsMultiplication signVideo gameCartesian coordinate systemRevision controlDebuggerLecture/Conference
33:51
Object-oriented programmingGroup actionImplementationComplete metric spaceString (computer science)Electronic mailing listAttribute grammarObject (grammar)Social classExpressionStructural loadProcess (computing)Category of beingOnline helpCASE <Informatik>Natural languageSoftware bugMultiplication signDescriptive statisticsType theoryParameter (computer programming)DebuggerDifferent (Kate Ryan album)Electronic visual displayHidden Markov modelBlogCodeComputer configurationSelectivity (electronic)Software developerResultantView (database)Row (database)Complexity classDefault (computer science)Block (periodic table)Lecture/Conference
38:37
Block (periodic table)Set (mathematics)Selectivity (electronic)Revision controlGodInformationMultiplication signWeb browserSoftware developerDigital photographyDifferent (Kate Ryan album)Visualization (computer graphics)Graph coloringWindowSocial classMathematicsLine (geometry)Inheritance (object-oriented programming)Type theoryParsingContext awarenessUniform resource locatorPlanningOperator (mathematics)Matching (graph theory)ImplementationVariable (mathematics)Lecture/Conference
Transcript: English(auto-generated)
00:00
Good morning, I'm you Sanchez and I'm the lead developer of Monodevelop and today I'm going to talk a bit about the project. I'm going to give a quick review of the features that Monodevelop has in all the releases we have done and I will show what features the
00:32
new release we just did last December has and what are we planning for the next release
00:41
which would be 2.4. First of all, a quick review of what we've been doing until now. The first stable release of Monodevelop was in March 2008. It was a release very focused to GTK
01:02
development so what we wanted to do is IDE for developing GNOME applications. So we have a very strong support for C-Sharp and basic support for other languages. We have some basic refactoring
01:20
operations. We have some initial support for loading Visual Studio projects. We had quite a lot of add-ins for version control, for packaging, generating tarballs, generating makefiles, for NUnit, for testing and for localization. So after all what we wanted with
01:47
this release was to be self-hosting. So we could use Monodevelop to build Monodevelop itself in the whole development cycle from all the phases of development. So we did
02:03
that and the next release was one year later. Maybe we should close the door. So the next release was one year later and we were listening to our users and the most
02:30
demanding feature was the debugger. So we did the debugger, we integrated Monodevelop, MDB. We
02:43
also improved the code editor, the text editor. What we did was to move to a new text editor which is a managed text editor fully implemented on C-Sharp. This allowed us to add some advanced features like code folding, split view, incremental search and other features. We also
03:08
improved our support for Visual Studio. In fact what we did is to change our project service so we are actually using the MSBL file format as a native format for our projects.
03:28
And we now support the latest Visual Studio version for that. And we also improved many other areas of Monodevelop like we introduced C-Sharp C support, we had multi-selection in the
03:46
solution part, we could do operations on several files at once. We had the code file command, a very useful command for navigating on the source code and assembly version and other stuff.
04:04
The last stable release we have done is 2.2 which was released last December. And the main focus of that release was to reach a wider audience, to reach a wider user base. So we
04:23
wanted Monodevelop to be useful to more users so we decided to focus on making it multi-platform. The first release is that we officially support Windows and Mac as
04:44
target platforms. We also introduced the new soft debugger that Monodevelop has now. So we integrated it in Monodevelop and there was also this iPhone add-in which allows
05:00
development of iPhone applications. And another change we did is to remove the GPL code we had remaining so we could change the license to a license which allows implementing add-ins which are not GPL compatible.
05:22
Monodevelop is now LGPL and a lot of credit goes to the remote J guys which helped a lot on rewriting some of the code. And we also improved a lot of things in the text editor. We had a new refactoring infrastructure which allows us to
05:51
implement new refactoring operations. We had other coding helpers like code templates with placeholders. We had the new code formatting engine for formatting the source code for C-Sharp
06:11
together with what we call formatting policies which allow specifying settings for formatting at project level. We had new code generation operations, the custom aggregation mode which
06:31
I'm going to show now, and a whole bunch of new add-ins like the MVC add-in for ASP.NET,
06:41
Monolight add-in, Python. Some of them were already available in previous releases but in beta let's say not supported state. In this version they were released.
07:02
I'm going to show some of those features. As I was saying, one of the main changes in
07:24
this last release was that we now officially support Windows and Mac. I don't have here Mac or Windows to show but we had to make some changes in monodevelop to adapt to those platforms. In Mac what we did,
07:46
because our goal was to make monodevelop feel more native to those platforms. So for example in monodevelop what we did was to use to change the the word range and so it would use the main menu of Mac OS. It would show like a native
08:07
application. We changed the shortcut of the command so it would use more Mac friendly shortcuts and we even adapt the behavior of the text editor so it would behave
08:24
like Mac text editors because they have some specific ways of navigating the code and word splitting and so on. So we tried to make it feel more native to Mac. In the Windows case
08:48
we did more or less the same. In fact we didn't have to do these deep changes but we only had to provide for example a key binding set which is more like Visual Studio so people can choose it.
09:07
One of the things that we had to do is make it possible to use the Microsoft.NET framework and use as well the Mono framework for development. Because I know when you install
09:24
monodevelop on Windows it is going to run on top of Microsoft.NET. It is not going to install Mono by default but you can use as well Mono if you want to develop later on. What we did is to introduce a new concept the concept of runtime inside the monodevelop.
09:47
We already had the concept of target framework so you can develop an application and say okay this application is going to target the 2.0 framework which has a set of features of predefined assemblies or it is going to target the 3.5 framework.
10:05
Let's say orthogonal to this there is the runtime you want to choose to build that application and run it. Here in the toolbar in addition to the configuration you want to use to test an
10:23
application there is a list of frameworks which are installed in the machine so you can select which framework you want to use for building and executing that application. In this case all of them are parallel Mono installations. In the Windows case it would show Microsoft.NET
10:41
framework or Mono framework. I can choose any of them. And also in the Windows case we had to implement the specific add-in for debugging.
11:03
So this is a back-end specific for Windows with 32 debugger and this is also back-end for the subversion add-in which is using SHARP SVN as back-end. So what else? Well about the the framework about the runtimes there is also this run-with
11:27
command here which is new this menu which also allows to run an application on a specific framework so you maybe are developing using Microsoft.NET and building on Microsoft.NET and you decide to try it on Mono then you can just do a run-with and select here the framework.
11:53
This menu here is what it lists here are execution modes.
12:06
So these are different ways of running an application. This is an extensible menu. So add-ins can add new execution modes here. This is also new for 2.2. And right now there
12:21
are some modes like running an application with custom parameters or using some specific framework or using the debugger. And if I use for example custom parameters I can decide to run this application with some arguments using some working directory or some environment variable. There is also a Mono options tab which allows me to set a lot of
12:48
Mono runtime specific options which you would usually set using the command line switches or environment variables that you can set them here. And you can run this application using
13:04
those settings and you can also save those specific parameters and give it a name and say okay this is going to be stored for this project and I run it. So from now on when
13:25
I go to the run-with menu I can see this mode here. So I can reuse it for several executions. So what's interesting about that is that this mode list here is available on
13:40
every feature of the monodot which my run assembly. So for example if I have a unit test like here I could run this test with any of those modes here.
14:02
Which by the way. Okay it is not showing because well I can go to edit custom modes and I said this mode is only for this project so I can change it and make it global and it should show now. So the other feature
14:38
star feature of this release was the soft debugger.
14:46
This soft debugger is a new debugger we had at Monodevelop. It was developed specifically or mainly to give support to the iPhone add-in so we could debug
15:00
iPhone applications. And Monodevelop has a debugging service, a debugging infrastructure and all we did is to implement a new backend for this new debugger. So from the point of view of the user I'm using the soft debugger or the MDB, the
15:23
old debugger, mono debugger. It makes no difference in the GUI because it's using the same GUI. But in addition to implementing the backend for the soft debugger we keep improving the GUI. So in this release we added some new features like let me show
15:51
is the immediate window which allows me to implement, to execute some commands like for example let's see what's the win variable or see the name or I can define
16:10
some variables as well or do some basic operations, evaluations of
16:23
expressions. We also added some new options which are available in the preferences.
16:43
So for example there is a new option for when set it is going only to step into libraries which are part of the solution. So it is not going to step into system libraries or external libraries. I can set that. This is also a flag for enabling or disabling
17:05
implicit evaluation of properties. So for example if I disable that you can see that
17:27
the properties are not showing the value and if I want to see it I have to click on the refresh button. So this is useful when we are debugging complex applications and we don't have to have side effects while debugging because in order to show the value
17:45
mono develop has to query the value of all the properties. So this is going to may affect the target process we are debugging. It may have side effects. So sometimes it might be useful to enable this. And there were also
18:07
options for the way the members of the objects we are showing have to be grouped. We can group them for accessibility and for base class or because the base class members are shown
18:23
in a different group and things like that. This is also an evaluation timeout option here. In case it dames out. And there is also this preferred debugger list here. So since mono develop has several debugging backends you can choose here the priority of the backend. So
18:46
if you want to make sure that when passing F5 for debugging to use the soft debugger then you can lower the priority to make this debugger more priority.
19:15
About refactoring operations or code helper operations. We had a whole bunch of new
19:24
refactoring operations which are... So for example when I click on the code I have this menu here.
19:42
I can do integrate temporary variable which integrate this one. This is also extract method, locale. This is also the inline rename. So if I'm on this firewall here
20:00
and I press rename it renames live on the text editor. There is also... What's that? Some
20:21
documentation exception. I don't know what's that anyway. This is also the the code generation command which is a contextual command. So if I press alt insert it shows a set of options like for example I want to generate property accessor for
20:41
this field or I want to generate two string implementation which shows the value of this property. Okay or I'm going to generate override some method from the base class. It is going to generate the code for that and if I'm inside the method I can for example
21:12
write a call generate a write line call or generate a null check or whatever. Okay
21:31
and finally this is the new code formatting engine and there is that also this new format
21:44
document command which is going to format the the document based on a set of formatting settings which I can set for the project. So if I go to the project in code formatting I can set a lot
22:05
of formatting options for this specific project or for our solution level etc. So this is nice because those are not global settings but project specific settings which are stored in
22:25
the project file itself. So if you check in the project and version control and everybody that is using this project will have the same settings. And those settings are used for well for this formatting command but also for when when a new file is created using a template
22:45
or for code generation as well. And we have an on the fly formatting option which is not fully functional yet but the idea is that when you are typing on the
23:01
fly you is going to format when you close a block or whatever. Okay so for the next release 2.4 we have two main goals. One of them is to improve the usability of Monodevelop.
23:26
We think that there are some features some ways of working with Monodevelop which can be improved and it can be they can be made more user friendly and you want to also make it
23:42
improve the integration of different platforms so it looks even more native to any of the platforms we support. We plan also to improve our super for XBuild which means MSBuild projects.
24:03
We are using right now the MSBuild format. XBuild is the MSBuild implementation of Mono. But we are only using the format we are not using MSBuild or XBuild to build the project so we plan to support that. We will keep improving the text editor so we are going to have
24:28
their compression groups with groups inside the compression window uh have better speed and completion and other improvements. Well native file dialogues about what we're saying about platform integration
24:43
we plan to provide when you click on open file and it will show the open file dialogue which is native to the platform instead of showing the gtk1 and keep improving the the debugger.
25:06
uh okay this one so well what i'm showing here
25:21
is uh it's not that in in in sbn it's uh an experimental branch which i have and uh where i'm trying some some changes in the GUI and experimenting a bit with it and trying to get some feedback so it's not final at all and so as you can see some of the changes
25:50
and there is a more uh a shoddy black background here with the docked pads more integrated to the background as you can see here more shoddy it is also
26:16
uh a new status bar which makes a more smart use of space so for example
26:25
when i minimize one of the pads it is going to minimize next to the status bar so we can save a row of space here
26:41
also some other changes we've done i'm going to compile this but with some some errors
27:00
so i built the the project and as you can see there are these error bubbles what you call error bubbles which show the compiling errors in line in the in the text editor and i can browse through them quickly without having to show the error list okay there is also this panel here
27:29
which shows information about the the the build errors and warnings and well i'm also playing with the this idea of pop-up panel here which allows me to
27:44
do some context specific operations like show me the first error or show me the error list browse through it or show the build output of the of the build operation okay also another change related to this is that if i do for example a suppression operation like
28:13
checking the changes in this project or whatever or update and
28:22
in previous monodeveloped versions monodevelop used to always pop up an output window and show all the result of the operation here and it is not popping up the window anymore by default but instead to do it i have to click on the on the result of the operation so i can also go
28:43
here and then i can click on show me the log for the last operation and the same actually the same is true also for when i i build the project and i i can also go here and see the log or see on invoke to show the list so what i'm doing here is
29:07
to apply this concept to several operations like the one i shown and also when i do for example finding files operation looking for a text also i can show some information so i
29:28
so like show me the log for this search operation and all that okay and there is also
29:44
well this is a small history window so i can see all the operations i've done until now and review all logs all all values from all operations so i can have a better view sorry this is a
30:00
history of the some of the operations i've done so i can review the the log of previous operations okay also we have new some nice features in the debugger so this application
30:39
i'm using here is a very simple gdk application so the window with the button when i click on it
30:48
it starts a counter okay so something very easy so i have this
31:01
clicked event handler which starts a timeout so every half a second is going to to increase this counter and update the label so if i set a breakpoint here i can hover over it and now
31:22
there is a this new pin button here so when i click on it this gets docked to the text editor and it can show the the values of the of this variable here as you can see it's a pretty neat
31:40
step this is stored in the user settings so it's it's persistent if i close it and reopen oops well i should be sure oh well okay i know what's happening one second
32:10
i have to switch to this this lesson here because the the branch i have i was trying now is doesn't have the latest
32:23
changes from trunk so i have to use the the trunk version okay so i close reopen here it is
32:56
so what it does is every time the debugger is stopped it evaluates all the all those
33:01
floating watches and updates the values in the text editor okay and another thing i am trying to when i am experimenting with is to have
33:21
live live watches in the editor so here there is a new button when you click on it it is going to be a live watch so if i now i continue the execution of the application it is going to update like the the values on the on the text editor okay so you could have
33:49
several watches set around when you open the file you can see the values of the of the variable which will have the value of the last time you the code went through there so it's
34:03
oops okay some nice thing thank you see yeah sorry well it is showing a
34:34
description of the object i mean if it is going to by default it is going to show the name of the the class okay but i
34:46
mean the debugger supports different display options so for example if that object has a to string implementation is going to show the value of to string for that object or you're not you can apply so some debug display attributes to the object so you could
35:10
set an expression to be shown for that object so object has three properties you could say okay show me uh first property then slice then the second property or whatever okay
35:22
of course you can also pin uh one member of the of the of the object instead of the object itself okay in this case
35:44
two weeks uh no no the the problem is that uh well well maybe it's i don't know if that is said the problem is that for the for the genetics collection this is this uh bug which has to be
36:06
one not a bug but that feature which has to be implemented in the sub debugger because in the in the collections well the developer has to create an instead of a generic object providing some uh some uh type argument and i have to to be able to instantiate that
36:28
that type and this is not just supported on but the resultant is going to and for a realist i don't remember if that is going to work but i can try because i don't know if um the second yes this case it is working so it shows
37:13
county one equals one okay so you can see here the values and then see the row view of the
37:25
array list here okay yeah stephan five minutes okay well this pretty much it and there are
37:46
other as i said improvements like list groups in the the completion list so you press shift down
38:01
but maybe you are not seeing this but this is actually fixing trunk i don't have that latest what here is what here it is doing is group the members by class name so instead of showing a very long list of members for the for complex classes it is going to show them
38:21
load by class name so you can quickly browse through all the members of the class and there's also this well a block selection oops oh i cannot show it i know okay
38:41
this is the block selection with uh alt and uh and move the mouse but i have this binding set here so i cannot show it now but uh it is nice in this version because it allows typing uh uh takes at seven lines at once so you can select a column and type and it's
39:02
type and all the columns um and those are the main changes we are planning for 2.4 one of the things we plan to do is to shorten the release time of the of mono develop and instead of spending one year making adding a lot of features we plan to shorten the release maybe
39:25
add less features but have more frequent releases so okay so that's all if you have any question yes i think what you showed is very impressive i had a look at a month ago and i noticed right away that there is a big difference in color syntax highlighting
39:45
visual studio also highlights class names other variable names you create yourself can model develop do that or that's on the plan yeah there are some changes we have to do in the in our c sharp support in the c sharp parser which is going to allow to do this kind
40:06
of thing because we have some we need some contextual operation information that we don't don't get from the parser and we are working on that okay yeah sorry
40:21
uh well sooner or later it will come i mean as soon as as mono switches to git it will be a matter of of days something that is very interesting is some guys in the community built a full git match implementation based on the java implementation called jk and get sharp right now
40:44
is self-hosting it is working and they even have a git k you know the tool that that's used they even have a git k version of this implemented with codepi so you know it's windows only that ui and i was you know on the way here in the plan i was thinking about doing
41:04
one inch to get sharp but you know anyways i i didn't do it but uh but just the work is there and it supports ssh you know it's working pretty much everything that you need to use so it's uh it only takes a you know a volunteer to do that
41:24
the uh we're probably going to switch monos git in in about two or three months any other question
41:48
okay so that's all to give