What's the next big thing!!!

Hi all.

There is a lot of chat about what should be in the next release. Every one is always ready to remind us how N Tracker items have yet to be addressed; how there is still some micro feature they really can't live without; or how there are all sorts of bugs that should be fixed before any new feature is implemented! And don't get me wrong I am one of those people quite often!

... BUT ...

What's going to be the next big thing! I mean back in the days of IntelliJ IDEA 1.x,2.x it was all about the refactoring revolution... and if I am not mistaken this is what brought most of us to IntelliJ. That, and closely related ideas like intentions/inspections which only can work if there is a powerful refactoring engine behind it.

So I ask you all: Forget anything that's in Tracker for a second... and tell me what's the next BIG thing you want in your favorite toolbox.

The hurdles I can see:
-More framework integration and tools: Do for vendor specific platforms like WS(and other J2EE), Hibernate, Velocity, XML, and others, what IDEA has done for POJ, ant, cvs etc. Which ones?

-Maybe help define a path for real Model Driven Development. I find at the moment all the tools out there are huge and require that you fully buy in to their approach. They have already started with such elements as the GUI plug-in, it seems.

-How about some support tools for design patterns. It seems to me that it would be great if there was an engine in IDEA similar to live template engines that could do multi class constructions based on templates and known/defined patterns.

these are just few ideas to get things stirring! It's even possible that these have been mentioned in tracker and forums...

I am just trying to start some conversation about big new features we need to take us further in the coming years. I am not even sure I like the things I put above... but they are worth discussion!

Florian Hehlen

48 comments
Comment actions Permalink

Florian Hehlen wrote:

If all these get resolved than we are no longer talking of code generation... this will be a complete paradigm shift! Sort of like nobody worries about not having access to assembler or machine language version of their app when developing in C/C++/Java/etc.


You are closer to the truth than you may realize.

Let's look at your specific examples from your original "What's the next
big thing?" post:

> The hurdles I can see:
> -More framework integration and tools: Do for vendor specific
platforms like WS(and other J2EE), Hibernate, Velocity, XML, and others,
what IDEA has done for POJ, ant, cvs etc. Which ones?

If frameworks were languages and languages could interoperate, you would
be able to program directly 'in' the framework instead of indirectly by
programming 'in' Java. You would also have full support from the IDE
including things like refactoring, error checking, debugging, navigation
and so on.

> -Maybe help define a path for real Model Driven Development. I find
at the moment all the tools out there are huge and require that you
fully buy in to their approach. They have already started with such
elements as the GUI plug-in, it seems.

Model Driven Development has the right motivation but a confused vision
that is leading down the wrong path. The correct vision is to give
programmers the freedom to be able to write programs in languages that
match the task-at-hand, rather than being forced to translate the
task-at-hand into some jack-of-all-trades master-of-none language like
Java. The 'path' to this goal is simply to provide tools that make
creating and using languages as easy as possible.

> -How about some support tools for design patterns. It seems to me
that it would be great if there was an engine in IDEA similar to live
template engines that could do multi class constructions based on
templates and known/defined patterns.

