Hi David,

On Tue, Sep 15, 2015 at 5:45 AM, Esteban Lorenzano <estebanlm@gmail.com> wrote:


> On 15 Sep 2015, at 14:13, David T. Lewis <lewis@mail.msen.com> wrote:
>
>
> On Tue, Sep 15, 2015 at 11:40:48AM +0200, Esteban Lorenzano wrote:
>>
>> Pharo uses them.
>>
>> Posix permissions are useful for both linux and mac.
>> Windows uses also the posix permissions that came with MinGW??? I do not think they are useful but we provide them anyway :)
>
>
> Posix permissions are based on Unix, and are very platform specific. The
> Windows equivalents are semantically different, and other operating systems
> may exist that are not Unix based at all.
>
> IMO, platform specific functions should go into separate plugins, and not
> in FilePlugin.

well, I disagree :)
I do not find this approach practical… because in general, there is no other systems that may exist using other permissions than POSIX. Except Windows, of course, but even for windows, there are compatibility layers that we can use.
In the case of the FilePlugin extensions, we choose to stay POSIX because in general, as its been said before, the job of a virtual machine is been virtual: to provide an “abstract machine” common for everything in the image. I’m not saying that this is possible and even desirable in all cases, but it should be something to think about.
In that case, we could design a common file permissions different to the one of Windows and different to POSIX, but I think POSIX does the job just fine.

Also, the choice was: POSIX or nothing (because we didn’t have anything before).
I would be very happy if we agree in a better solution, and we implement it.
But in the mean time, a not perfect solution is better than none.

I agree with Esteban.  IMO, the model of files that the FilePlugin provides access to can and should be a superset of facilities.  By not supporting facilities such as permissions or symbolic links or active mount-points we hobble our core file functionality and that makes us a very weak scripting platform.  Putting these facilities in add-on packages makes configuration more difficult and means that an elegant implementation in the core file classes, with fallbacks for platforms that don't support the concepts, is very difficult.

If we want to support unix-style scripting in Pharo and Squeak (and I think we very much do; there are many areas out there where good scripting is essential) then we need a better File model, and that means not just getting rid of FileDirectory et al, it also means providing the right infrastructure in the FilePlugin, and that means extensions like the one the Pharo VM folks made.  Indeed they haven't gone nearly far enough IMO.


Esteban

>
> Dave
>
>
>
>>
>> Esteban
>>
>> ps: I do not know what are you doing there guys, but you broke my builds (I???m taking a look at them now) :P
>>
>>> On 15 Sep 2015, at 09:24, Nicolai Hess <nicolaihess@web.de> wrote:
>>>
>>>
>>>
>>> 2015-09-15 4:11 GMT+02:00 Ben Coman <btc@openinworld.com <mailto:btc@openinworld.com>>:
>>>
>>> On Sat, Sep 12, 2015 at 11:00 PM, Nicolai Hess <nicolaihess@web.de <mailto:nicolaihess@web.de>> wrote:
>>>>
>>>>
>>>>
>>>> 2015-09-10 21:31 GMT+02:00 Eliot Miranda <eliot.miranda@gmail.com <mailto:eliot.miranda@gmail.com>>:
>>>>>
>>>>>
>>>>> Hi Nicolai,
>>>>>
>>>>>    I'm a bit concerned that this is creating drift with the "official" Cog source base at http://www.squeakvm.org/svn/squeak/branches/Cog <http://www.squeakvm.org/svn/squeak/branches/Cog>.  Long filename support for win32 was recently added by Marcel Taumel in May of this year.  Are you tracking that?  How can we keep the sources harmonized?
>>>>
>>>>
>>>> Ok, I removed all of my code again and merged with sqWin32Directory.c and sqWin32FilePrims.c from the official cog source.
>>>> I left only pharos additions for the fileattributes (posixpermissions) this should make it easier to merge which the
>>>> squeak vm main branch (wrapped with pharo vm ifdefs).
>>>
>>> What is the purpose of fileattributes? In the interests of further
>>> minimising drift, is this useful to Squeak?
>>> cheers -ben
>>>
>>> I don't know, I don't think we use it at all. And for the different platforms, the permission attributes
>>> doesn't really *are the same*. For example, the read/write permissions we are showing for
>>> win32 platform, don't have much to do with win32 access restrictions - Idon't know about macos.
>>>
>>>
>>>
>>>
>>>
>>
>




--
_,,,^..^,,,_
best, Eliot