Hello Folks,
This morning, after reading all the e-mails concerning this matter, I
just realized that we're all (including myself) misunderstanding some
basic concepts. First, I would like to state that Umit != Umit
Project, and I would like to ask everyone to make that clear when
writing anything that related to these two different things. I sugest
that everyone do that by calling simpy Umit the scanner interface, and
calling Umit Project the organization that holds all other projects
(Packet Manipulator, UMPA, Zion, BT, BT Sniffer, Quick Scan, Umit Web,
NSE Facilitator, etc.)
After saying that, and keeping that in mind, I simply can't read all
those e-mails and distinguish when we were talking about Umit or Umit
Project. I believe that that caused most part of the confusion, and
therefore I'll try to clarify everything in this e-mail and after that
I hope that we can finally come to a better understanding on the goals
of that restructuring. Of course that by saying come to a better
understanding doesn't mean to accept the original proposal as it is,
but it means that we'll be understanding it better to discuss without
any confusing feelings.
Umit Project goals:
Offer high quality software suite for network software development and
network administration. We tackle that by offering two main tools:
Packet Manipulator and Umit. Both can be used for the purposes I said.
The other softwares are part of these two, or are becoming part of it
in a near future. Of course we'll be creating other main tools to
stand aside Umit and Packet Manipulator in the future, but that's what
we currently have and I'll focus on discussing them.
After we have these two main softwares stable, we'll try to release
the Umit Suite, which will be a package with Umit and Packet
Manipulator inside. User's will have the option to download both tools
separately in the beginning and them we'll start measuring if people
really need them separated or if they prefer to download them together
(we'll do that by measuring download rate). If it is the case that
they need them separately, we'll keep distributing the following
packages: Umit Suite, Umit and Packet Manipulator. Otherwise, we'll
distribute only Umit Suite.
Umit Project has being basically a GSoC based organization, in the
sense that we depend on GSoC to grow faster and have new projects
developed. The reason for that is clear: money. None of our
contributors have a reasonable financial condition to dedicate on Umit
indefinitely without getting any money from it. That's absolutely
comprehensible as we all need that money to survive and keep going.
Umit Project's goal here is to create a meaning for affording our
contributors to work and get money from their work even outside GSoC.
In order to accomplish that, we'll need to:
1 - Create the Umit Project Organization officialy, have a HQ,
address, registers, etc.
2 - Create a business model to generate income and afford Umit
Project Organization growth.
Currently, I'm working on those two steps and the expected outcome is
to have a sustainable organization able to hire our contributors
(preferably participants of [U|G]SoC) to work on improving, perfecting
and creating new high quality software for the main goal of our
Organization, which is to "Offer high quality software suite for
network software development and network administration".
As far as I can see, this is the way to go for Umit to have it growing
as Apache did. I mention Apache because it is the most know example
for *this* situation (please, don't mix the Organization sense here
with restructuring package... try to forget that for a while now ;-).
Then, as soon as we create the organization and state a business
model, we'll state titles and responsibilities for every contributor,
propose new projects, improvements, etc. and put our hands on it for
more time than we currently do and getting money for that. I already
have a sketch of what will be our business model, but I can't disclose
it yet, because I need to perfect it and check some possibilities.
In order to achieve this goal, we foresee that Umit Project softwares
and contributors need to be gathered stronger than we currently are.
If all our softwares point to our Organization as Apache related
project does, Umit Project will be known better and more people will
come after the Organization's business model and the Organization will
be able to afford us all to work and improve Umit Project softwares.
That's what I was talking about when I mentioned Nash's Theory [4]. If
we focus on working toward the group, we'll all benefit from that with
a consistent result, but if we keep spliting things and thinking only
on our own piece of software or what we expect our own piece of
software without pondering on the impact of our decisions in the
group, we'll all crash and burn. That's a nobel winner concept.
So, I invite each and everyone to join me in this new endeavor! I'm
sure that this will benefit us all with both financial and recognition
odds. The plan is also to provide quota on that Organization for some
worthy contributors.
Now, concerning the restructuring goals:
First thing to know is that this restructuring is all about Umit
Project, and I consider Umit Scanning Interface as an equal player
aside all other pieces of software. Umit == UMPA == Packet Manipulator
== Quick Scan == Umit Web == BT == ... They are all pieces of software
held by the Umit Project Organization. As there is no such official
organization currently, they're all held by Adriano Monteiro Marques
(the copyright must be signed to a liable entity) and they will be
assigned to Umit Project Organization as soon as it is created. So, as
we're thinking for Umit Project Organization's sake, we'll consider
hereafter that Umit Project Organization owns all those pieces of
software. Umit Project owns those pieces for one reason: to integrate
those softwares to accomplish it's goal of "Offering high quality
software suite for network software development and network
administration".
So, all our decisions here should be in first instance focused on
"Offering high quality software suite for network software development
and network administration" and right after focused on other colateral
goals. I say that, because UMPA exists for Packet Manipulator's sake,
*but* it is also an awesome alternative for packet manipulation
library that can be used for whatever purpose outside Umit Project
world. That's the same for Zion backend: it will be developed for Zion
frontend's sake, *but* it will be certainly a good library to be used
outside Umit Project World. And we're happy to tackle our main goal
and offer colateral benefits! That's the goal of Open Source, UNIX
style development, layered development, and all those fancy practices
we try to apply in everything we do here.
I said that, because whenever you have to decide upon something in
your projects you must first consider attending to Umit Project's
goal, and then after, attend to secondary needs. Anytime you find
yourself implementing something at UMPA, think of Umit Project's main
goal, and then after that, on secondary goals. If we can meet both,
that's awesome. If we can't, than we must opt for Umit Project goals.
That's Nash Equilibrium applied in real life.
Does that minor the importance of UMPA, Zion or any other future
library? Of course it doesn't. Our main tools rely on those libraries,
and as such is true, we must focus on making the best for those
libraries. If our corner stones are not well stablished, how can our
building stand? In that sense, I would say that those underlying
libraries preceeds the main tools in importance, because they exists
so those tools can exist. If they don't, those tools won't either.
After pondering on all that, and Umit Project's goals, I realised that
if we keep working on things separately, we'll never consolidate the
Organization and actually succeed by being recognized by accomplishing
our goal of "Offering high quality software suite for network software
development and network administration". An example is RadialNet. It
is an awesome product, and thanks to João efforts during GSoC 2007, we
now have this important piece of software implemented. But, due to the
fact that it was integrated into Zenmap and that it has an standalone
version people simply doesn't know where it came from. And that's bad
for the purposes of this Organization. So I wondered how could we fix
this, and I realised that there are two things to be done:
1 - Avoid keeping things separated. No project that we work on should
be offered by other website, domain, etc. That's good for you and
that's good for Umit Project. Why is that good for you? It is good
because you have a wider volume of downloads for your tool/library, a
bigger community to test and support it, and that will reflect to Umit
Project brand, and as Umit Project brand grows stronger that will
reflect back to you. That's the way it works for Apache Foundation
(please, note once again that it is not package namespace related that
I'm mentioning this right now)
2 - Setting a namespace. That namespace is simply a way to state
where the piece of software (tool or library) came from, and will
certainly help us to keep things sane, because:
2.a - We can create a sane documentation structure, in which some
enters our documentation sub-domain, and under umit he can find every
project, instead of having to find if the code is inside umit, foo or
bar. That's intuitive, and keeps reference to the Umit Project
Organization.
2.b - Avoid conflicts. Someone, in another open source organization
may be working in a python module named pm, and that will conflict
with us if it happens that we provide our Packet Manipulator for a
user that have that other pm library installed. If we have umit.pm,
that will be harder to happen. I believe that this is the reason folks
from Java world adopt this namespace pattern, and also the reason why
Apache does that. I collected some links from some random projects
under Apache umbrela and I could verify that pattern [0], [1], [2], [3].
2.c - Standard. If we all follow this namespace, we'll all also have
the feeling that we have to follow the naming convention used by other
projects under umit. That's something that could work without stating
a namespace, I know that, but I noted that because it is a nice
consequence of adopting this namespace standard.
2.d - Determine the origin of that software. If other organizations
latter decide to integrate our softwares into their, they will have to
use our namespace and that will keep the reference to us wherever that
application goes also. An example is the case for RadialNet, once
again. If it was, since the beginning, umit.radialnet, we would have
helped to avoid part of that confusion.
For those reasons, I decided that restructuring the packages are the
best way to go right now. I know that it isn't perfect the way it is
right now and that we need further discussions in order to improve it
and define a final model for that. Everyone is welcome to
participate, but I want to first ask you to think that this is a
community and we must act professionaly here. Think twice before
writing something, and try to be pleasant and polite in all you do and
say. Criticizing isn't constructive anywere in the world. If you want
to construct something, start by putting your brick, not destroying
the other's brick. If you think that the whole thing is wrong, it
doesn't mean that you can come and hit it with a hammer. We're all
*mates*, and we can perfect our work and working environment by
sugesting, teaching and pleading. Flamewars are absolutely
*unaceptable* here, just as it would be inside a company. If we all
keep acting like this no one will bare fighting too long for Umit
Project. And we want this environment to be a bit different. We want
it to be creative and constructive, were people feel welcome and were
they learn a lot. I'm sure you also want to work in such a place.
Now that I explained my reasons, if you still is in doubt about the
goals of this transition, you're welcome to join in this discussion
and help us make Umit Project better today. But, please, if you're
going to argue try to be professional and not express personal
feelings, don't treat your mate as he was less smart than you, and try
to keep the whole thing inside the boundaries of what is best for Umit
Project and the possible technical limitations. I promise you all that
if you do that you will benefit a lot in both professional and
personal senses. That's valid for me also, and I'll try to keep
aplying this the best I can to construct a better Umit Project.
Concerning UMPA, Packet Manipulator and Zion:
From my point of view, there is no actual prejudice in this
restructuring for those libraries. If I see one, I would drop it,
because it is certainly against Umit Project's goals. It is good,
because as I said before, those libraries will became part of Umit
Project's namespace, and that's good to avoid conflicts and other bad
stuffs (remember the zen of python?).
A few e-mails ago I said that it would be good also for the sake of
UMPA or Zion using umit.core stuffs. I regret, and apologize for that.
It is indeed better that we keep those separated for secondary goals,
which is to benefit outside world with high quality libraries. That is
*ok* to not depend on umit.core for those libraries.
Concernig Packet Manipulator, it is a different thing. It should use
umit.core and higwidgets whenever possible as this dependency is
available for every plataform that Packet Manipulator will support,
it's small and can be easily bundled in our installers and packages.
Concerning the old hierarchy (umitCore, umitGUI, etc.):
I couldn't find any reference in my chat logs or email on that thing
that Guilherme stated on sugesting me in the past to change the
structure to something else. Although I'm not sure this conversation
hapenned, it may have hapenned indeed.That was the original structure
for Umit, and at the time he said he asked that to happen we were not
as much as we are today, we had other projects relying on that
structure and I didn't feel confortable on changing. If that
conversation ever hapenned, that is the probable motivation I can
imagine. But this time, it was a different picture: everyone was
working hard outside GSoC, then you guys proposed that and you did
that all together.
As a project administrator, my main concerns are to focus on a scope
that we can afford to accomplish. If I just keep throwing things from
my mind upon you or accept everything that everyone proposes we will
get stucked. That was the time for changing, and you did. Now, what I
asked was to continue using that namespace for the other projects to
come and to convert the others which are not in that namespace yet.
So, summarizing: the fact of not accepting something doesn't mean I
don't like you, or that I think you're wrong. I love when someone
comes with an idea, and I feel bad also because I need to refute some
of them.
Conclusion:
Here is our reality... we're working on becoming a real organization.
I don't know when that will actually happen, but we're working hard on
having that as soon as possible. It will certainly happen after [U|
G]SoC, because we need to focus on our commitments, but while you'll
be working on your SoC project, I'll be working on having things
rolling from the administration side and have the business model well
designed so we can start ASAP.
If after this e-mail you still have any concerns on the restructuring
and you are still against it, then you can argue. But please remember
that this is not a flamewar, and this is a working environment. Keep
things in a professional boundary, try to show creativity while
resolving conflicts and try to make our relationships and feelings
about each other better rather than worse while answering. I promise
this will be a way better place to work, and we'll all grow more
professionaly and personaly by doing this.
If you simply disagree with the current structure but you believe that
restructuring is needed in the sense of creating a new namespace for
the purposes I exposed, then let's start a new thread for designing
the new structure. *Everyone* is welcome to participate!
Kind Regards,
[0] -
http://struts.apache.org/2.1.6/struts2-core/apidocs/org/apache/struts2/package-summary.html
[1] - http://logging.apache.org/log4j/companions/component/apidocs/index.html
[2] - http://excalibur.apache.org/apidocs/
[3] - http://felix.apache.org/site/coding-standards.html
[4] - http://en.wikipedia.org/wiki/Nash_equilibrium#Notes
--
Adriano Monteiro Marques
http://adriano-marques.blogspot.com
http://www.umitproject.org
http://www.pythonbenelux.org
"Don't stay in bed, unless you can make money in bed." - George Burns
------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations
Conference from O'Reilly Media. Velocity features a full day of
expert-led, hands-on workshops and two days of sessions from industry
leaders in dedicated Performance & Operations tracks. Use code vel09scf
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Umit-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/umit-devel