Outsider perspective

it’s funny, no body is discussion about the general idea, only about the
extension for it :wink:
It’s like we asked if we should get a new car and everybody is already
discussing about the color of the car.

Adam asked what “what if” means, if this is already in the pipeline or
just a idea?
If the community likes the idea, we go for it! technically there are no
hurdles we cannot cross.

I didn’t see any point in discussing it further prior to clarifying whether
you were simply speculating, or whether it was going to happen. Which you
still haven’t. If it was merely a “what if…?” then my reaction is
“lovely, but can we discuss something concrete pls, otherwise we’re just
wasting our time”.

And the file extension “conversation” only cropped up because someone
admitted being too lazy to type five characters for a file extension. I
didn’t think it needed conversation at all. The extension should be
“.lucee”, and should be the same for both class and view files.

Still: ppl like chatting… there’s nothing wrong with that.

Sorry for the misunderstanding, Micha, but I thought it was pretty clear
that the vast majority was very much in favor. There’d be no other reason
to discuss the extension. :slight_smile:

To be extra clear, I personally could not possibly be more in favor of the
idea of moving forward and leaving Adobe completely in the dust so that
“outsiders” can be enticed to give it a try, and this idea is quite likely
the best way to do just that.

don’t get me wrong, it was just great to watch that people already embraced
that idea like this.

Micha

Please not .lucee - those extra two chars would add days to my typing :slight_smile:

But ‘.luc’ or ‘lc’ might be nice :stuck_out_tongue:
http://www.fileformat.info/ext/l.htm

cfm=ColdFusion Markup (language)

Bring back .dbm I say!

(get off my lawn)

If I ruled, […]

People would revolt.

Keep in mind too that some sites try to hide the technology they use, so
they configure the web server to process .html files as CFML. That
shouldn’t change how Lucee processes those files. If the plan is for the
file extension to control compatibility, there would need to be a way to
configure how each extension is handled, or to put it differently, which
extension(s) are handled as legacy/ACF-compatible vs new-world/Lucee
compatible.

Dave

Keep in mind too that some sites try to hide the technology they use, so they configure the web server to process .html files as CFML. That shouldn’t change how Lucee processes those files. If the plan is for the file extension to control compatibility, there would need to be a way to configure how each extension is handled, or to put it differently, which extension(s) are handled as legacy/ACF-compatible vs new-world/Lucee compatible.