Design patterns are yet another attempt to express programs at 'higher
levels of abstraction'. The problem you are highlighting is that there
is no good support for them. By making languages extensible, you could
literally program 'in' design patterns. Or even 'higher' if you want...
('Higher' here means 'closer to the problem you're trying to solve')

As mentioned elsewhere, there will be an article by Sergey Dmitriev
coming in mid-September which goes into much more detail.

Regarding your concern about how long it will take for this to become
'an everyday tool': More important is how long it will take before it is
usable. If you can use it and it helps, does it really matter if it's
not an everyday thing? Do you really want to be stuck doing what the
majority is doing, just because the majority is doing it? Wouldn't you
prefer to use the best methods and tools available?

Ballpark estimate for general usability of MPS: Certainly less than 3
years, doubtfully earlier than 1 year, but private EAP within a few months.*

  • These are, of course, not official.


--
Rob Harwood
Software Developer
JetBrains Inc.
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink

Anki wrote:

I am breaking my head what this MPS looks like.
Please shed some light, if possible with your imaginative examples.


Patience, Grasshopper. ;)
The upcoming article will answer your questions completely. In the mean
time, another vague example to whet your appetite:
Wouldn't it be great if frameworks, instead of being simple class
libraries, were full-fledged languages?
For example, Java collections are handled by the java.util.* classes.
But code that uses java.util.* is messy, error-prone, verbose, difficult
to maintain, and sometimes difficult to understand. That's because it's
written in classes and methods combined with standard language features
like 'for' and 'while'.
If instead collections were full-fledged language features on their own
(instead of a motley mix of classes, methods, loops and conditionals),
the code could be much simpler, less verbose, usage errors could be
detected by the IDE, special collection-related refactorings could be
available, etc. etc.
MPS is basically an IDE combined with a bunch of languages to provide a)
a platform (like the Java platform) for writing programs, and b) a
platform (unlike any other) for creating custom languages. b) helps to
support a).
The concept of creating your own languages to write your programs in is
called Language Oriented Programming. MPS is an implementation of LOP.

--
Rob Harwood
Software Developer
JetBrains Inc.
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink

hi.

I am totally with you on this... 2 years ago, I chatted in person with Sergey at JetBrains Headquarters about this very subject... and after doing some reading I was totally convinced that this type of stuff would be the next big leap!

...but you say...

does it
really matter if it's
not an everyday thing? Do you really want to be stuck
doing what the
majority is doing, just because the majority is doing
it? Wouldn't you
prefer to use the best methods and tools available?


At the moment it really matters to me! Not personally but more to my work environment. As I have come to see it, IT decisions are rarely taken on the basis of how productive tools are but on issues concerned with market share; mind share; public visibility. You wouldn't believe how hard I have had to struggle (along with a few other convinced souls) to get IntelliJ approved for use where I work. And even today I would say it's easier to get a multi-thousand dollar JBuilder license than an IntelliJ license over here.

Added to all the red tape there is fear of change and simple jaded mentality. As I said in other posts it's taken over 20 years for OO to become mainstream and even today many people don't have a clue about what real OOP/OOD should look like or even think there is any value in it. Finally many Managers and older developers... the ones who can rubber stamp purchases... feel like they have seen every fad come and go, and cringe at anything newer than what they learned back in University!

So yes I think it matters to me... cause I want my employer to say YES when I want to use MPS, and more importantly, I think it matters to you because selling this will require adoption by as many developers as possible... not just a core of nutty developers like us! :)

Sad but true... at the end of the day IT innovation is not purely a question of how good a product is.... and I don't think I need to site any examples...

Florian

0
Comment actions Permalink

Hi Rob

Thanks for the example. You might have noticed that I had the same question in other thread also. Sorry for the duplicate questions :)

Just another comment
Long back I saw JSE (Java Syntax Extender) at http://www.ai.mit.edu/~jrb/jse/index.htm. I agree that this is some basic stuff. This JSE is some kind of pre-processing not to create language itself. Just confused a bit with this and MPS ;).

So what I understood with your explanation is -- MPS gives tools to wrap core stuff (I mean Java stuff) into some simple custom language statements and code generation happens via the compilers generated for this language by MPS. And, provides Editor for this custom language.

Right?

Got a bit of clear picture.

Will wait for the article.

Thanks

0
Comment actions Permalink

Florian Hehlen wrote:

At the moment it really matters to me! Not personally but more to my work environment.

So yes I think it matters to me... cause I want my employer to say YES when I want to use MPS, and more importantly, I think it matters to you because selling this will require adoption by as many developers as possible... not just a core of nutty developers like us! :)


I understand your point, and agree in some sense, but first I want to
try to simplify/clarify my previous post. Basically I was trying to say
two things: 1) You asked what the next big thing will be, and I really
can't see any other candidate than LOP (which admittedly, is a rather
large 'big thing' as you point out), and 2) just because it's a while
before it becomes mainstream, doesn't mean we should hold off our
support of it.

