Oh, and I don’t think this materially alters the support equation: we already 
have to deal with hand-edited boards, so what’s in the file is never guaranteed 
to be something Kicad put there.

> On 20 Mar 2018, at 10:19, Jeff Young <j...@rokeby.ie> wrote:
> 
> Hi Seth,
> 
> The original version spit out log entries for skipped elements.  This version 
> follows the XML/browser convention of silently ignoring.  Even though this 
> isn’t an XML format, I think we need to recognise that we live in an XML 
> world and XML processing conventions set expectations.
> 
> The patch strictly checks everything for round-tripping so that there is no 
> data loss.  The pad stuff is really a separate issue: it was meant to be 
> loose only during development and then tightened up, but the tightening step 
> was forgotten.  Since we don’t store pad stuff we don’t understand, it has to 
> be tightened.  In short: if you can round trip stuff you don’t understand 
> then do so; otherwise throw.
> 
> Certainly one use case is opening boards from future versions.  If you edit 
> them, then you’re at your own peril.  This behaviour is common enough that I 
> believe it is well understood (although we should obviously mention it in a 
> version-check dialog).
> 
> Another use case is 3rd-party tools (which might even be written as Python 
> plugins) that want to carry their own stuff around in the board.  These might 
> even be processing/manufacturing instructions that don’t have any visual 
> expression in Kicad anyway.
> 
> Cheers,
> Jeff.
> 
> 
>> On 19 Mar 2018, at 22:51, Seth Hillbrand <seth.hillbr...@gmail.com 
>> <mailto:seth.hillbr...@gmail.com>> wrote:
>> 
>> Hi Jeff-
>> 
>> A few questions on how you are implementing this:
>> 
>> 1) How does the user know what was skipped?  I can imagine team members with 
>> different versions getting into difficulty, especially if the features being 
>> skipped change the board layout.
>> 
>> 2) You are removing strict checking for most of the board but you are adding 
>> strict checking for pad options. What's the difference?
>> 
>> 3) If we keep these options around but don't allow editing/removing, don't 
>> we run into a risk of generating a really wonk-y board that only looks wonky 
>> in a newer version of KiCad but looks fine in an older version?  For 
>> example, imagine we implement rounded corners as a parameter and then a user 
>> with an older version of KiCad edits and saves the board.  The rounded 
>> corner is only visible in KiCad 6 but the user in KiCad 5 can edit the board 
>> to look right to her only to have her colleague use KiCad 6 and see the 
>> track violating DRC.  I think that might be counter-intuitive for users but 
>> maybe there's a way around it.
>> 
>> In general, if I understand the use-case, this is to allow users to open 
>> newer boards in older KiCad versions?  Is there another use case?
>> 
>> I think I can see clear to this for options like the 3d-model offset where 
>> it could be either inches or mm but there isn't a difference in the actual 
>> layout.  Allowing general unrecognized options would seem to open up a worm 
>> can in terms of support as in "Please post the KiCad version and the file 
>> version in order to figure out the problem." 
>> 
>> -S
>> 
>> 
>> 
>> 2018-03-18 9:46 GMT-07:00 Jeff Young <j...@rokeby.ie 
>> <mailto:j...@rokeby.ie>>:
>> OK, for your guys’ (re)viewing pleasure, a patch which losslessly 
>> round-trips stuff it doesn’t understand.
>> 
>> 
>> 
>> 
>>> On 16 Mar 2018, at 19:15, hauptmech <hauptm...@gmail.com 
>>> <mailto:hauptm...@gmail.com>> wrote:
>>> 
>>> While i would still like to see this (my) shim go in, I agree with wayne. 
>>> Until/unless a less brittle approach is used for the parser, it's better to 
>>> signal a problem painfully and maintain the integrity of the file.
>>> 
>>> I have to admit that when i first heard the s-expressions idea I assumed 
>>> that the intention was to use a lisp like virtual machine for loading and 
>>> maintaining design data. I've used vm's for data storage before (lua and 
>>> python), and it's great. Parsing is free and you can jam in functions and 
>>> other data when needed. 
>>> 
>>> 
>>> 
>>> On 17 Mar 2018 07:17, "Jeff Young" <j...@rokeby.ie <mailto:j...@rokeby.ie>> 
>>> wrote:
>>> Hi Wayne,
>>> 
>>> Patch reverted.
>>> 
>>> However, I think your concern is misplaced.  If we want to prevent dataloss 
>>> (ie: from reading a 6.0 file into 5.0), then we should warn the user based 
>>> on the version string (and give them a chance to say “I still want to 
>>> open”).
>>> 
>>> But either way, actually failing to read the file leaves the user in a 
>>> pickle (especially when it’s easy enough for them to try out a nightly that 
>>> may very well be ahead of their stable).
>>> 
>>> (And for that reason I think it’s important to put it into 5.0, as 
>>> otherwise it won’t help until we start making 7.0 file format changes.)
>>> 
>>> Cheers,
>>> Jeff.
>>> 
>>> > On 16 Mar 2018, at 18:00, Wayne Stambaugh <stambau...@gmail.com 
>>> > <mailto:stambau...@gmail.com>> wrote:
>>> >
>>> > Jeff,
>>> >
>>> > Please revert this patch.  Any changes to the board file parser and/or
>>> > formatter need to be discussed before the changes are committed.  It has
>>> > been the intention that the board parser be pendantic by design to
>>> > prevent data loss by ignoring unknown formatting.  Allowing anything
>>> > outside of the expected formatting in the board file is not something
>>> > that I want to introduce without some discussion.  Even should we decide
>>> > to accept this patch, I would prefer we put it off until v6.
>>> >
>>> > That being said, the patch fails to build on windows with following error:
>>> >
>>> > C:/msys64/home/wstambaugh/src/kicad-trunk/pcbnew/pcb_parser.cpp: In
>>> > member function 'void PCB_PARSER::parseUnknown()':
>>> > C:/msys64/home/wstambaugh/src/kicad-trunk/pcbnew/pcb_parser.cpp:1269:12:
>>> > error: request for member 'LogText' in '__acrt_iob_func(2)', which is of
>>> > pointer type  FILE* {aka _iobuf*}' (maybe you meant to use '->' ?)
>>> >     stderr.LogText( msg );
>>> >            ^~~~~~~
>>> >
>>> > Cheers,
>>> >
>>> > Wayne
>>> >
>>> > On 3/16/2018 1:08 PM, Jeff Young wrote:
>>> >> Perhaps somewhat germane to this discussion I have removed the 
>>> >> strict-format nags from the PCB parser.  It now logs warnings to stderr 
>>> >> but otherwise ignores structures it doesn’t understand.
>>> >>
>>> >> I’m not sure that helps hauptmech much as if the file is subsequently 
>>> >> written the unknown markup will be lost, but I thought I’d mention it.
>>> >>
>>> >> Cheers,
>>> >> Jeff.
>>> >>
>>> >>> On 7 Mar 2018, at 20:12, hauptmech <hauptm...@gmail.com 
>>> >>> <mailto:hauptm...@gmail.com>> wrote:
>>> >>>
>>> >>> Hi Thomasz,
>>> >>>
>>> >>> I hope I'm able to address you concerns. I'm stuck using kicad stable 
>>> >>> in many situations. I brought clearances up for discussion last July 
>>> >>> but no one moved on it, nor are they required to. Clearance management 
>>> >>> is a major pain point for me so I wrote a fix. This patch will let us 
>>> >>> (me and the people I collaborate with) work using version 5, but open 
>>> >>> and close files written with a version patched with clearance handling 
>>> >>> code.
>>> >>>
>>> >>> I believe that code exactly like this will go into version 6. Getting 
>>> >>> it in earlier makes a huge difference to me, so I'm submitting it.
>>> >>>
>>> >>> On 07/03/18 23:30, Tomasz Wlostowski wrote:
>>> >>>> Hi hauptmech,
>>> >>>>
>>> >>>> I'm sorry but IMHO we can't accept your patch:
>>> >>>> - it changes the file format while we are already in feature freeze.
>>> >>>> This is a way too big change to accept for the V5.
>>> >>>
>>> >>> This patch simply adds tokens to the file format. No clearance data is 
>>> >>> saved for files that use the netclass only. Files without clearance 
>>> >>> tokens continue to remain without them.
>>> >>>
>>> >>> Yes it is a backward compatible file format change, but it does no harm 
>>> >>> to V5 files already in the wild.
>>> >>>
>>> >>>> - we are planning to overhaul the clearance/design rules system in V6.
>>> >>>> Storing the clearance *DIRECTLY* for each track segment/via will
>>> >>>> conflict with any more sophisticated design rule management system.
>>> >>>>
>>> >>> I'm glad you are planning this. I am sure that regardless of the 
>>> >>> sophistication of the rule system, you will store clearance directly 
>>> >>> for exactly the same reason that track width is stored directly now. 
>>> >>> There are always exceptions to the rules.
>>> >>>
>>> >>> If kicad choose a direction that does not store clearances per item, 
>>> >>> then it is easy to rip these few lines back out.
>>> >>>
>>> >>> Did this answer your existing concerns about this patch? Are there any 
>>> >>> other concerns you have about this patch?
>>> >>>
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> Mailing list: https://launchpad.net/~kicad-developers 
>>> >>> <https://launchpad.net/~kicad-developers>
>>> >>> Post to     : kicad-developers@lists.launchpad.net 
>>> >>> <mailto:kicad-developers@lists.launchpad.net>
>>> >>> Unsubscribe : https://launchpad.net/~kicad-developers 
>>> >>> <https://launchpad.net/~kicad-developers>
>>> >>> More help   : https://help.launchpad.net/ListHelp 
>>> >>> <https://help.launchpad.net/ListHelp>
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> Mailing list: https://launchpad.net/~kicad-developers 
>>> >> <https://launchpad.net/~kicad-developers>
>>> >> Post to     : kicad-developers@lists.launchpad.net 
>>> >> <mailto:kicad-developers@lists.launchpad.net>
>>> >> Unsubscribe : https://launchpad.net/~kicad-developers 
>>> >> <https://launchpad.net/~kicad-developers>
>>> >> More help   : https://help.launchpad.net/ListHelp 
>>> >> <https://help.launchpad.net/ListHelp>
>>> >>
>>> >
>>> > _______________________________________________
>>> > Mailing list: https://launchpad.net/~kicad-developers 
>>> > <https://launchpad.net/~kicad-developers>
>>> > Post to     : kicad-developers@lists.launchpad.net 
>>> > <mailto:kicad-developers@lists.launchpad.net>
>>> > Unsubscribe : https://launchpad.net/~kicad-developers 
>>> > <https://launchpad.net/~kicad-developers>
>>> > More help   : https://help.launchpad.net/ListHelp 
>>> > <https://help.launchpad.net/ListHelp>
>>> 
>>> 
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~kicad-developers 
>>> <https://launchpad.net/~kicad-developers>
>>> Post to     : kicad-developers@lists.launchpad.net 
>>> <mailto:kicad-developers@lists.launchpad.net>
>>> Unsubscribe : https://launchpad.net/~kicad-developers 
>>> <https://launchpad.net/~kicad-developers>
>>> More help   : https://help.launchpad.net/ListHelp 
>>> <https://help.launchpad.net/ListHelp>
>> 
>> 
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers 
>> <https://launchpad.net/~kicad-developers>
>> Post to     : kicad-developers@lists.launchpad.net 
>> <mailto:kicad-developers@lists.launchpad.net>
>> Unsubscribe : https://launchpad.net/~kicad-developers 
>> <https://launchpad.net/~kicad-developers>
>> More help   : https://help.launchpad.net/ListHelp 
>> <https://help.launchpad.net/ListHelp>
>> 
>> 
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp

_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to