createComponent() / javaProxy() etc

Den: Deprecate != some kind of deadline for discontinuation, per se.

Actually it does. The term deprecated means that no new changes will be made to the functionality and that it will be removed within the next two major versions (Thanks a lot Microsoft). It also says that if Adobe added functionality that Lucee would never pick up those changes because it is slated for no change and removal.
The term deprecated has evolved and therefore we all have to be careful when it is used.

SteveSent from my iPhone

On Apr 19, 2015, at 4:34 AM, denstar <@denstar> wrote:

Deprecate != some kind of deadline for discontinuation, per se.

Ok, the armchair-uber-coder comment was a bit much.

Only one participant is “playing rough” though, and frankly I’ve had
enough of it.

Crap like that is what makes some devs throw in the towel-- it needs to
be addressed when it gets out of hand.

-DenOn 4/18/15 5:38 PM, Kai Koenig wrote:

Ok people, can everyone please calm down for a moment and take their
hands off the keyboard.

  1. Adam’s points are valid, too — the vast majority of CFML developers
    don’t give a damn crap about what happens below the CFML language level.
    All they care about is: CreateObject(“java”,…) gives some thing that
    they can use to call Java functions. That’s the reality and I think a
    good point of “language design” is to take this history into account.

Changes like the one discussed here can totally be done in the .lucee
version of the language, go for it. But don’t break a lot of existing
CFML code that exists out there.

Ok, I’m pretty oblivious, so forgive me, but isn’t the discussion about
adding new functions versus just “overloading” createObject?On 4/18/15 5:38 PM, Kai Koenig wrote:

But don’t break a lot of existing CFML code that exists out there.
I would never allow that!!!
CreateObject is not touced at all, it is only deprecated (what only has a small influence on the documentation) , it needs a lot that i remove a deprecated functionality.
I only remove a deprecated functionality if nearly nobody use it and there is a possible harm with it.
I was for example considering to remove what was never supported in Railo/Lucee (it only throws a “not supported exception”) but it is still in the core (only CFML) because it does no harm.

By deprecating a feature you’re telling the intended audience that this feature is outdated and the “old” or “bad” way of writing code. It also might or might not be removed at any time.

Even worse: you’re deprecating the feature for no good reason. Yes, looking at it with the eyes of a Java developer I’d agree: It’s confusing. It’s stupid and a collection of probably accidentally created functionality back from the days in ACF 6.

But: to be frank - if I have to write cross-CFML server code, I don’t want to deal with the fact that Lucee might at some point get rid of CreateObject — which works and does its job just fine — just for the sake of a language cleanup that (in this particular instance/discussion) I think shouldn’t happen in the CFML version of Lucee in the first place.

Solution: change it in your new language version .lucee, problem solved.

Cheers
Kai

Modifying createObject, vs. encouraging the use of namesAreHard(), makes
for code that is harder to port-- you’d need a regex grep to find the
difference without a language parser, vs. a simple grep.

When I talk about portable code, I mean code — like FW/1, ColdBox, etc — that needs to run unchanged on multiple platforms. I’m not talking about changing ACF-compatible code to run on Lucee. Libraries and frameworks need to run identically on ACF, Railo, Lucee without code changes. And without being forced to use features that one of those engines has deprecated.

there’s plenty of substance we could be focused on.

Adam tried to get Micha to focus on substance but Micha refused to answer the specific, substance-based question. Your flowery lets-all-hug-and-get-along responses aren’t exactly helping keeping things focused on substance either.

Sean Corfield – (904) 302-SEAN
An Architect’s View – http://corfield.org/

“Perfection is the enemy of the good.”
– Gustave Flaubert, French realist novelist (1821-1880)On Apr 19, 2015, at 1:34 AM, denstar <@denstar> wrote:

Based on the history of CFML it is a good bet that createObject() will
never be removed
.

Then do not deprecate it. It sends the wrong message.