Your point (correct me if I get it wrong) seems to be: LOP seems to be a
paradigm shift, which will invoke peoples' fear of change, and therefore
be a difficult 'next big thing'. That's where I agree with you. Where I
disagree is the course of action to take based on this knowledge. You
seem to be saying that it will be too hard, and so we should look for
some simpler/easier/smaller 'next big thing'. This is how I interpret
when you said 'So yes I think it matters to me... cause I want my
employer to say YES when I want to use MPS'. I disagree. I don't think
we should turn away from the next big thing just because it is
difficult. If the 'next big thing' is a massive paradigm shift, then so
be it.

Imagine if the XP camp had listened to the mainstream and given up on
their boat-rocking. Things like refactoring, unit testing, and the agile
philosophy would still be in the dark, practiced by only a few. Sure, XP
as a whole has not been widely adopted, but some parts of it have been,
and those parts would not have been if there had not been such a push
for XP as a whole.

You asked 'What's the next big thing?' You are inherently looking for
something new, and different, and better. You are asking for change. So
what if your managers fear change? Everyone does. But change must
happen, and we must fight for change. If managers fear change, we must
persuade them to embrace change. Remember how hard it was to convince
managers to embrace refactoring and unit testing? I do. Now these new
techniques are everywhere. What happened? People who believed in them
didn't give up; they kept writing articles, kept building support tools,
kept talking about it, explaining it, and teaching it.

We can affect the speed of adoption of new paradigms through persistent
persuasion. It also helps tremendously if the new paradigm has a
dramatic observable effect on productivity.

Technology adoption begins with the innovators. That's companies like
JetBrains and 'nutty developers' like you and me. Whether this paradigm
shift takes 10 years or 2 years to get to the early-adopter stage is
really up to us. Maybe it's not the conclusion you're looking for, but I
think it's the closest to reality. The other 'big things' that are out
there always seem to me to be half-baked attempts at LOP. Why not just
go straight for the finish line?

--
Rob Harwood
Software Developer
JetBrains Inc.
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink

Anki wrote:

So what I understood with your explanation is -- MPS gives tools to wrap core stuff (I mean Java stuff) into some simple custom language statements and code generation happens via the compilers generated for this language by MPS. And, provides Editor for this custom language.

Right?


