[Mono-list] [OT] About the future of developement and the role of Mono

Philippe Lavoie philippe.lavoie@cactus.ca
Fri, 4 Apr 2003 11:08:31 -0500


This is a multi-part message in MIME format.

------_=_NextPart_001_01C2FAC4.6FD2FFF8
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hello guys,

=20

A bit of an out of topic e-mail for you to ponder on. Then again, maybe
not that much out of topic.

=20

I'll start with two observations:

-         there are a lot of software which duplicate functionality

-         it is hard to reuse software or integrate with other software

=20

The first observation is obvious, type a keyword on freshmeat or
sourceforge and see how many programs already claim to do it. The second
is also true, a lot of time, I would have like to use an editor that I
liked but couldn't use it for only an edit pane.

=20

What I'll describe next is (I think) already possible with Java.
Although, that is more a theoretical point of view then a practical one.

=20

As a developer, I'd like to be able to do the following: when I check-in
code inside a repository, I'd like a little pop-up window to show up
asking me which requirement I just coded for or which bug I just fixed.
It would also asked how many hours I worked on it, etc. In the case of a
requirement being coded for, the system would associate the files being
checked-in as part of that requirement. In the case of a bug, it would
mark the files (or the diff on the files) as part of the fix for the
bug. The diff on the fix could be reviewed by a dev lead (I do
commercial software and we need some structure when we develop). The
hours worked on could be used to update the timesheet and the project
plan.=20

=20

Now, the above is wishful thinking (on a Windows platform at least)
until something like the following exists. Instead of using CORBA, COM
or other component based interfaces (works great for embedded tasks, but
not for external tasks), I'd like my software to be able to do the
following:

-         ask the system which software does "requirement tracking" for
that user.

-         Send a basic "requirements assigned to user X request" to that
software (or alternatively, just send the request and see if at least
one software received it, this alternative removes the step above)

-         Get basic results.

-         Send a basic "get assigned bugs to user X" request

-         Get the result,

-         Etc...

=20

The idea is that software only need to implement a set of basic
functionality to interoperate with other software, anything more
advanced would have to be done through another set of calls (direct
calls like CORBA or COM or ...) or directly using the software.

=20

How is gnome (and mono) working to help me with this? Time tracking, is
one of the most basic activities, yet it could potentially benefit from
accessing the calendar of someone, the bug tracking system, the
requirement tracking system, etc. I think JMS and JINI can sort of do
that now.=20

=20

Anyway, I'm sure I'm missing something basic (like reading the proper
documentation) which would explain to me why it seems that GNOME or KDE
do not have a set of basic program interfaces. The basic interface would
define a set of basic functionality that has to be present on a program
of type X to be part of KDE or GNOME as a X program. An image converter
must implement functionality A,B and C before it can be registered as an
image converter inside Gnome or KDE.=20

=20

That would help in my programming, cause writing a program which
reads/writes an image is always a bitch. Case in point, I had to do one
recently. ImageMagick changed so much in the two years I stopped playing
with my program that it required a re-write. The C++ interface for
ImageMagick lacked the basic ability to create an image from memory... I
reverted to the C implementation. Before I did that, I looked at libpng,
the gnome image library, etc. They all seem so hard to use (lots of
setup to do)

=20

A program with the following lines would have been bliss

=20

            ImageConverter converter =3D new ImageConverter(
(ImageConverter)System.Gnome.ImageConverter);

=20
converter.create("image.png",memory,ImageMapping.RGB8,rows,columns);

=20

All this to ask, would mono help in the creation of those basic
interfaces? I think Gnome knows what are the basic applications (the set
can be changed over time) like calendar, bug tracking, word processing,
calculator, etc. Mono could act as a pro-active leader in this and
define a set of basic and minimal functionality that a program needs to
implement to be called a calendar or an e-mail client or ...

=20

They could all have basic functionality pre-defined for each type of
application. Just to start with inter-operability, no?

=20

Phil

=20

PS Sorry about the above, I'll need to get some more coffee and the
future of software will look all bright and shiny.


------_=_NextPart_001_01C2FAC4.6FD2FFF8
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html>

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii">
<meta name=3DGenerator content=3D"Microsoft Word 10 (filtered)">

