PDA

View Full Version : Alice Source Code?


Tasty
05-04-2009, 03:50 PM
I would like to have some students add some functionality to Alice and I am wondering what the best code base should be. (BTW, how easy is it to submit code back into Alice?)

Any projections when 2.2 source code will become available? Should I fall back to 2.0?

Is 3.0 a possibility in the next month or so? Or should I stick with 2.x?

DrJim
05-04-2009, 06:54 PM
...how easy is it to submit code back into Alice?

While it has been done for Alice 2.0 - generally with significant help from CMU - it seems to be very difficult. At a minimum (IMO), it would take a small team of fairly experienced Jave programners - and then would be, at least, a one or two month project.

In addition - the available source code is quite complex and, due to the complex development history of Alice, there is almost no documentation.

I would suggest you search the forum for more details - there have been several threads on the subject. There is also some good background information on the main Alice page.

Tasty
07-21-2009, 07:41 AM
While it has been done for Alice 2.0 - generally with significant help from CMU - it seems to be very difficult. At a minimum (IMO), it would take a small team of fairly experienced Jave programners - and then would be, at least, a one or two month project.

In addition - the available source code is quite complex and, due to the complex development history of Alice, there is almost no documentation.

I would suggest you search the forum for more details - there have been several threads on the subject. There is also some good background information on the main Alice page.

Perhaps I have exceptional undergratudate students, but we are already
making great progress. We have ported Storytelling Alice to Linux; we
have been fixing bugs; we are well on the way to adding several new
features.(I think you under estimate students who have grown up with
Java. They can do much more than they are often given credit for.) We
are working on lessons and tutorials more appropriate for elementary
age children. We believe Alice has the potential to revolutionize CS
education and help solve the gender biases in CS. What frustrates us
is that we *want* to contributed back to the community. We *want* our
work to be meaningful. We *want* to help others have access and use
Alice. But we cannot give back because we are stuck with an obsolete
version of the code.

Have you given any thought to structuring development as an open
source project? You can make a read-only source repository available
and still have the current developers be gatekeepers to ensure that
the source code is still clean and maintainable. This is the approach
that the linux kernel and the apache project, among others, use to
harness the enthusiasm of individuals around the world. And obviously
it works and works well. Judging from the comments in the forum, there
are many people who would love to help Alice move forward but lack the
opportunity because the development model is too centralized.

Please give serious consideration to the suggestion of having a more
participatory development process. The open source model works. The
Alice license is amenable to it. External developers exist and are
already doing what we can to help Alice along. We want to contribute.
We just need a mechanism to do so.

DrJim
07-21-2009, 11:44 AM
... under estimate students who have grown up with
Java.

I probably do - but I would also classify someone like that as a "fairly experienced Java programmer."

Regarding the development process, you might want to take a look at some of the history of the project, especially the reasons that development of Alice 2.x was essentially stopped.

Honestlly, I didn't even realize the Storytelling Alice source code had been released - I'll have to take a quick look at it.

I think, when it's closer to being finished, you'll find Alice 3 to be closer to your needs - it's certainly closer to being true Java, pluse there is an active bug tracking system, something that was sadly missing with Alice 2.x. I'm not sure when the source code will be released - certainly the Beta code is still prettly buggy. Hopefully someone from the CMU team will comment a bit more on this and on the overall subject.

satovey
07-21-2009, 11:53 AM
Perhaps I have exceptional undergratudate students, but we are already
making great progress. We have ported Storytelling Alice to Linux; we
have been fixing bugs; we are well on the way to adding several new
features.(I think you under estimate students who have grown up with
Java. They can do much more than they are often given credit for.) We
are working on lessons and tutorials more appropriate for elementary
age children. We believe Alice has the potential to revolutionize CS
education and help solve the gender biases in CS. What frustrates us
is that we *want* to contributed back to the community. We *want* our
work to be meaningful. We *want* to help others have access and use
Alice. But we cannot give back because we are stuck with an obsolete
version of the code.

Have you given any thought to structuring development as an open
source project? You can make a read-only source repository available
and still have the current developers be gatekeepers to ensure that
the source code is still clean and maintainable. This is the approach
that the linux kernel and the apache project, among others, use to
harness the enthusiasm of individuals around the world. And obviously
it works and works well. Judging from the comments in the forum, there
are many people who would love to help Alice move forward but lack the
opportunity because the development model is too centralized.