You can think of it something like that, but it's somewhat more than
that. For instance, the programmer will have a lot of control over what
languages to use (doesn't have to be based on Java at all), how
compilation happens (could have a wide variety of complex
transformations, not just replacement macros), and editors will be fully
customizable in just about any way imaginable.


--
Rob Harwood
Software Developer
JetBrains Inc.
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink

> Your point (correct me if I get it wrong) seems to
> be: LOP seems to be a
> paradigm shift, which will invoke peoples' fear of
> change, and therefore
> be a difficult 'next big thing'. That's where I agree
> with you. Where I
> disagree is the course of action to take based on
> this knowledge. You
> seem to be saying that it will be too hard, and so
> we should look for
> some simpler/easier/smaller 'next big thing'. This is

You miss understand my point. I am not saying that because it to hard or to far away we should drop it. I am asking, rather, how do we get from here to there? How do we pave the way for adoption so that rather than have a huge step to take we do it in small steps.

> difficult. If the 'next big thing' is a massive
> paradigm shift, then so
> be it.

Well I disagree! And here is again is my point. Intellij IDEA has paved the way for making many java idioms and practices easy to learn and integrate into work-flow. This I think is key for creating acceptance. Look at languages like SmallTalk who by many standards were superior to C++ and or Java. One of the often stated reason for the demise of SmallTalk is simply that the industry did not gather around it like it did for C++ and Java. Few or no high level libraries were created for it, few development tools, which all resulted in it's demise. Yet I keep on hearing about how it was just so ahead of it's time; so much more adavnced than Java or C++; a real OO language; etc,etc,etc.

> Imagine if the XP camp had listened to the mainstream
> and given up on
> their boat-rocking. Things like refactoring, unit
> testing, and the agile
> philosophy would still be in the dark,

Like I said before... I think that philosophy would still be in the dark if it had not been for IDE's implementing some of the key features of XP! Have you ever done refactoring with JBuilder 4 or even with command line tools???? XP goes out the window after about 2 minutes!

> Technology adoption begins with the innovators.
> That's companies like
> JetBrains and 'nutty developers' like you and me.

Right. And what I am afraid of and want to suggest could happen is that JetBrains is so ahead of it's time that MPS becomes like SmallTalk. The implementation that paved the way but not the one that people use in the end. Ok maybe that's good enough for JetBrains... I suspect many at JetBrains would be happy if they are remembered as the company that first did it. And of course I will use what ever is best when the time comes.

so to summarize: I am convinced that LOP and Intentional Programming is the next Really Big Thing. I also agree that MPS, it seems, will be an amazing step in that direction. In other words you are preaching to the choir.

It just seems like JB and a few hard core developers will get way ahead of everyone and then have to wait for the world to catchup. So my suggestion is this. Add functionality to IDEA so that people catch up: ASpectJ(which is planned, I know), codegeneration frameworks, rule engine frameworks, ontology tools, etc. These are all concepts that need to be explored by developers before they can jump into LOP.

It's just my 2 cents.

BTW... when I started this thread and I asked for the next Big Thing... well I really was talking within the scope of IDEA and this is where my suggestion goes. Make IDEA a stepping stone to LOP and MPS.

Florian

0
Comment actions Permalink

Florian Hehlen wrote:

Right. And what I am afraid of and want to suggest could happen is that JetBrains is so ahead of it's time that MPS becomes like SmallTalk.

Ok, I understand better now.

In other words you are preaching to the choir.

Yes, I was aware of that. ;) Actually, partly I'm trying to spark some
discussion, which is what LOP needs a lot of right now. We'll start with
the choir, then expand to the skeptics and critics as we progress.

It just seems like JB and a few hard core developers will get way ahead of everyone and then have to wait for the world to catchup.

That is certainly a danger. Fortunately, the company is relatively small
and doesn't need a huge revenue stream to survive; a modest one will do.

So my suggestion is this. Add functionality to IDEA so that people catch up: ASpectJ(which is planned, I know), codegeneration frameworks, rule engine frameworks, ontology tools, etc. These are all concepts that need to be explored by developers before they can jump into LOP.

Your suggestion is a good one, and we have in fact already started on a
plug in for IDEA.

So, now that I see your point better, let me try to address it briefly.
What you are illustrating has a name. It is called Crossing the Chasm,
coined by Geoffrey A. Moore in his book of the same name:
http://www.amazon.com/exec/obidos/tg/detail/-/0060517123/102-5062229-7237766

Crossing the chasm means breaking out of the Early Adopter phase of
technology adoption, and breaking into the Early Majority phase. Many
technologies fail to make this leap and end up falling into the chasm
after basically running out of steam (usually money in the case of
companies). If some other technology crosses the chasm first, then you
are basically locked out of the mainstream and stuck in second place at
best.

All I can say is that we are aware of this pattern and will fight to
overcome it. It could potentially be a tough fight if we meet tough
competition, which is almost certain. It is essentially a marketing
problem; finding a niche market in the mainstream and exploiting it to
expand into other niches, until finally establishing a dominant
presence. At this stage, we have to prove that LOP is the best and most
popular alternative.

However, that's a ways off. We're still in the Innovator stage where it
is a technology problem, not a marketing problem. At this stage, we have
to prove that LOP is possible. I can only think of IP as having reached
this stage, but if you think about it, it has been stuck in this stage
for over 10 years.

Next is the Early Adopter stage where it becomes a problem of practical
advantage. At that stage, we will have to show that LOP provides a good
advantage at a reasonable expense (time and money). Nobody has reached
this stage yet.

I guess to sum up: We'll cross that chasm when we come to it. ;)

