On 2016-03-03 12:44, Alex Peshkoff wrote:
> On 03/03/2016 12:26 PM, Mark Rotteveel wrote:
>
>> But my main concern
>> has to do with my experience with wire protocol changes in Firebird:
>> they are usually poorly documented,
>
> Poorly is incorrect word here, remote protocol is not documented at 
> all
> and (as far as I know) was never documented.
> Except comments in sources.

There is the wireprotocol documentation that was written by Carlos 
Guzman Alvarez when he did the Firebird .net implementation. I have 
since made some additions as part of my work with adding v11 and v12 to 
Jaybird. However, it is mostly the layout of the messages, and it misses 
a lot of context, expectations and meaning. So it could use some 
fleshing out with more information.

There doesn't seem to be a recent build on the website, but an old 
build can be found in 
https://github.com/cincuranet/FirebirdSql.Data.FirebirdClient/blob/master/Documentation/FirebirdWireProtocol.pdf

It is in the manual project under 
/src/docs/firebirddocs/wireprotocol.xml

>> when you have to
>> reimplement in a different language (or find the right library to do 
>> the
>> work for you). That is why I'm stressing that things need to be 
>> specced
>> and documented when it involves the wire protocol.
>
> I plan to write such document - unfortunately can't do it soon. But
> please do not expect hard protocol description regarding initial
> handshake - with various authentication and wire encryption plugins 
> and
> related configuration settings (with encryption turned off less
> round-trips may be needed for handshake) such straightforward
> description of handshake protocol just can not exist.

I think that should be possible, otherwise the current implementation 
would be an 'accident' that it even works and there would be no 
guarantee it continues to work in the future when new changes are 
introduced (or new plugins added). It might be hard to write the 
expected state transitions and conditions and think of all corner cases 
after the fact, but I don't think it impossible to write the main 
flow(s).

In my opinion such things should be thought out first, reviewed and 
critiqued by others (eg us driver implementers), and then implemented, 
with maybe a number of iterations/revisions to fix things that turned 
out less straightforward when implementing.

Mark

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to