What @micha is trying to say – i believe – is that Lucee will not
attempt to extend or improve createObject().

He doesn’t need to deprecate the function to take that position. There’s
plenty of CFML features that absolutely shouldn’t be extended or improved
– but should not be deprecated.

In order to improve on createObject() we have no choice but to create a
new set of functions.

BS.

Lets not run amok with wild stories of “createObject() will be removed and
break all existing CFML apps”.

Requiring library and framework authors to use a deprecated language
feature in order to write portable code is a bad path to go down.On Sat, Apr 18, 2015 at 10:34 PM, Geoff Bowers <@Geoff_Bowers> wrote:

Sean A Corfield – (904) 302-SEAN
An Architect’s View – http://corfield.org/
World Singles, LLC. – http://worldsingles.com/

“Perfection is the enemy of the good.”
– Gustave Flaubert, French realist novelist (1821-1880)

100% agree with Sean on all the points below.

Me too. Especially this one:

In order to improve on createObject() we have no choice but to create a
new set of functions.

BS.On Sunday, 19 April 2015 07:28:31 UTC+1, Kai Koenig wrote:


Adam

What “deprecated” means in practice varies by project and parlance.
Microsoft’s definition does not apply everywhere, neither does Java’s.
Plenty of projects have had deprecated bits of API around for years…
I’m not saying that’s good or bad, it’s just how it is.

I’ve found the comment about the deprecation to be the de-facto
definition-- “deprecated - only around for < 1.3 backwards compat” or
“deprecated - will be removed in version 2”, for example.

That said, and to malapropriate Hamlet-- to deprecate or not to
deprecate, that is not the question. =)

I mean, that’s one of the questions, however I was commenting more on
process than specifics. I’m a big fan of constructive communication,
which Adam does not seem to be-- and he posts /so often/ it’s effecting
the tone of the list. I don’t want him to stop posting, I want him to
take some of what he’s prescribing for others. (If wants were fonts,
we’d all have Lexicon.)

This post won’t really help, as it’s doing exactly the same thing-- if I
was practicing what I preach I’d be bumping a couple of the positive
posts that have come through this week, extolling teh virtues… how
amazing it is that we are where we are… OMG version 5 LIVES! and
talking about content instead of tone… maybe answering a question or
two… leading by example vs. preaching, basically. But screw it, the
world needs sticks too. =)

-DenOn 4/19/15 8:05 AM, Steven Durette wrote:

Den: Deprecate != some kind of deadline for discontinuation, per se.

Actually it does. The term deprecated means that no new changes will
be made to the functionality and that it will be removed within the
next two major versions (Thanks a lot Microsoft).
It also says that if Adobe added functionality that Lucee would never
pick up those changes because it is slated for no change and removal.
The term deprecated has evolved and therefore we all have to be
careful when it is used.

Steve

Sent from my iPhone

On Apr 19, 2015, at 4:34 AM, denstar <@denstar> wrote:

Deprecate != some kind of deadline for discontinuation, per se.

If you deprecate createObject() then there is no way for people to write portable, cross-engine code unless they use a feature that is deprecated in one of the engines. That basically says you are “deprecating portability”.

Deprecation says “don’t use this - it’s a bad way to write code”.

Deprecation says “change your code to use this other construct”. A construct that is not portable.

I’m sorry, but that’s just not an acceptable situation to put library and framework authors in.

Since the fork, the tone of this mailing list has become more and more like Open BlueDragon: “we (the language developers) don’t like features A, B, and C so we’re introducing non-portable, incompatible features X, Y, and Z and telling people to use those”.

The Lucee fork effectively killed Railo. That’s fair enough, it was your code to decide what to do with. There are still 2,000 folks on the Railo mailing list and virtually zero activity — 32 posts in April so far compared to normal monthly traffic of 400-500 posts. But there are only just over 500 people on this mailing list. So you haven’t migrated people to Lucee, you’ve just cut the community to a quarter of its size. That’s… terrible. For comparison, there are still over 700 people on the OpenBD mailing list despite “no one” using it.

