Re: Trunk instability

2011-01-29 Thread Emmanuel Lécharny

On 1/29/11 10:20 PM, Alex Karasulu wrote:

Hi y'all,

This trunk situation is just horrible. I don't know how I fell into working
this heavily in the trunk. We all usually branch and work isolated. I in
fact, I started refactoring in a branch. I don't know how this shifted into
the trunk. It matters not though, so long as this never happens again. I
sure am stressed over it and the time others are loosing.

It started with some good intentions :
- all the changes were supposed to be automatically impacting studio, 
the API and ADS

- they were not supposed to be so heavy
- it was suppose to be done fast
- merging when many directories change is just a PITA to manage with SVN

That being said, the initial changes leaded to some more changes, then 
some others etc. It was an attempt to catch many birds with one stone.


IMO, and I don't want to blame anyone on that, some really important 
rules about development on a complex project have also been forgotten :

- trunk must build. Always.
- before starting to add new features, the previous one must be done
- when some task takes longer than expected, then usually we won't be 
able to finish it in time before being hit but our human physical limits

- big refactoring should start in a branch...

On the bright side, we've got some great decoupling going on that will make
life much easier, and the codec clearer, especially for use by those who
will have to extend it for their own controls and extended operations. I
prepared some hand written materials to share on these topics but we've been
scrambling, trying to get this done fast. I'd like to prepare these
materials formally after we stabilize.
The decoupling is a major step forward. If we had only focused on it, we 
would have been done earlier.


OTOH, using generics, creating a mechanism to allow codec injection, 
could have been done once the initial decoupling has been terminated. 
Working using 'Sprints', or whatever we name them, is simply better than 
any other options we have when it's not an initial work.

These changes are an important step even if we don't achieve full
pluggability by M1 because it helps us clearly see what MUST be expose to
users of the codec (API) and people extending the codec (SPI). We ain't
gonna get fancy with OSGi either right now. Floating ideas on the ML is cool
but right now we need this M1 out the door. My primary motive was to get the
API roughly demarcated. This way huge shifts in the API between milestones
don't have to happen. We don't want to freak users out. Our milestone
contract gives us some liberty but maybe we should still try to be
conservative with API changes. So that's why NOW is the best time to get
this done fast before the M1. The rest of the milestone series should not
have such massive API changes.

Totally agree.

So let's just not panic about a day or two. (I say this because I am
panicing) I will dedicate my time to get this done ASAP. We even talked
about backing out etc with Emmanuel. But I think it would be an incredible
loss at this point. We're going to have to do this at some point. Why not
now and be done with it? Emmanuel the codec master is also equally involved.
It takes a lot to change when things have settled over the past 6 years in
this shared area. But do realize, we have lots of tests, and most of the
changes are not fundamental to the way the software works. The changes are
high level structural changes. We have not changed the way we encode and
decode, we've simply shifted exposed APIs. The new incongruities introduced
will disappear fast and things will align again. We need to be confident in
that. What worked before will work again.
I would say that : if tomorrow evening we don't get trunk back on rail, 
compiling and tests passing, then I'll suggest to revert to something 
which at least compile. I'm not even sure if we should not revert 
tomorrow morning, create a branch, and finish what we are doing in the 
branch (the cost of branching, reverting, and merging should be around 2 
hours for one person.)


Let's see what tomorrow brings, and then we decide what to do.

Thanks for the heads up, Alex

--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com



Re: svn commit: r1063987 - in /directory: apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/interceptor/context/ apacheds/trunk/core-jndi/src/main/java/org/apache/directory/server

