Alright, I''m trying something

I really want to create a server scheduleing/calandar plugin for OpenFire/Spark. Mostly because it would do my company a great service, but also because it would add a real great feature to Openfire/spark they may be user to other people out there. Here’‘s what I’'m thinking about making. I created this image in photoshop to help people visualize my ideas.

http://s115.photobucket.com/albums/n291/uronacid/?action=view&current=Untitled-2 copy.png

I want to make a scheduler to schedule times when you will be away from your desk or at an appointment. I want to system to be simple.

±Right-click on a desired starting time, drag to the ending time, and let go to have a label and presence selection window appear.

-Left click appointments to edit them.

-Give the user the ability to make reoccuring apointments by select mutipule days in the calandar with the shift or cntrl keys.

-Also, I don’'t think that a users presence should change after an appointment or timeslot ends. Instead the ending time would be used to show other users what time an individule is expected to return.+

I’'m very interested in starting the project as soon as possible. I will be purchasing java books, and reading abotu this stuff as much as possible. I am very interested in tackling this project. Post in this thread if you are interested. I will check back on the 23rd, as I am on vacation for the next 9 days.

Message was edited by: JKeal_DRGroup

Id be interested to see this happen too. It will obviously require client (smack+spark) support as wells as server support.

Some random thoughts:

Use the pub-sub service, if possible so you arnt creating a complete protocol from scratch. pub-sub seems like a good use anyway. That would at least allow for sending/receiving event information between clients. The clients just need to know what to do with that data.

For calendar storage, I see two options: you can store it locally (the Openfire database) or you can use some external service. I can see the internal storage being handy for the types of systems that use the native embeded DB (ie- they dont want to run a bunch of other services) but for the larger customers, they will likely already have some calendar solution in place and would like to integrate with it. So I suggest a plugin style interface (yes, a plugin within a plugin). That way to begin with you can do internal storage because its likely easier from the get-go, but allows additional storage mechanisms to be implemented (Exchange, Lotus Notes, ical, google, imap, etc) Personally I think it would be cool to see decent ical integration, since that would work with nearly everything, but that would be a significant amount of work.

I would suggest using an already implemented calendar framework for the Java objects if you can. Calendars can seem simple at first, but can quickly become a complex beast. If someone already did it (and did it well), I would just go with it. Ive not found any, but I havnt looked real hard either.

If you are looking for some help, Im willing to volunteer some of my time, though I dont think I have enough free time to drive the project (I still have some other Openfire things I want to get done).

Whilst that all does sound great, I’'d expect it to be a lengthy project.

I was also considering how difficult it would be to do for your average (i.e my) corporate environment.

If ‘‘all’’ that was required is change status based on my availability then the majority of the features mentioned above would not be required. I already have a corporate calendar solution in Ms Exchange. I don’'t really want to modify my calendar using Spark because Outlook/OWA does a decent job of that already.

So, I reckon this could be done in 1 of 2 ways:

  1. A Spark plugin that could talk to a running copy of Outlook and get my schedule. Assumes MS Windows as a client and a running copy of Outlook.

  2. An Openfire plugin which automatically sets user status based on their diary. I know this is possible, as Office already implements an interface to do it. Applications like Sharepoint use this feature to interface with Outlook/Exchange and use the free/busy schedule in Exchange to work out whether individuals are busy or free. The beauty of that is that you’'re able to get basic availability of every user in the organisation without much access rights (just a MAPI connection to any server in the exchange org).

However, all of this relies on using Windows DLL’‘s from Java, and I’'m just not sure what access you get from Java to the OS.

Id be interested to see this happen too. It will obviously require client (smack/spark) support as wells as server support. Some random thoughts: Use the pub-sub service, if possible so you arnt creating a complete protocol from scratch. pub-sub seems like a good use anyway. That would at least allow for sending/receiving event information between clients. The clients just need to know what to do with that data. For calendar storage, I see two options: you can store it locally (the Openfire database) or you can use some external service. I can see the internal storage being handy for the types of systems that use the native embeded DB (ie- they dont want to run a bunch of other services) but for the larger customers, they will likely already have some calendar solution in place and would like to integrate with it. So I suggest a plugin style interface (yes, a plugin within a plugin). That way to begin with you can do internal storage because its likely easier from the get-go, but allows additional storage mechanisms to be implemented (Exchange, Lotus Notes, ical, google, imap, etc) Personally I think it would be cool to see decent ical integration, since that would work with nearly everything, but that would be a significant amount of work. I would suggest using an already implemented calendar framework for the Java objects if you can. Calendars can seem simple at first, but can quickly become a complex beast. If someone already did it (and did it well), I would just go with it. Ive not found any, but I havnt looked real hard either. If you are looking for some help, Im willing to volunteer some of my time, though I dont think I have enough free time to drive the project (I still have some other Openfire things I want to get done).

I don’‘t know what the pub-pub service is, you’'ll have to explain that to me.

As far as calandar storage goes: I think we should use an external database for scheduling. Access would be fine. This database isn’'t going to be so large that access cannot handle it. With the data base we could have 3 tables. One for events that occur only once, One for events that are repeated on a daily basis, and One for events that occur on a weekly basis (one day a week). Each table might have three colums and maybe a dual primary key.

Table1

user(primary key) - timeslot(primary key) - description

I would like to see calandar integrations, but the whole point of the calandar is to automate presense. I just don’'t see how we could integrate exsisting calandars into the spark-calandar if we are unable to select a presence from the program we are trying to integrate it with. Unless we could develope plugins for those programs to give a user the ability to select a specific presence within that program it would be a waste of time. Just a nifty usless feature.

example:

I use outlook. I create an appointment in outlook. How can I select a desired presence for the start of that time slot?

I completely agree with your comment about calandars becoming complex. I know that there are jCalandars out there that are pretty easy to use. I have surfed the web far and wide only to find a few.

http://www.toedter.com/en/jcalendar/ (is completely free)

Whilst that all does sound great, I’'d expect it to be a lengthy project. +
I was also considering how difficult it would be to do for your average (i.e my) corporate environment. If ‘‘all’’ that was required is change status based on my availability then the majority of the features mentioned above would not be required. I already have a corporate calendar solution in Ms Exchange. I don’'t really want to modify my calendar using Spark because Outlook/OWA does a decent job of that already. +
So, I reckon this could be done in 1 of 2 ways:
+
1) A Spark plugin that could talk to a running copy of Outlook and get my schedule. Assumes MS Windows as a client and a running copy of Outlook. +
2) An Openfire plugin which automatically sets user status based on their diary. I know this is possible, as Office already implements an interface to do it. Applications like Sharepoint use this feature to interface with Outlook/Exchange and use the free/busy schedule in Exchange to work out whether individuals are busy or free. The beauty of that is that you’'re able to get basic availability of every user in the organisation without much access rights (just a MAPI connection to any server in the exchange org). +
However, all of this relies on using Windows DLL’‘s from Java, and I’'m just not sure what access you get from Java to the OS.
+
It probably will take a bit of time, you’‘re right about that. I think it will be worth it though. Also, I have a lot of time to devote to this project. My company is giving me time durring my work schedule to devote to this. The purpose of this calandar is not to replace outlook, or any of the other calendar software available. I’‘m looking to replace programs like this one “http://www.sysoftware.com/”. Employee tracking software. Instant messenging programs are already similar to employee tracking software. They offer a list with with the status of each empolyee. They also display contact information, but they do not offer scheduling features. Also, I don’'t know about anyone else, but I know that I need this to work on more than one type of OS. on one thing at a time. First thing is first. We need to focus on a scheduling calandar, once we have that completed. Turn it into something more.