<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{font-family:Arial;
	color:windowtext;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
	{page:Section1;}
 /* List Definitions */
 ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
-->
</style>

</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>Hello guys,</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>A bit of an out of topic e-mail for you to ponder on. Then =
again, maybe
not that much out of topic.</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>I&#8217;ll start with two observations:</span></font></p>

<p class=3DMsoNormal style=3D'margin-left:.5in;text-indent:-.25in'><font =
size=3D3
face=3D"Times New Roman"><span style=3D'font-size:12.0pt'>-<font =
size=3D1
face=3D"Times New Roman"><span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></font>there are a lot of software which duplicate
functionality</p>

<p class=3DMsoNormal style=3D'margin-left:.5in;text-indent:-.25in'><font =
size=3D3
face=3D"Times New Roman"><span style=3D'font-size:12.0pt'>-<font =
size=3D1
face=3D"Times New Roman"><span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></font>it is hard to reuse software or integrate =
with
other software</p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>The first observation is obvious, type a keyword on freshmeat or =
sourceforge
and see how many programs already claim to do it. The second is also =
true, a
lot of time, I would have like to use an editor that I liked but =
couldn&#8217;t
use it for only an edit pane.</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>What I&#8217;ll describe next is (I think) already possible with =
Java.
Although, that is more a theoretical point of view then a practical =
one.</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>As a developer, I&#8217;d like to be able to do the following: =
when I
check-in code inside a repository, I&#8217;d like a little pop-up window =
to
show up asking me which requirement I just coded for or which bug I just =
fixed.
It would also asked how many hours I worked on it, etc. In the case of a
requirement being coded for, the system would associate the files being
checked-in as part of that requirement. In the case of a bug, it would =
mark the
files (or the diff on the files) as part of the fix for the bug. The =
diff on
the fix could be reviewed by a dev lead (I do commercial software and we =
need
some structure when we develop). The hours worked on could be used to =
update
the timesheet and the project plan. </span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>Now, the above is wishful thinking (on a Windows platform at =
least)
until something like the following exists. Instead of using CORBA, COM =
or other
component based interfaces (works great for embedded tasks, but not for
external tasks), I&#8217;d like my software to be able to do the =
following:</span></font></p>

<p class=3DMsoNormal style=3D'margin-left:.5in;text-indent:-.25in'><font =
size=3D3
face=3D"Times New Roman"><span style=3D'font-size:12.0pt'>-<font =
size=3D1
face=3D"Times New Roman"><span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></font>ask the system which software does =
&#8220;requirement
tracking&#8221; for that user.</p>

<p class=3DMsoNormal style=3D'margin-left:.5in;text-indent:-.25in'><font =
size=3D3
face=3D"Times New Roman"><span style=3D'font-size:12.0pt'>-<font =
size=3D1
face=3D"Times New Roman"><span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></font>Send a basic &#8220;requirements assigned to =
user X
request&#8221; to that software (or alternatively, just send the request =
and
see if at least one software received it, this alternative removes the =
step
above)</p>

<p class=3DMsoNormal style=3D'margin-left:.5in;text-indent:-.25in'><font =
size=3D3
face=3D"Times New Roman"><span style=3D'font-size:12.0pt'>-<font =
size=3D1
face=3D"Times New Roman"><span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></font>Get basic results.</p>

<p class=3DMsoNormal style=3D'margin-left:.5in;text-indent:-.25in'><font =
size=3D3
face=3D"Times New Roman"><span style=3D'font-size:12.0pt'>-<font =
size=3D1
face=3D"Times New Roman"><span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></font>Send a basic &#8220;get assigned bugs to =
user X&#8221;
request</p>

<p class=3DMsoNormal style=3D'margin-left:.5in;text-indent:-.25in'><font =
size=3D3
face=3D"Times New Roman"><span style=3D'font-size:12.0pt'>-<font =
size=3D1
face=3D"Times New Roman"><span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></font>Get the result,</p>

<p class=3DMsoNormal style=3D'margin-left:.5in;text-indent:-.25in'><font =
size=3D3
face=3D"Times New Roman"><span style=3D'font-size:12.0pt'>-<font =
size=3D1
face=3D"Times New Roman"><span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></font>Etc&#8230;</p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>The idea is that software only need to implement a set of basic
functionality to interoperate with other software, anything more =
advanced would
have to be done through another set of calls (direct calls like CORBA or =
COM or
&#8230;) or directly using the software.</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>How is gnome (and mono) working to help me with this? Time =
tracking, is
one of the most basic activities, yet it could potentially benefit from
accessing the calendar of someone, the bug tracking system, the =
requirement tracking
system, etc. I think JMS and JINI can sort of do that now. =
</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>Anyway, I&#8217;m sure I&#8217;m missing something basic (like =
reading the
proper documentation) which would explain to me why it seems that GNOME =
or KDE
do not have a set of basic program interfaces. The basic interface would =
define
a set of basic functionality that has to be present on a program of type =
X to
be part of KDE or GNOME as a X program. An image converter must =
implement
functionality A,B and C before it can be registered as an image =
converter
inside Gnome or KDE. </span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>That would help in my programming, cause writing a program which =
reads/writes
an image is always a bitch. Case in point, I had to do one recently. =
ImageMagick
changed so much in the two years I stopped playing with my program that =
it
required a re-write. The C++ interface for ImageMagick lacked the basic =
ability
to create an image from memory&#8230; I reverted to the C =
implementation. Before
I did that, I looked at libpng, the gnome image library, etc. They all =
seem so
hard to use (lots of setup to do)</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>A program with the following lines would have been =
bliss</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
; ImageConverter
converter =3D new ImageConverter( =
(ImageConverter)System.Gnome.ImageConverter);</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
; =
converter.create(&#8220;image.png&#8221;,memory,ImageMapping.RGB8,rows,co=
lumns);</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>All this to ask, would mono help in the creation of those basic
interfaces? I think Gnome knows what are the basic applications (the set =
can be
changed over time) like calendar, bug tracking, word processing, =
calculator,
etc. Mono could act as a pro-active leader in this and define a set of =
basic
and minimal functionality that a program needs to implement to be called =
a calendar
or an e-mail client or &#8230;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>They could all have basic functionality pre-defined for each =
type of
application. Just to start with inter-operability, no?</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>Phil</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'>PS Sorry about the above, I&#8217;ll need to get some more =
coffee and
the future of software will look all bright and shiny.</span></font></p>

</div>

</body>

</html>
=00
------_=_NextPart_001_01C2FAC4.6FD2FFF8--