2011-01-29 Thread Stefan Seelmann
On Thu, Jan 27, 2011 at 5:50 AM,   wrote:
> Author: akarasulu
> Date: Thu Jan 27 04:50:03 2011
> New Revision: 1063987
>
> URL: http://svn.apache.org/viewvc?rev=1063987&view=rev
> Log:
> cleaned up control codec classes after changes in ManageDsaIT control classes
...
> -public class ManageDsaIT extends BasicControlImpl
> +public interface ManageDsaIT extends Control
>  {
>     /** This control OID */
> -    public static final String OID = "2.16.840.1.113730.3.4.2";
> +    String OID = "2.16.840.1.113730.3.4.2";
>
>     /** An instance of this constant control which never changes */
> -    public static final ManageDsaIT INSTANCE = new ManageDsaIT();
> -
> -
> -    /**
> -     * Default constructor
> -     */
> -    private ManageDsaIT()
> -    {
> -        super( OID );
> -    }
> -
> -
> -    public void setValue( byte [] value )
> -    {
> -    }
> +    ManageDsaIT INSTANCE = new SimpleManageDsaIT();
>
>
> -    public boolean hasValue()
> +    class SimpleManageDsaIT extends BasicControlImpl implements ManageDsaIT
>     {
> -        return false;
> +        /**
> +         * Default constructor.
> +         */
> +        public SimpleManageDsaIT()
> +        {
> +            super( OID );
> +        }
> +
> +
> +        public void setValue( byte [] value )
> +        {
> +        }
> +
> +
> +        public boolean hasValue()
> +        {
> +            return false;
> +        }

It doesn't make sense - and it's also dangerous - to have a static
instance of a control. It is possible to alter the criticality of a
control which may cause issues when using the singleton in a
multi-threaded environment.

Kind Regards,
Stefan


Re: Trunk instability

2011-01-29 Thread Alex Karasulu
Hi y'all,

This trunk situation is just horrible. I don't know how I fell into working
this heavily in the trunk. We all usually branch and work isolated. I in
fact, I started refactoring in a branch. I don't know how this shifted into
the trunk. It matters not though, so long as this never happens again. I
sure am stressed over it and the time others are loosing.

On the bright side, we've got some great decoupling going on that will make
life much easier, and the codec clearer, especially for use by those who
will have to extend it for their own controls and extended operations. I
prepared some hand written materials to share on these topics but we've been
scrambling, trying to get this done fast. I'd like to prepare these
materials formally after we stabilize.

These changes are an important step even if we don't achieve full
pluggability by M1 because it helps us clearly see what MUST be expose to
users of the codec (API) and people extending the codec (SPI). We ain't
gonna get fancy with OSGi either right now. Floating ideas on the ML is cool
but right now we need this M1 out the door. My primary motive was to get the
API roughly demarcated. This way huge shifts in the API between milestones
don't have to happen. We don't want to freak users out. Our milestone
contract gives us some liberty but maybe we should still try to be
conservative with API changes. So that's why NOW is the best time to get
this done fast before the M1. The rest of the milestone series should not
have such massive API changes.

So let's just not panic about a day or two. (I say this because I am
panicing) I will dedicate my time to get this done ASAP. We even talked
about backing out etc with Emmanuel. But I think it would be an incredible
loss at this point. We're going to have to do this at some point. Why not
now and be done with it? Emmanuel the codec master is also equally involved.
It takes a lot to change when things have settled over the past 6 years in
this shared area. But do realize, we have lots of tests, and most of the
changes are not fundamental to the way the software works. The changes are
high level structural changes. We have not changed the way we encode and
decode, we've simply shifted exposed APIs. The new incongruities introduced
will disappear fast and things will align again. We need to be confident in
that. What worked before will work again.

Thanks for your patience.

Best,
-- 
Alex Karasulu
My Blog :: http://www.jroller.com/akarasulu/
Apache Directory Server :: http://directory.apache.org
Apache MINA :: http://mina.apache.org
To set up a meeting with me: http://tungle.me/AlexKarasulu


Re: svn commit: r1065085 - /directory/shared/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java

2011-01-29 Thread Stefan Seelmann
On Sat, Jan 29, 2011 at 6:48 PM,   wrote:
> Author: akarasulu
> Date: Sat Jan 29 17:48:52 2011
> New Revision: 1065085
>
> URL: http://svn.apache.org/viewvc?rev=1065085&view=rev
> Log:
> shared at least is building now without the DSML modules

Not really:
Tests run: 2148, Failures: 18, Errors: 85, Skipped: 2
http://vmbuild.apache.org/continuum/buildResult.action?buildId=2924&projectGroupId=6&projectId=207&projectName=Apache+Directory+Shared

May I suggest to
- copy the current trunk to a branch where you can continue the refactoring
- revert trunk to r1064845
?

Kind Regards,
Stefan


Re: Trunk instability

2011-01-29 Thread Emmanuel Lecharny

On 1/29/11 3:31 PM, Stefan Seelmann wrote:

Hi devs,

In the last days it happened that the trunk didn't build. Last night
and right now shared even doesn't compile. I really appreciate the
activities that happen to restructure the code. I also understand that
working on trunk is easier than branch and merge, I fully support
that. But for less-active people like me it is annoying, e.g. when I
want to spend two hours to work on the M3 build. So my question is how
long it will take till the trunk becomes more stable again? Isn't it
possible to ensure that the trunk compiles at least?

Yeah, sorry, there is no excuse for that.

Trunk was pretty much stable (well, it was compiling at least) those 
last days, but yesterday we made a mistake thinking that we would have 
enough energy to fix it in the evening.


That was a bad move, thank for pointing it.

We are now busting our back to get trunk building again...


--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com



Re: Trunk instability

2011-01-29 Thread Alex Karasulu
Yes you are 100% right. We made a wrong call going against our gut to work
in a branch. We both (Emmanuel and I) are on it to cleanup and stabilize.
This hopefully will be the last time we do anything like this.

Sorry about the inconvenience.

Alex

On Sat, Jan 29, 2011 at 4:31 PM, Stefan Seelmann wrote:

> Hi devs,
>
> In the last days it happened that the trunk didn't build. Last night
> and right now shared even doesn't compile. I really appreciate the
> activities that happen to restructure the code. I also understand that
> working on trunk is easier than branch and merge, I fully support
> that. But for less-active people like me it is annoying, e.g. when I
> want to spend two hours to work on the M3 build. So my question is how
> long it will take till the trunk becomes more stable again? Isn't it
> possible to ensure that the trunk compiles at least?
>
> Kind Regards,
> Stefan
>



-- 
Alex Karasulu
My Blog :: http://www.jroller.com/akarasulu/
Apache Directory Server :: http://directory.apache.org
Apache MINA :: http://mina.apache.org
To set up a meeting with me: http://tungle.me/AlexKarasulu


Trunk instability

2011-01-29 Thread Stefan Seelmann
Hi devs,

In the last days it happened that the trunk didn't build. Last night
and right now shared even doesn't compile. I really appreciate the
activities that happen to restructure the code. I also understand that
working on trunk is easier than branch and merge, I fully support
that. But for less-active people like me it is annoying, e.g. when I
want to spend two hours to work on the M3 build. So my question is how
long it will take till the trunk becomes more stable again? Isn't it
possible to ensure that the trunk compiles at least?

Kind Regards,
Stefan