Please give serious consideration to the suggestion of having a more
participatory development process. The open source model works. The
Alice license is amenable to it. External developers exist and are
already doing what we can to help Alice along. We want to contribute.
We just need a mechanism to do so.

Well, they may not like this but if the Alice team is
to closed for outside developers like your students to
contribute, then perhaps you should start your own
community.

The complexity of Alice which DrJim claims is much
to difficult for your students and any of us other
newBee Java developers to understand indicates
to me that the Alice team is a group of elitist
individuals who become offended at the mere
suggestion that commoners like us be given the
opportunity to contribute to the future development
of Alice.

I think that I may just begin looking for a different
program other than Alice.

satovey
07-21-2009, 12:20 PM
While it has been done for Alice 2.0 - generally with significant help from CMU - it seems to be very difficult. At a minimum (IMO), it would take a small team of fairly experienced Jave programners - and then would be, at least, a one or two month project.

In addition - the available source code is quite complex and, due to the complex development history of Alice, there is almost no documentation.

I would suggest you search the forum for more details - there have been several threads on the subject. There is also some good background information on the main Alice page.

That's quite egotistical of you, assuming that just because
they are students, they do not have the sophistication to
develop on the level of the Alice team.

Fact is, those youngsters probably have an easier time
grasping development concepts than you or I do.

I have been using PHP for several years now, and
I get quite tired of some boob behind a desk telling
me that I don't know how to write programs because I
didn't take a class, or I don't have experience because
I didn't get paid. Pp-lease!

Fact is, if Alice is as complex as you claim with so little documentation, (not commented in the source), it tells
me that the people who developed Alice to begin with
aren't very good ad writing programs.

I'm speaking out of experience here. I developed
a PHP CMS program and now that I want to update
the program I have to sort through all the code
and figure out what I did because I was to lazy
to comment on what the code does.

While no one else will see this code, it just goes
to show you that proper documentation is a big
part of programming. Especially when the code
becomes complex.

If the Alice team did not take the time to properly
document their code, then I am of the opinion
that these students are more suited for the job
than the Alice team.

I am now taking a Java class and have two advantages
over many of the students in my class. The experience
I have with PHP enables me to understand many of the
concepts, while my not having commented code in my
previous work gives me a greater motivation to ensure
that I do.

Documentation is essential to any programming project.
To claim a project is open source and yet does not have
enough documentation to enable others outside the
inner circle to contribute, is in of itself an oxymoron.

I had thought about contributing to this project myself.
But now I see that Alice is a waste of my time.

Thank you for clarifying the Alice teams view on
contributors.

That's all I have to say about that.

hgs
07-21-2009, 06:18 PM
Satovey, please slow down! DrJim did not say there were no students who could do this. It was an estimate, which he admits may be wrong, based on his experience of students. Skill levels may be assumed to follow a normal curve for any arbitrary group, and I took what he wrote to mean that the bulk of the curve, in his experience, would find this difficult. There will be high flyers, of course. That argument works for any distribution, really.

I've tried to build Alice 2.2 and failed. I've been programming for years, though my Java experience is minimal. There is almost no documentation on building this. I found no make file or ant file or build.sh file. Kudos to those who have done these modifications without such infomation. When I approached the CMU team about my workplace contributing anything, they were not interested.

It could be that the team is too small to want to get bogged down in other people's patches. It might be that they want to stay tightly focussed on their educational goals, and don't want to argue about rejections of patches outside those goals. They might not be content about communication within a project solely over the net, feeling that face to face contact between developers is too important. But actually, I don't know the reasons.

I would welcome a more collaborative approach, but then I've been taking advantage of GNU tools since about 1989, and have tried to give patches back where I can. Some are less happy with such an approach, and they have their reasons. The legal department may be involved in the decisions about the development process. I'm not part of the team so I don't know, but there will be reasons why things are how they are, and reasons other than elitism, etc. They will have research and educational goals associated with the Alice project, for a start.

As for Alice 3, I don't know what sort of constraints EA Games and Sun Microsystems may have put on the development process.

It would be nice if some of these aspects could be explained and/or clarified. But in the end, it is their project to manage as they see fit.