Your documentation around Lucee 5 has been appalling. Almost every single new feature failed to work the way the documentation said and some features still aren’t documented. Now you’ve implemented objectNew() after telling us you’d implement loadComponent() and the documentation is still wrong. How are we supposed to know what to test when you can’t tell us?

At World Singles, I migrated our DEV setup from Railo to Lucee 4.5, at launch, with plans to migrate QA and production soon after. Now that looks like a dead end and we’d need, instead, to migrate to Lucee 5 which is not a drop in replacement (indeed, the documentation for the 4.5 → 5 upgrade is minimal at best and poorly written so I have no confidence in even attempting to script that upgrade). The lack of a roadmap and the lack of any clear communication around the project at all (except for some of Andrew Dixon’s work) is extremely disappointing. It really doesn’t inspire confidence.

This latest kerfuffle over createObject() has been the final nail in the coffin for me.

I closed out our Railo to Lucee migration ticket as “Will Not Fix” and I closed out a couple of other tickets that concerned Lucee 5, OSGi and changing with infrastructure as “Will Not Fix” as well.

At this point, I can’t envisage moving our servers to Lucee unless LAS seriously gets its act together — and right now I couldn’t recommend Lucee to anyone else either, in good conscience.

I hope you turn the project around — and soon — and maybe it’ll become something worth considering in the future but everything I’ve seen here over the last couple of months has further convinced me that World Singles’ decision to move away from CFML was the right thing to do, and now we’ll just accelerate that…

Sean Corfield – (904) 302-SEAN
An Architect’s View – http://corfield.org/

“Perfection is the enemy of the good.”
– Gustave Flaubert, French realist novelist (1821-1880)On Apr 18, 2015, at 5:47 PM, Michael Offner <@Michael_Offner> wrote:

CreateObject is not touced at all, it is only deprecated (what only has a small influence on the documentation)

I’m personally ok with learning that createObject has been deprecated, but
won’t be removed. Kind of a deprecated with an *. However, it seems
like for some people it crosses a red line. Perhaps the deprecation could
be removed in favor of creating a very simple top level style guide that
discourages it’s use. Or even simply put a note in the Lucee createObject
documentation that describes the differing opinions. Basically switch from
saying that it’s “deprecated but won’t be removed” to it’s “supported but
not encouraged” . To me it seems like basically the same thing.

I also agree with Adam that that it only really matters within Lucee’s cfml
support. When it comes to the Lucee dialect it doesn’t really matter.

-MattOn Sunday, April 19, 2015 at 7:05:50 AM UTC-7, Steven Durette wrote:

Den: Deprecate != some kind of deadline for discontinuation, per se.

Actually it does. The term deprecated means that no new changes will be
made to the functionality and that it will be removed within the next two
major versions (Thanks a lot Microsoft). It also says
that if Adobe added functionality that Lucee would never pick up those
changes because it is slated for no change and removal.
The term deprecated has evolved and therefore we all have to be careful
when it is used.

Steve

Sent from my iPhone

On Apr 19, 2015, at 4:34 AM, denstar <vallia...@gmail.com <javascript:>> wrote:

Deprecate != some kind of deadline for discontinuation, per se.

Removing the deprecated flag then also mean to remove this new functions
from the CFML dialect, then having both makes no sense. This means also to
include the new functionality javaNew (loading by bundle definition) and
webserviceNew (add addional arguments like user/pass) has to go into
createObject. We will form the tech advisory board next week an decide over
this next week.

@sean I’m sorry to hear that of course it is your decision. I did my best
to have a as good as possible doc in place, I’m sorry this was not enough.
Since the switch to Lucee our resources are very limited, we will try to
improve the doc as fast as possible. Btw the doc was updated with the new
function yesterday. It would help if you or someone else would point out
what pieces you miss in the doc, if you can.

