Extending FileList with CrLf

Andreas Raab andreas.raab at gmx.de
Sat Aug 2 14:01:29 UTC 2003


Hi Daniel,

So where is this proposal any different / an improvement to the current
status quo? If it were only for the file list I wouldn't have bothered to
get into this discussion at all. It's not the goal that the file list should
deal with line ends flexibly - it's the goal that _all_ applications, tools,
whatever deal with line ends in the most flexible way, and do so by default.
What you are describing below is nothing but the current status quo; you
merely trade using CRLFs>>[new|old|readOnly]FileNamed with
FS>>[smartNew|smartOld|smartReadOnly]FileNamed which (conceptually) seems
even worse to me.

Cheers,
  - Andreas

> -----Original Message-----
> From: squeak-dev-bounces at lists.squeakfoundation.org 
> [mailto:squeak-dev-bounces at lists.squeakfoundation.org] On 
> Behalf Of Daniel Vainsencher
> Sent: Saturday, August 02, 2003 11:33 AM
> To: The general-purpose Squeak developers list
> Cc: 'The general-purpose Squeak developers list'
> Subject: RE: Extending FileList with CrLf
> 
> 
> Yup. Here is my proposal.
> 1. People want to see flexible line endings in the FileList. Make file
> list use CrLfFileStream explicitly, adding some appropriate 
> protocol to
> FileDirectory (#smartFileNamed: or some such). Consider 
> adding a bit of
> state to FileList so that files can be saved either with 
> their original,
> remembered line convention, or the default line convention (see next
> point). Rename CrLfFileStream (since now all file streams can use any
> convention) to SmartFileStream, or some such. Remove the 
> concreteStream
> indirection, so that the protocol used determines precisely 
> what stream
> class is used. This makes it easy to give people examples that will
> magically work regardless of platform convention by using that
> interface.
> 2. Some people want their local OS to determine the default line end
> convention. Move the support for detecting and using the os line
> convention down into FileStream. Vote on whether it should use OS or
> Squeak convention by default.
> 3. We can either determine that .st,.cs files are defined to 
> use crs to
> maintain backward compatibility and squeak-wide compatibility. I'm
> curious if any standard defines this about the format. 
> Anyway, we decide
> this on a per format basis, and adapt the code to use the appropriate
> filestreams and modes.
> 
> Benefits?
> 1. People get the behavior they want in various applications.
> 2. The abstractions of "line ending" and "le auto detection" 
> become more
> separate, so that it is easier for programmer to actually get the
> behavior they want for their programs.
> 3. We have the option of getting the precise and common abstraction
> almost everybody else is using of OS specified, consistent 
> line endings,
> which seems to cause minimal confusion.
> 4. The CrLfFileStream behavior becomes bound to a specific interface
> defined on FileDirectory, so that it is neither more nor less visible
> than StandardFileStream.
> 
> Daniel
> 
> Andreas Raab <andreas.raab at gmx.de> wrote:
> > > If I misunderstand this discussion and am talking at a 
> tangent out of 
> > > ignorance please forgive me.
> > 
> > No, you are restating precisely the arguments that numerous 
> people have made
> > by now. And Daniel is restating precisely the arguments he 
> has made in this
> > thread all along. It's almost funny.
> > 
> > Cheers,
> >   - Andreas
> > 
> > > -----Original Message-----
> > > From: squeak-dev-bounces at lists.squeakfoundation.org 
> > > [mailto:squeak-dev-bounces at lists.squeakfoundation.org] On 
> > > Behalf Of Jimmie Houchin
> > > Sent: Friday, August 01, 2003 11:26 PM
> > > To: The general-purpose Squeak developers list
> > > Subject: Re: Extending FileList with CrLf
> > > 
> > > 
> > > Daniel Vainsencher wrote:
> > > > Jimmie Houchin <jhouchin at texoma.net> wrote:
> > > > 
> > > >>Just for other outside information. Apparently the Python 
> > > group has been 
> > > >>struggling with this issue. I normally don't read about 
> Python, but 
> > > >>occasionally take a peek. :)
> > > >>
> > > >>This PEP has been implemented and is in the latest Python.
> > > >>
> > > >>http://www.python.org/dev/doc/devel/whatsnew/node7.html
> > > > 
> > > > Note that they implemented the library so it requires 
> an explicit
> > > > parameter for it to enter "universal" mode. That is 
> exactly what I'm
> > > > proposing we do. This is not what CLFS does.
> > > 
> > > That may be so. But were not Python. :)
> > > Python also has no environment per se.
> > > Python is a language. Squeak is more.
> > > 
> > > >>Talks about the problem and how they decided to handle it 
> > > for Python.
> > > >>
> > > >>Personally, I'm for handling it as elegantly and 
> transparently as 
> > > >>possible. I think that is what most people will expect. I 
> > > understand 
> > > >>Daniel's position. However, Squeak is a high-level environment. 
> > > > 
> > > > I don't know what a "high level environment" is. Squeak 
> > > applications are
> > > > able to provide convinient application level abstractions 
> > > because they
> > > > build on rich lower level abstractions in the class 
> library. I am
> > > > stating that the two abstractions "line ending" and "auto 
> > > detect line
> > > > ending" should remain separate, so that different 
> > > applications can each
> > > > use what it requires.
> > > 
> > > Now Daniel.
> > > Squeak is more than a language.
> > > Squeak is more than the sum of its libraries.
> > > 
> > > Most of us here are consumers of some software written in Squeak.
> > > You can do many things in Squeak as a user without ever 
> > > writing a single 
> > > script or line of code.
> > > 
> > > When I open the World menu and click on file or file list, I 
> > > am a user 
> > > of the environment or that specific application. When I 
> view files on 
> > > Linux it doesn't render line endings correctly. I can't speak 
> > > about Windows.
> > > 
> > > I imagine this goes back to the default behaviour of Squeak.
> > > This is a part of the user experience. It seems to me this is 
> > > what most 
> > > are wanting to be different.
> > > 
> > > As a programmer, feel free to choose the behaviour you want.
> > > 
> > > >>Low-level options are there, but I believe most people 
> > > expect intuitive 
> > > >>responses. I don't expect to open a text document 
> written on the 
> > > >>platform I'm using Squeak on and Squeak not handle it properly.
> > > > 
> > > > We could change the default to be OS line endings - this is 
> > > a reasonable
> > > > change. If you want your text editor to handle any strange 
> > > line endings,
> > > > change your text editor to use an "autodetect line endings" 
> > > mechanism.
> > > 
> > > Why on earth would anybody not want their text editor to 
> handle line 
> > > endings correctly? If the text editor has the ability to 
> > > understand what 
> > > is meant, it should be the very reasonable responsibility 
> of the text 
> > > editor to do the right thing. Why would I want my text editor 
> > > to create 
> > > visual garbage merely to demonstrate that some of the line 
> > > endings came 
> > > from a different platform? So I could manually enter into the 
> > > text and 
> > > delete them and enter correct line endings. Yuck.
> > > 
> > > > However, the default should remain a clean "line ending" 
> > > abstraction,
> > > > without autodetection as it is in Python, C and 
> probably most other
> > > > general purpose languages.
> > > 
> > > But Daniel. We chose _not_ to use those other languages. Part 
> > > of which 
> > > is having better (possibly higher) abstractions. (even as default)
> > > 
> > > You talk about libraries, applications and defaults. Its a 
> > > bad default 
> > > for libraries, but good as a default for applications. 
> Squeak _is_ an 
> > > application. Squeak _is_ an environment. Squeak _has_ a language.
> > > 
> > > I think Squeak should improve on the status of programming.
> > > 
> > > As long as we have to interface and communicate with the 
> > > world outside 
> > > Squeak, including text files, I think we should do it elegantly.
> > > 
> > > Changing a default behaviour in Squeak doesn't remove your or 
> > > anybody's 
> > > ability to use the lower level library. Okay, we can say 
> it merely 
> > > changes were the pain is felt. Since the computing world is not 
> > > consistent in many areas there is some pain. This is pain 
> management. 
> > > Maybe we (I) believe that this reduces the pain in the 
> common usage.
> > > 
> > > I have battled the default behaviour while parsing files. I 
> > > expected one 
> > > thing got another. In the end I chalked it up to my 
> Squeak learning 
> > > curve. But I feel I am not alone in my pain.
> > > 
> > > If I misunderstand this discussion and am talking at a 
> tangent out of 
> > > ignorance please forgive me.
> > > 
> > > Well anyway, I'm over my 2 cents.
> > > 
> > > Jimmie Houchin
> > > 
> > >
> 



More information about the Squeak-dev mailing list