DrJim
07-22-2009, 02:32 AM
That's quite egotistical of you, assuming that just because they are students, they do not have the sophistication to
develop on the level of the Alice team.
....
Fact is, if Alice is as complex as you claim with so little documentation, (not commented in the source), it tells me that the people who developed Alice to begin with aren't very good ad writing programs.
....
If the Alice team did not take the time to properly document their code, then I am of the opinion that these students are more suited for the job than the Alice team.
....
Thank you for clarifying the Alice teams view on contributors.

Let me start with the last first. I am NOT a member of the Alice development team and in NO WAY do I speak for that team!

Second, the major reason (IMO) that the code for Alice 2.x was not properly documentend was largely historical. The code grew out of a virtual reality program with largely custom math - went through a purely scripting version as Alice 1 and migrated to the current graphical versions of Alice 2.x and Storytelling Alice.

As a result, the code is in bits and pieces, some of which are both custom and badly outdated. This WAS recognized by the Alice team, and the decision was to start with a clean slate to develop Alice 3.

Unfortunately, the man who was the driving force behind the project, Randy Pausch, developed terminal cancer at the same time. He obviously handled that as well as anyone could - and much better than most - focusing on using the time left as best he could (including writing the best selling "The Last Lecture.")

Since the Alice team was both short of manpower and lacking their key focal point, Alice 3 development was seriously delayed. I doubt (again, this is my opinion only) that if the team had realized how late Alice 3 was going to be, that they would have abandoned Alice 2.x so completely. But it happened. :(

Alice 3 Beta is here now, however - including a preliminary plug-in for Net Beans. I would recommend you look at the Sun pages, the Alice blog and the other sources referenced there. And for those who want to "participate" in the development process, I will note that - to date - the contributions to the bug reporting page have largely been just those of the Alice team. I suggest you report at least one or two bugs (there certainly are enough to go around :rolleyes:) and evaluate the response you get before complaining about Alice development being "closed."

Finally, I'd like to thank "hgs" for clarifying my comments on students. I clearly did not say that it was beyond the capabilities of capable college level CS students - and in fact I was thinking of typical middle school, high school and first year college students not intending to be CS majors, i.e. Alice 2.x's target audience, when I made those comments.

Having said that, I'll also note that one of major problem with Alice 2.x is the handling of multi-threaded code, especially the "event" commands. This, coupled with the complexity of managing a real-time, 3D user interface, creates both memory utilization and syncronization problems that require a relatively high degree of sophistication in programming - some of which (multi-threaded coding) is fairly specialized. I am not a novice when it comes to this type of programming - though my experiece is far more in project management than coding - and I have seen good programmers with advanced degrees still stumble over problems in these areas.

lanceA
07-22-2009, 09:31 AM
Let me start with the last first. I am NOT a member of the Alice development team and in NO WAY do I speak for that team!

Second, the major reason (IMO) that the code for Alice 2.x was not properly documentend was largely historical. The code grew out of a virtual reality program with largely custom math - went through a purely scripting version as Alice 1 and migrated to the current graphical versions of Alice 2.x and Storytelling Alice.
. . . . . . . . . . .


Well stated Dr. Jim:)

satovey
07-22-2009, 01:34 PM
you cannot get comfortable with norms. Especially when it comes to those middle school youngsters.

Sure, they're a good place to start but there are two problems with them.

First: someone comes along and shows his classmates what can be done. They in turn get motivated to reach his level and now, your norm is out of step.

Second: They tend to provide artificial measures of what people can and cannot do.

Have you ever seen a job posting where the employer required an associates degree to run a copy machine? I have. By requiring an associates degree, the employer is implying that an individual with basic educational skills cannot learn to run the machine. A premise that is far from the truth.

The only true measure that one can have of an individual's ability is by seeing what they can do.

No degree or lack thereof can determine what a specific person can or can not do. It may tell you how good that person is at learning information from a book. It may tell you how good that person is at taking tests. But it will not tell you where that person's particular skill level is at.

Programming requires three specific skill sets above the reading, writing and arithmetic basics:

Knowledge - much of which can be obtained for free by searching the net.

Imagination: A talent that is for the most part natural and can be easily developed by asking What if?.

Determination: The most frustrating thing about programming is the bugs that one will inevitably type into the code:
--- Misspelled key words, a missing semi-colon, improper syntax and of course, those logical equations that do not output what you expected.

I may have had a slight over reaction to what DrJim said. Those norms that people rely on so much however, came pretty close to killing me, and I'm not speaking metaphorically.