MichaAm Sonntag, 19. April 2015 schrieb Adam Cameron :

On Sunday, 19 April 2015 07:28:31 UTC+1, Kai Koenig wrote:

100% agree with Sean on all the points below.

Me too. Especially this one:

In order to improve on createObject() we have no choice but to create a
new set of functions.

BS.


Adam


You received this message because you are subscribed to the Google Groups
“Lucee” group.
To unsubscribe from this group and stop receiving emails from it, send an
email to lucee+unsubscribe@googlegroups.com
<javascript:_e(%7B%7D,‘cvml’,‘lucee%2Bunsubscribe@googlegroups.com’);>.
To post to this group, send email to lucee@googlegroups.com
<javascript:_e(%7B%7D,‘cvml’,‘lucee@googlegroups.com’);>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/lucee/2a2f0e0a-6191-4407-9309-7c32bec00d07%40googlegroups.com
https://groups.google.com/d/msgid/lucee/2a2f0e0a-6191-4407-9309-7c32bec00d07%40googlegroups.com?utm_medium=email&utm_source=footer
.
For more options, visit https://groups.google.com/d/optout.

There’s been a lot of talk about framework authors and createObject() being
deprecated. Sean is the only framework author who’s weighed in, I believe.

I’ll speak for ColdBox here. We aim to support both the Adobe CF engine,
Railo, and Lucee. Lucee has announced that createObject() is not the best
way to instantiate objects, but has also stated it will always remain in
their CFML compatibility. Therefore Coldbox will happily continue to use
CreateObject() for the foreseeable future. That’s it! We’re not worried at
all since the intention has been clearly stated.

Thanks!

~Brad

I can probably weigh in for cfWheels here - we intend to support
ACF/Railo/Lucee. Our next release has Lucee support (which, being so
closely tied to Railo, was a matter of about 5 code changes as it stands),
but obviously due to cross platform needs, I can’t see how how the
framework could use “.lucee” without a major fork, so the backwards
compatibility thing is still a big deal.On Monday, 20 April 2015 16:28:34 UTC+1, Brad Wood wrote:

There’s been a lot of talk about framework authors and createObject()
being deprecated. Sean is the only framework author who’s weighed in, I
believe.

I’ll speak for ColdBox here. We aim to support both the Adobe CF engine,
Railo, and Lucee. Lucee has announced that createObject() is not the best
way to instantiate objects, but has also stated it will always remain in
their CFML compatibility. Therefore Coldbox will happily continue to use
CreateObject() for the foreseeable future. That’s it! We’re not worried at
all since the intention has been clearly stated.

Thanks!

~Brad

There has been lot of useful and plenty of unacceptable argument over a few
issues.

Firstly, the use of the word deprecated - the LAS understands this
concern and will be making its intentions clear. There will never be any
danger of these features being removed from Lucee unless Adobe removes
them. The wording that will be used to describe these features will be
pinned down shortly and communicated. Please let us not have any more
discussion about the semantics of it (we are all in agreement that the
communication has been far from perfect).

What is left of this discussion are disagreements on:

  • Whether or not it is possible to achieve what the new CreateComponent()
    function achieves within CreateObject() without breaking compatibility
  • Whether or not it is more desirable to add further permutations to
    CreateObject() vs adding separate, more singular purposed functions
  • The naming of the new functions

These are all opinions, and each side of the argument has expressed plenty
of valid arguments. Let us not underestimate the difficult in choosing ‘the
most desirable’ route forward here, nor kid ourselves that there is a
single perfect solution.

I’d like to suggest that people refrain from discussing this particular
topic as all opinions have already been expressed well enough to be mulled
over. LAS are preparing official communications around this subject which
will absolutely be informed by everyone’s input.On 19 April 2015 at 21:50, Sean Corfield <@Sean_Corfield> wrote:

On Apr 19, 2015, at 1:34 AM, denstar <@denstar> wrote:

Modifying createObject, vs. encouraging the use of namesAreHard(), makes
for code that is harder to port-- you’d need a regex grep to find the
difference without a language parser, vs. a simple grep.

When I talk about portable code, I mean code — like FW/1, ColdBox, etc —
that needs to run unchanged on multiple platforms. I’m not talking about
changing ACF-compatible code to run on Lucee. Libraries and frameworks need
to run identically on ACF, Railo, Lucee without code changes. And
without being forced to use features that one of those engines has
deprecated
.

there’s plenty of substance we could be focused on.

Adam tried to get Micha to focus on substance but Micha refused to answer
the specific, substance-based question. Your flowery
lets-all-hug-and-get-along responses aren’t exactly helping keeping things
focused on substance either.

Sean Corfield – (904) 302-SEAN
An Architect’s View – http://corfield.org/

“Perfection is the enemy of the good.”
– Gustave Flaubert, French realist novelist (1821-1880)


You received this message because you are subscribed to the Google Groups
“Lucee” group.
To unsubscribe from this group and stop receiving emails from it, send an
email to lucee+unsubscribe@googlegroups.com.
To post to this group, send email to lucee@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/lucee/9ADB6C00-F460-4137-874F-F175D7200B99%40corfield.org
https://groups.google.com/d/msgid/lucee/9ADB6C00-F460-4137-874F-F175D7200B99%40corfield.org?utm_medium=email&utm_source=footer
.

For more options, visit https://groups.google.com/d/optout.


Pixl8 Interactive, 3 Tun Yard, Peardon Street, London
SW8 3HT, United Kingdom

T: +44 [0] 845 260 0726• W: www.pixl8.co.uk• E: info@pixl8.co.uk
Follow us on: Facebook http://www.facebook.com/pixl8 Twitter
http://www.twitter.com/pixl8 LinkedIn
http://www.linkedin.com/pixl8CONFIDENTIAL
AND PRIVILEGED - This e-mail and any attachment is intended solely for the
addressee, is strictly confidential and may also be subject to legal,
professional or other privilege or may be protected by work product
immunity or other legal rules. If you are not the addressee please do not
read, print, re-transmit, store or act in reliance on it or any
attachments. Instead, please email it back to the sender and then
immediately permanently delete it. Pixl8 Interactive Ltd Registered in
England. Registered number: 04336501. Registered office: 8 Spur Road,
Cosham, Portsmouth, Hampshire, PO6 3EB

Since FW/1 supported Lucee at launch it should go without saying that FW/1 will continue to support Lucee (at least as a CFML engine — providing a Lucee-dialect-only version of FW/1, optimized specifically for Lucee, is an interesting option).

Like any other library or framework that has a single cross-platform code base, FW/1 and DI/1 will continue to use createObject() — and will continue to deliberately construct uninitialized instances where they need to do so — and it will continue to pain me that, as part of that commitment to portability, I have to use a feature that one engine has deprecated… :slight_smile:

SeanOn Apr 20, 2015, at 1:13 PM, Tom King <@Tom_King> wrote:

I can probably weigh in for cfWheels here - we intend to support ACF/Railo/Lucee. Our next release has Lucee support (which, being so closely tied to Railo, was a matter of about 5 code changes as it stands), but obviously due to cross platform needs, I can’t see how how the framework could use “.lucee” without a major fork, so the backwards compatibility thing is still a big deal.

On Monday, 20 April 2015 16:28:34 UTC+1, Brad Wood wrote:
There’s been a lot of talk about framework authors and createObject() being deprecated. Sean is the only framework author who’s weighed in, I believe.

I’ll speak for ColdBox here. We aim to support both the Adobe CF engine, Railo, and Lucee. Lucee has announced that createObject() is not the best way to instantiate objects, but has also stated it will always remain in their CFML compatibility. Therefore Coldbox will happily continue to use CreateObject() for the foreseeable future. That’s it! We’re not worried at all since the intention has been clearly stated.