We will of course focus on making it easy to use right from the very
beginning. That's our motto after all. What we will also need to do is
generate interest and 'buzz' about it, to essentially educate people
about it. That's why we're publishing this article, and there will be
more articles in the coming months.

--
Rob Harwood
Software Developer
JetBrains Inc.
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink

Rob Harwood (JetBrains) wrote:

At this stage, we have to prove that LOP is the best and most
popular alternative.

I should say 'best supported, and most popular'.

--
Rob Harwood
Software Developer
JetBrains Inc.
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink

Wow
Thats wonderfull.
I guess I need to think BIIIG :)

Any how thanks for the clarifications, will keep watching.

Anki.N

0
Comment actions Permalink

Just look at what eclipse can do with its windows, and you know what i want too :)

0
Comment actions Permalink

Ok, back on to 'big things' for a moment. If we look at the history of manufacturing, and I am not saying programming is 100% analogous, then one of the next big things should be 'componentisation' and a means of distribution. Imagine catalogs of 'components' I can order/buy perhaps for fractions of a cent and plug together in a virtual circuit board to get the functionality I need. I guess I am thinking of a different economic model of programming.

0
Comment actions Permalink

Ok, back on to 'big things' for a moment. If we look
at the history of manufacturing, and I am not saying
programming is 100% analogous, then one of the next
big things should be 'componentisation' and a means
of distribution. Imagine catalogs of 'components' I
can order/buy perhaps for fractions of a cent and
plug together in a virtual circuit board to get the
functionality I need. I guess I am thinking of a
different economic model of programming.


Didn't they try this with VB a few years ago?
Isn't this what Jakarta commons is all about?
So, it can't be the next big thing.

0
Comment actions Permalink

David Browning wrote:

Ok, back on to 'big things' for a moment. If we look at the history of manufacturing, and I am not saying programming is 100% analogous, then one of the next big things should be 'componentisation' and a means of distribution. Imagine catalogs of 'components' I can order/buy perhaps for fractions of a cent and plug together in a virtual circuit board to get the functionality I need. I guess I am thinking of a different economic model of programming.


It's an intuitive argument, but I think it is flawed, based on the
reality of programming. Componentization is actually a fairly old idea
as programming ideas go (COM, CORBA, and lots more). I think it has
failed as being a 'big' thing. Regarding 'programming and
manufacturing', see:
http://c2.com/cgi/wiki?TheSourceCodeIsTheDesign
http://c2.com/cgi/wiki?ProgrammingAintManufacturing
http://c2.com/cgi/wiki?AnalogyBetweenProgrammingAndManufacturing

--
Rob Harwood
Software Developer
JetBrains Inc.
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink


next big things should be 'componentisation' and a
means of distribution. Imagine catalogs of


reality of programming. Componentization is actually
a fairly old idea
as programming ideas go (COM, CORBA, and lots more).


I think David might be talking about something else. You are talking about the failure of component frameworks. David is talking about fully implemented components that are defined by known api's. And I think those are relatively new and have a lot of potential. We can see this in the succes of projects such as Log4J, Apache Server, etc. They are more than Framework they are completely ready to go solutions... lego blocks ready for snapping together! Removing huge chuncks of work from writting new apps.

I think that this is significant. Specially if you consider how many users contribute to strengthening these basic components through open source, while deciding to use CORBA in a project does not provide an access to make the protocol better... for example.

Florian

0
Comment actions Permalink

Florian is right, many thanks! I was kind of hestiating to revive a topic that had been flizzling out.

But I also have in mind a different economic model for the distribution of the lego blocks and small, populated pcbs as I think of them. Perhaps even an ide which plays some role in the distribution, recording the usage I make of these components and/or ensuring the supplier gets paid for the instances I use (hopefully in cents, or fractions thereof, per instance!). Open source components would be free, of course.

What I am getting at is that the ide not only is my workbench, but also plays a role in the intelligent delivery of useful snap-in functionality and perhaps services.

David

0
Comment actions Permalink

Is there a specific tool that can be used for language oriented programming?


__________________
agile development methodology

0

Please sign in to leave a comment.