Yeah, norms are good to have as a starting point. But you will never know if that, not fitting the norms potential employee sitting in front of you is an exception to the rule unless, you give him or her a chance.

hgs
07-22-2009, 02:52 PM
And for those who want to "participate" in the development process, I will note that - to date - the contributions to the bug reporting page have largely been just those of the Alice team.

A fair point. Is it possible to see the list of bugs for Alice 3? I'm failing to find the relevant page. Submission is possible from within the program, but it would be nice to confirm that it worked by external means. Do you have to sign up for the Kenai project in order to see it?

Thank you.

gabe
07-22-2009, 03:25 PM
Is it possible to see the list of bugs for Alice 3? I'm failing to find the relevant page. Submission is possible from within the program, but it would be nice to confirm that it worked by external means. Do you have to sign up for the Kenai project in order to see it?

Bugs can be viewed at http://bugs.alice.org:8080/. Note that currently there are 2 bug databases -- one public and one private. The public one contains all bugs that are submitted through the web interface or through Alice 3's help menu > report bug option. The private one contains bugs that are submitted through the actual trigger of a bug within Alice. This is to encourage people to submit bugs without them worrying about their data being posted online for all to see.

hgs
07-22-2009, 04:12 PM
Thank you. Can you edit the "Sticky" on the Alice 3 forum to that effect? Thank you for the privacy feature as well.

After writing this, I found the login button with its message that it is not yet implemented, so this next paragraph can be safely ignored. Left in for completeness (some will have read this post already):

If I wish to see what happened to bugs that I submitted which are private, is there a way to do that? Given that I don't get to supply a password at submission time I doubt it, but if there's time to implement something like that it may be good to have.


Thanks again.

DrJim
07-23-2009, 08:03 AM
There are a few other nice features on the site that Gabe didn't mention.

First you can use a variety of filters to selectively search for things that are of specific interest to you. Very handy, since - as with all such sites, at least (IMO) the good ones - there are a lot of highly specialized postings that probably won't interest the average user. (They probably will be of major interest to a few, however. :) )

Second, you can add a comment to any bug report (at least the public ones). This can be very useful if there is a workaround for a specific problem (such as the default mouse move) and the problem itself hasn't been fixed. I really hope the community starts to use this feature more - I'm sure there are lots of opportunities here.

Finally, in addition to reporting bugs, you can also request specific enhancements for Alice 3 - or comment on other people's requests. I find just what the Alice team is proposing in these to be very interesting - and again would personally like to see wider participation here.

One of the difficulties with any site like this is the sheer volume of postings - it has to be computerized efficiently. It looks to me like the Sun/Alice 3 team has done a really nice job in that respect.

A final note re participation. The Kenai site has the start of a Wiki page but the only content is some (very useful, but hardware specific) postings from Dennis Cosgrove. Seems like this is an opportunity for someone to expand on.

DrJim
07-23-2009, 08:24 AM
Programming requires three specific skill sets above the reading, writing and arithmetic basics: Knowledge ...Imagination: ... Determination ... you give him or her a chance.

Three comments.

First, I strongly agree with the comment that a degree may or may not idicate the quality of programming an individual is capable of. One of the best programmers that ever worked for me had only a high school education - and one of the worst had a Ph.D.

Second, I believe there are two additional things that good programmers nearly always have - good judgement (an imaginative and determined programmer with poor judgement is usually a disaster) and experience with the problems being addressed. Regarding the second, I'll note that you don't drive a car well the first time you get behind the wheel and rarely hit a home run the first time you pick up a bat.

Finally, it might be nice to "give everyone a chance" - but in the real world this is seldom possible, or even desirable. (Do you really want me to do open heart surgery on you?) Thus, since when you hire someone, you usually have a job for him to do in mind - and need to "start somewhere" in choosing between candidates. Degrees, grades, personal impressions, experience, etc. are all good places to start.

Note - minor correction: On thinking back - make that "two of the best programmers that worked for me had only high school degrees ..."

gabe
07-23-2009, 09:30 PM
There are a few other nice features on the site that Gabe didn't mention.

Sometime soon I will make a post about how important the bug database is to improving Alice, but for now I welcome everyone to explore our bug database and make reports on bugs, as well as new things you'd like to see in Alice. We are using Jira as as our bug tracking software, so if there's something it offers that we have not enabled or implemented, point me towards some documentation and I'll try and set it up.