As I mentioned before, I doubt this would make it to the internals of Lucee (nor should it) since it is quite well defined in web.xml and it could be to have a LuceeServlet and a CFMLServlet and that would easily define it:

 <servlet>
        <servlet-name>CFMLServlet</servlet-name>
        <servlet-class>lucee.loader.servlet.CFMLServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
    </servlet>

  <servlet-mapping>
      <servlet-name>CFMLServlet</servlet-name>
      <url-pattern>*.cfc</url-pattern>
      <url-pattern>*.cfm</url-pattern>
      <url-pattern>*.cfml</url-pattern>
      <url-pattern>*.html</url-pattern>   
      <url-pattern>/index.cfc/*</url-pattern>
      <url-pattern>/index.cfm/*</url-pattern>
      <url-pattern>/index.cfml/*</url-pattern>
  </servlet-mapping>

 <servlet>
        <servlet-name>LuceeServlet</servlet-name>
        <servlet-class>lucee.loader.servlet.LuceeServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
    </servlet>

  <servlet-mapping>
      <servlet-name>CFMLServlet</servlet-name>
      <url-pattern>*.lucee</url-pattern>
      <url-pattern>*.luc</url-pattern>   
      <url-pattern>/index.lucee/*</url-pattern>
      <url-pattern>/index.luc/*</url-pattern>
  </servlet-mapping>

And you are done

MD

If the user base does not expand then it will shrink which means less
paying positions. Then it becomes a cycle: less jobs means less developer
to choose from, means few companies using the tech and repeat. You get the
picture. CF has been in the cycle for years now. If nothing changes then
CF will disappear.

I have spent the last 15 years coding in CF and I still use tags. If we
only continue down that road this will lead to a dead end.

Andrew Penhorwood

Additionally, we should think about IDE vendors. CF support is half-assed
in most IDEs, and those providing some of the better support pretty much
locked into one or two extensions. I’d vote for having a single or set of
extensions which drive this content.

-Nick

Sean, I understand that Lucee will (for now) continue to be compatible
with/support cfm/cfc, however I think for some of us would like some direct
answers

  1. Is the longterm plan for Lucee to continue to update CFML tags to match
    their scripted counterparts?

  2. Is the longterm plan for Lucee to create new CFML tags to match some of
    the new scripting features that roll in?

What’s being suggested is that CFC/CFM support continue to be in “Lucee”

(the ecosystem) but maybe as an extension (that is fully supported and is
easy to install). No one is actually proposing that handling of CFC/CFM
files changes.

I think this is what has some people scared. People from the Railo/ACF
community are looking at Lucee as a new coldfusion engine, but having the
coldfusion parts moved out of the core and into an extension indicates that
Lucee will not be actively developing anything for the actual CFML language
and instead Lucee will just run it as is.

The point about “killing the CF baggage” is mostly to find a way to make
Lucee appeal to a broader audience - i.e., non-CF developers - and to do so
without the stigma of “being a CFML engine”. Lucee is a scripting /
templating system for the JVM (that just happens to also run your legacy
CFML code).

I think that what gave coldfusion in general bad stigma was the crappy job
that Adobe did of marketing it and improving the language. Maybe I’m
completely ignorant with what I’m about to say, but why is a broader
audience that important anyway? I understand the devs give their time/get
paid by a sponsoring company to build this stuff, but what’s the end
game…commercialize it…make money?

Thanks,

Tanner

Pascal / Object Pascal, with Delphi isn’t dead.
They have Delphi > Native iOS and Android tools out… my boss is trying to convince me to use them all the time :wink:

Funnily enough, dot net developers I know use it to make their iOS apps :slight_smile:

Gavin Pickin
@Gavin_Pickin

Then surely it’s time to also learn other skills and technologies no?

Mark Drew

Hi Tanner

Since I have started Railo, there was always the possibility to change the
behavior of the language with help of settings.

Take as example the “scope cascading” setting, that was in Railo from
beginning. Lucee is filled with settings like this.

We now speak about having a file extension that just act with different
rules on the engine. So a new tag will still be available in .cfm and
.lucee.

It’s not about to get rid of cfm, it’s about the option to choose by
extension instead of settings in admin. Sure the new extension will get rid
of many old stuff. But that will not affect the old one!

In the beginning of the Railo project we fighted hard to keep up with ACF
but that changed! We saw not a lot of new things coming from acf in the
last years. When acf 10 was released, it took us a couple of days to adapt
the new features. Most of the features where already available in Railo,
we just had to deal with the different dialect (script tags,member
functions …).

In my opinion acf is making mostly money out of existing customers, so
backward compatibility is extremely important for them.
So just add some new tags but do not change anything on the existing
functionality that could it make difficult to update.

That is for sure a good approach to make money with not a lot of effort,
maybe not for a long time but as long it works …

That is for sure not the approach for Lucee, CFML is a great language and I
love it. But it is for sure not wrong to clean the house as long you do not
break backward compatibility.

See it like c and c++, you still can compile c code with a c++ compiler.

Micha

1 Like

Keep in mind too that some sites try to hide the technology they use, so
they configure the web server to process .html files as CFML.

Some? All of them should.

Is this sort of thing not usually done with mod rewrite though, not pushing
all HTML files through to the CFML server?

it’s funny, no body is discussion about the general idea, only about the
extension for it :wink:
It’s like we asked if we should get a new car and everybody is already
discussing about the color of the car.

Adam asked what “what if” means, if this is already in the pipeline or
just a idea?
If the community likes the idea, we go for it! technically there are no
hurdles we cannot cross.

Micha

I think the concept is an excellent idea. Also, I like the idea of .lucee
or.luc for the extension, and I see no need for separate extensions for
templates versus components.

.lc would be a nice extension if it’s not commonly used. I’m
imagining typing .lucee 10,000 times…

Yeah, but you’re not exactly typing it 10000 in a row. How many new files
are you creating within a given day?

And, like .java, .groovy… we’re not all scared of keystrokes.

I think .lucee is better than scrabbling around on filext.com trying to
find a non-used extension that vaguely resembles something to do with Lucee.

.luc is the best one suggested so far, but… really… just stick a coupla
Es on the end and be done with it.

If someone can’t cope with typing .lucee occasionally, there’s nothing to
stop them from remapping .l or something on their own installation.

ACF compatibility
ACF compatibility is still very important for Lucee in my opinion. today
you can decide between being compatible and having it the right way with
settings in the admin, that is not really handy!
But we you think about this:

Take as example a DVD player *, part of the DVD specification is that they
must be able to play CDs, so every DVD player can also play CDs, means
every DVD player is also a CD compatible.
Only the medium you use makes the difference, you don’t have to change
hundreds of setting in your DVD player to play a CD.

So what could be the medium for Lucee, that is very simple, the medium are
templates (.cfc,.cfm).
What if Lucee acts different depending on the file extension.
So all templates with .cfm and .cfc extensions are still handled the old
way, but files with the extension .lucee are handled in a modern way. this
gives you the opportunity to still use your old code but you can extend it
with new one and you have no confuguration nightmare anymore!

My position on this:

Hi Micha,

I appreciate your post above…it’s lays to rest some of my
questions…thanks!

You mentioned (in a following post) that wouldn’t look
like that in .lucee. Could you post a little example of what the
equivalent would look like in .lucee…the new version of that code? I’m
not looking for the whole turkey dinner here…just a taste.

Thanks,

Tanner Bachman

I think cfml in itself is considered a scipting language.

had the same attitude when it came to cfscript, I would cringe when looking
at code examples or tutorials that were in cfscript, or just move on to
something that was shown in tags only.
So trust me when I tell you, as a hobbyist cfml’ er, cfscript is much, much
easier than it appears, especially with railo/lucee where many tags can be
done in cfscript by dropping the <cf />

nowadays I cringe when I see cftags,
give yourself a week or two and I bet you change your mind about cfscript.

Coldfusion has a long history and you can see that in the syntax.

Cfoutput query is a perfect example, the first version of coldfusion was
only about reading data from a datasource, so it had only a couple of tags,
including cfquery and cfoutput*.
At that time the syntax has made sense, but then cfloop was indroduced, at
that time they should define that cfoutput no longer makes loop, only
cfloop should, but they didn’t for backward compatibility…

That cfoutput does makes loop makes no sense at all, we have cfloop for
that and what is even worse, cfloop and cfoutput works not exact the same
way (see group attrs).
So cfoutput like it works today only makes sense if you know the history.

An other example is that arrays in acf are “passed by value”, that is
absolutely useless, the reason for this is*, in the beginning arrays was
stored as string list (see all the list functions cf still has) and strings
are handled by value. Even the technology behind it has completely changed,
it still simulates that old behavior, only to be backward compatible. That
is maybe also the reason arrays are starting with index 1.

This are 2 examples of many for stupidity to be backward compatible, but
ther are also samples where cf acts strange for no reason.

CFM based custom tags are a good example for this, with CFM based custom
tags allaire indroduced the possibility to have a local scope. So the
variables scope inside a custom tag is local and to access the callers
variables scope you call “caller.whatever”, so the variables scope acts
like a stack. Then with cf5 macromedia indroduced script functions and at
least I was expecting that they use of course the same concept for
functions, but sadly this was not the case, they indroduced “var” and a
complete different concept to handle local scopes, a hidden scope you can’t
touch directly and you can only set new variables before any working code
and of course no stack of parent scopes. But of course Adobe then decided
to make it even more complicated and add the “local” scope, my personal
hell, I have written testcases for this scope and believe me that scope is
completely strange. They did backward compatibility with that scope that
the scope ended with no logic at all. Things like this:

var local=structNew();
local.whatever=1;

This does not produce the key local in the local scope, no this line is
simply IGNORED!

Problem here is nobody was ever thinking about the bigger picture, there
was no language design behind all this decision for sure, to be honest I
think that the guys added script functions at macromedia was not even aware
of the scope concept in custom tags.

When paramount does a new Star Trek movie they always have fans involved in
the making, because they see logial failures in the story paramount people
do not, macromedia and Adobe clearly didn’t that. That is why community
involvement is very important in cases like this.

So what should a .lucee do better in all this cases:

  • ditch cfoutput-query, it is useless
  • lucee is already passing arrays by ref, so no need to change here
  • ditch cfm based custom tags, we have support for component based custom
    tags
  • ditch “var” ( I know people love var, I do it as well, but it makes now
    sense, the “local” scope is the one following the logic of the language)
  • ditch all the bullshit the local scope does for backward compatibility.
  • if we already on this topic, ditch the argument scope, we only need one
    local scope for functions.
  • ditch the variables scope in components and make the this scope private
    by default.
  • ditch application.cfm of course.
  • ditch dot notation upper case
  • scope cascading to strict
  • … And lot more

What we should keep
I know may say ditch query objects and tags in general, but I disagree on
this, they are still handy in some situations.

Micha

P.s. All this popped into my mind while writing, so please don’t see that
this is curved into to stone…

pss. forgive me when this is not a 100% accurate, this is not first hand, I
never used cf1.