I love the forums, but it's easy for things to get lost due to the lack of organization. With our swanky bug database, nothing should get lost.

satovey
07-24-2009, 08:00 AM
Three comments.

First, I strongly agree with the comment that a degree may or may not idicate the quality of programming an individual is capable of. One of the best programmers that ever worked for me had only a high school education - and one of the worst had a Ph.D.


I am aware of an individual who declared his expertise in network administration. He did not have college education. His answer to the "what's wrong? and why is it doing that?" questions were: "It could be anything."

Conversely, the Phd they had before and subsequently rehired would always respond:
"I don't know, lets find out."

So what's the real difference? Those who excel in their field strive to do good job. They take pride and ownership in what they do.

I don't envy those who have to interview potential employees. It is very difficult to know who is underselling their skills, those who are exaggerating them, and those who are telling it like it is.

Perhaps the one thing programming has that other fields do not have that can benefit those who lack "experience", is participation in an open source project.

I quoted experience because to some, if you
have not been paid to do it, you do not have
experience no matter how long you've been
doing it. That attitude is just as dishonest as
the person who claims they can program and
do not know what a variable is.


Second, I believe there are two additional things that good programmers nearly always have - good judgement (an imaginative and determined programmer with poor judgement is usually a disaster) and experience with the problems being addressed. Regarding the second, I'll note that you don't drive a car well the first time you get behind the wheel and rarely hit a home run the first time you pick up a bat.


I agree.



Finally, it might be nice to "give everyone a chance" - but in the real world this is seldom possible, or even desirable.


Programming has open source communities
where people can hone their skills.


(Do you really want me to do open heart surgery on you?)


I have heard that same argument when
it comes to being a preacher and it doesn't
apply to the preacher nor does it apply here.

In the matter of the preacher, those same
individuals who make that arguement will
act contrary to what the Bible they claim
to be highly skilled in teaching, teaches.
(I speak from experience on this matter).

We all know that it takes years of education
and years of on the job training for an
individual to become a medical doctor let
alone a surgeon.

It does not take that many years for an
individual to become a preacher or a
programmer.

Take two individuals.

The first goes to college, learns programming
yet does not spend a whole lot of time writing programs.

The second doesn't go to college, yet spends
eight hours a day learning how to code and
write programs.

The one who will be highly skilled is obvious.
It is the individual who spends the most time
writing the code and honing the skill whether
he goes to college or not.

While we can gain much knowledge from
reading, the fact is, regardless the skill, if
it is not used, it is not honed.


Thus, since when you hire someone, you usually have a job for him to do in mind - and need to "start somewhere" in choosing between candidates. Degrees, grades, personal impressions, experience, etc. are all good places to start.


I agree that when you hire someone you need
a goal for filling the position with the best
qualified individual possible. And while a
degree can be in some cases beneficial
to that end, a valid skill test would be more
apt to determine the individuals skill level
than those prerequisites.

Getting back on track:
I do vaguely recall, unless I'm mistaken,
that this conversation began regarding students providing unpaid assistance to the development of Alice.

Alice: An open source project project that asks
for unpaid volunteers. A project that declares
itself to exist for educational purposes.

Just imagine the look on an employers face
if a potential employee fresh out of high
school dropped a resume on his desk with
three years of open source experience and
a verifiable list of code that said individual
wrote. That would be priceless.

It's thoughts like these that make me wish I
was a multimillionaire.

OK, back to reality.

DrJim
07-24-2009, 09:14 AM
Getting back on track:

I agree - this track should probably be moved to another section, probably "The Lounge." But I have to say you brought up some very interesting issues, which for a real education need to be addressed.

As far as the employer's reaction - been there / done that, complete with URLs which checked out well. Unfortunately, I had absolutely no need for another web designer at that point :( - so still no go.

sureyya
07-29-2009, 03:15 PM
How is it possible to run the source code? What I'm interested in is dumping some output from Alice runs to a file or to standard output (which I'll redirect to a file) for further investigation. Is it possible to do so?
- S

gabe
08-06-2009, 12:58 PM
Alice 2.2 source code is now online (http://alice.org/index.php?page=downloads/download_alice2.2).

stevejohnson1
09-29-2009, 02:37 AM
i completely agree with jim....well said buddy...!