[Mifos-developer] Volunteer work!

15 views
Skip to first unread message

Virender Singh

unread,
Apr 27, 2010, 3:36:21 AM4/27/10
to mifos-d...@lists.sourceforge.net
Hi,

I am interested in working on "Offline Collection Sheet Entry Prototype". I have more than a decade experience spread across java-j2ee, web and database technologies. I have great experience in using web frameworks such as webwork, struts and proprietary framework similar to Spring MVC, ORM framework - Hibernate, Spring framework etc. Currently I am working as a Staff Engineer, Software in Bay Area, CA.

Although I have not really worked on Mozilla plugins. But if required I can pick up quickly and be productive. Also I have heard of Google gears. Possibly we can use google gears with our application for offline collection.

Thanks,
Virender
 


Adam Monsen

unread,
May 19, 2010, 1:52:02 PM5/19/10
to Mifos Developer Discussions

Hi Virender,

We're interested in an offline collection sheet entry prototype using
HTML5.

Eric Schultz is another Mifos contributor that is interested in working
with you on an offline collection sheet entry prototype. Here's some
example code he's written:
https://mifos.dev.java.net/files/documents/5045/150354/offline.tgz

And Eric's comments on same:

> Attached is my example Ruby on Rails site illustrating how offline
> support can be used for Firefox. Here are a few notes:
>
>
> - To see the page, go to localhost:3000/people . This should show you
> a list of "names" saved into the database. A good way of understanding
> what offline support provides is to go through the following process:
> - After going to this page, make sure to tell Firefox you want this
> site to save information on your computer. After doing so, reload the
> page; all the names should be saved locally as well as on the server.
> - Turn offline mode on (File -> Work Offline). This simulates the
> experience of not having connectivity.
> - Reload the page, all the names should reload (but not in order,
> something that would be fixed for the project).
> - Add a new name using the form. The name should be added to the
> list. Note this is being done while working offline.
> - Turn offline mode off and then reload the page.
> - All the names should be there except for the one you just entered
> which hasn't been synced with the server.
> - Sync the name you added offline to the server. The name should be
> added to the list.
> - Reload the page. All the names should be there including the one
> you just synced.
>
>
> -Here's what's not great about this sample mainly due to the short
> time I had to do this (all of these can be fixed easily enough, I just
> didn't have the time):
> - Syncing doesn't happen immediately when you go back online. (An
> event callback for going online or when reloading the page after
> you've been offline could do this automatically)
> - The names are saved locally in a more or less random order due to
> the way localStorage is implemented. (Providing an field in the person
> objects saved locally for an order position could be used for saving
> order)
> - If you're offline, add a name, go back online and then sync
> without doing a reload the name will be displayed in the list twice.
> (Putting in an if statement to catch this situation to prevent double
> display would be a fix)
> - The temporary name for the id of a person object created offline
> wouldn't work if you created two people who had the same name. (Maybe
> use some form of hashing of the name and time created could be used to
> get around this. It's something I need to think about more.)
> - The code could be cleaner and done in a way that keeps the
> functions out of the global scope but for this sample, its not an
> issue. How that would be structured would need to be thought out more.
> - The code obviously should be in a separate javascript file but
> with the way Rails does authentication of form submissions, it was
> just more practical to do it like this.
> - onLoad() is just being called at the end of the html, not via a
> callback which would be a cleaner way of doing this I think.
> - It's not very pretty. :)
>
>
> - The Javascript is in the app/views/people/index.html.erb and the
> functions are documented.
> - I've tested this in Firefox 3.6 but I think it should work in 3.5 as
> well.
> - The list of all the items in the local cache displays in the Firebug
> console if you want to look at it.


signature.asc

Virender Singh

unread,
May 20, 2010, 12:23:47 AM5/20/10
to Mifos software development
Thanks Adam and Eric for the information. Let me get started on this task. I believe these threads are the only way to communicate in case of any queries/questions. One question I have is how Eric and I are going to sync up and divide the tasks (if required) between us.

Thanks,
Virender

------------------------------------------------------------------------------



Ed Cable

unread,
May 20, 2010, 12:42:41 AM5/20/10
to Mifos software development
Virender,

Glad to see you and Eric eager to take on this important project.  One thing we'll need to go about is capturing the requirements of current customers surrounding the offline collection sheet entry prototype.

Pradeep from Adhikar, an MFI in Orissa, India just sent them thoughts to the developer list on the thread "points for functional use in Mifos" capturing some of the offline data entry requirements needed by their remote branches where connectivity is poor.

Welcome to the community!

Ed Cable

------------------------------------------------------------------------------



John Woodlock

unread,
May 20, 2010, 12:52:57 AM5/20/10
to Mifos software development
Eric, Virender

I know the collection sheet area pretty well and developed the services that retrieve and save collections sheets in mifos (CollectionSheetService.java - interface).  

I think you may prefer a slightly extended version of 'retrieve' and maybe a couple of other handy services to make your life easier for off-lining (I'm not sure just guessing).  Don't be shy in asking for what you think you need or even for chats around the area.  

Basically, I'm happy to knock up any service that might make your life easier when interfacing with mifos collection sheets.

I'm not close to the requirements for the off-line collection sheet but what I gathered from reading the wiki page is that it should be as simple as possible.  

Have you got someone on the mifos side to answer product/process/business requirement questions?

I sort of viewed the functionality as maybe 
a) download a branch worth of collection sheets for the next week or so
b) complete them offline
c) send batches of completed collection sheets back to mifos

I think it would be worth having the high level offlining process clarified and I don't mean anything to do with the coding end of the offlining.

e.g. just a taster
Currently you can only retrieve collection sheets for the last scheduled meeting day (i.e. no future ones).  This is a current 'rule' but if you want future ones... no problem... we'll sort it out quickly (maybe offline collection sheets is a special user with privileges).  Whatever you do, don't go straight to the database for your data :)

The save collection sheet has lots of validation.  However you could process the same collection sheet repayment twice (in different saves) because the current system allows prepayments and there is no rule to say you can't do more than one repayment on the same day.

If the above comments don't mean much to you then you definitely need a business analyst allocated to help you work through these things.

Good luck though, its something that has been wanted for a while.

John

John Woodlock

unread,
May 20, 2010, 12:57:05 AM5/20/10
to Mifos software development
I see Ed beat me to the requirements bit.  I take too long to write emails :)

virender

unread,
May 25, 2010, 2:30:29 AM5/25/10
to mifos-d...@lists.sourceforge.net
I see couple of tasks here and have queries around them.

1. Prototype: This is to technically prove out the offline
functionality using HTML5.
a. What is the scope of prototype? Based on the comments from Eric's
mail, I feel the prototype is to a large extent complete.
b. The prototype has been implemented using ruby on rails. Is this the
technology that we are planning to use or we will use some other
technology. In later case maybe the prototype needs to be migrated to
the technology that we plan to use. (I see an active thread on
Architecture Evolution which might be relevant here.)

2. Requirements:
a. The requirements need to be clearly captured in a document. Yes I
would need a business analyst allocated to help me work through these
things. This is my first experience with mifos.

Thanks,
Virender

On May 19, 9:57 pm, John Woodlock <john.woodl...@gmail.com> wrote:
> I see Ed beat me to the requirements bit.  I take too long to write emails
> :)
>
> > On Thu, May 20, 2010 at 2:23 PM, Virender Singh <virendersin...@gmail.com>wrote:
>
> >> Thanks Adam and Eric for the information. Let me get started on this
> >> task. I believe these threads are the only way to communicate in case of any
> >> queries/questions. One question I have is how Eric and I are going to sync
> >> up and divide the tasks (if required) between us.
>
> >> Thanks,
> >> Virender
>
>
>
> --------------------------------------------------------------------------- ---
>
> --
> You received this message because you are subscribed to the Google Groups "Mifos Developer" group.
> To post to this group, send email to mifosde...@googlegroups.com.
> To unsubscribe from this group, send email to mifosdevelope...@googlegroups.com.
> For more options, visit this group athttp://groups.google.com/group/mifosdeveloper?hl=en.

------------------------------------------------------------------------------

--
You received this message because you are subscribed to the Google Groups "Mifos Developer" group.
To post to this group, send email to mifosde...@googlegroups.com.
To unsubscribe from this group, send email to mifosdevelope...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/mifosdeveloper?hl=en.

Adam Monsen

unread,
May 25, 2010, 9:22:27 AM5/25/10
to mifos-d...@lists.sourceforge.net
> 1. Prototype: This is to technically prove out the offline
> functionality using HTML5.

The business need is to show that the following can be done:
* entering collection sheet data offline
* syncing that data into Mifos when internet connectivity resumes

HTML5 is a suggestion. If it's easier to enter data in a spreadsheet
program like OpenOffice.org Calc or Microsoft Excel, you and Eric
Schultz might make a case for that. People who actually deploy and use
Mifos can (and should) also pipe up in this thread with suggestions on
how they'd like the feature to work.

http://www.mifos.org/developers/wiki/OfflineCollectionSheetEntryPrototype
mentions a Firefox plugin and XML--this should be changed to reflect
whatever technology feels right. In general, we use Java Web-based
technologies, which is why we are considering HTML5. The code must of
course also be maintainable and follow our coding standards.

Eric's code proves HTML5 on the client side. Much more work is
required to implement code in Mifos (or in a plugin / separate module)
that can accept and sync collection sheet data created while offline.

I'm not going to be able to provide hands-on mentoring for this
project. Others may be able to help--but I'm hoping you'll be able to
work more closely with Eric.

The OfflineCollectionSheetEntryPrototype wiki page is a good place to
continue to refine requirements.

Angshuman Sarkar

unread,
May 25, 2010, 10:30:17 AM5/25/10
to Mifos software development
Does IE support HTML5?
AFAIK,  IE8 doesnt support all aspects of HTML5. Also whether HTML5 code reliant on IE will run on other browsers is questionable.
regards
~angshu

Ed Cable

unread,
May 25, 2010, 11:46:23 AM5/25/10
to Mifos software development
Angshu,

This is a very good point. Many of our customers are using IE as their browser and Windows as their OS so whatever offline solution we develop it must be compliant with their needs.

These stats are rough but according to SourceForge, 78% of our downloads in 2010 came from Windows users.

From our web traffice for 2009 - nearly 45% of visitors came through IE browser (with the majority of those being on IE7.

Ed

------------------------------------------------------------------------------



Adam Feuer

unread,
May 25, 2010, 12:15:22 PM5/25/10
to Mifos software development
On Tue, May 25, 2010 at 8:46 AM, Ed Cable <edc...@gmail.com> wrote:
> This is a very good point. Many of our customers are using IE as their
> browser and Windows as their OS so whatever offline solution we develop it
> must be compliant with their needs.

Ed, Angshu,

I don't believe we need to support earlier versions of IE. IE8 and
later support HTML5:

http://msdn.microsoft.com/en-us/library/cc288472%28VS.85%29.aspx

For customers that want offline capability, I think they will use
Firefox or a different browser if necessary. Check this with Emily or
Kay if you need more info.

-adam
--
Adam Feuer <adamf at pobox dot com>

Emily Tucker

unread,
May 25, 2010, 12:22:55 PM5/25/10
to Mifos software development
> For customers that want offline capability, I think they will use
> Firefox or a different browser if necessary.

Yep, agreed.

virender

unread,
May 27, 2010, 4:26:30 AM5/27/10
to mifos-d...@lists.sourceforge.net
Thanks Adam for your guidance.

Hi Eric, I want to discuss in detail about the use case, possible
technologies and pros and cons of different technologies for this
module, and come up with our proposal. Currently I can visualize two
possible implementations for offline Collection Sheet Entry:

1. Using Offline web application support of HTML5: The user would use
the application (when offline) to enter Collection Sheet Entry data.
After an initial look on the use case on test server, I think in the
prototype we will have to also prove out how to provide contextual
drop downs for Branch Office, Loan Office and Center.

2. Providing xls sheet upload in the web application: The user could
upload an xls sheet through the web application, which will validate
the data and provide pages to correct the data if invalid and review
the data before submission. Although option 1 seems to be more user
friendly, one advantage I see using xls sheet upload is that
Collection Sheet Entry data can be uploaded in bulk. Currently using
web application, at a time we can enter data only for a particular
combination of branch, loan officer and center.

We can possibly think of providing only one of the above support or
both kinds of support in the application.

I would prefer IRC chat room discussion. Please let me know a time
when we can discuss in detail in the chat room. I am available after
7.00 PM till 1.00 AM PST on weekdays and almost through out the day on
weekends.

Thanks,
Virender

On May 25, 8:46 am, Ed Cable <edca...@gmail.com> wrote:
> Angshu,
>
> This is a very good point. Many of our customers are using IE as their
> browser and Windows as their OS so whatever offline solution we develop it
> must be compliant with their needs.
>
> These stats are rough but according to SourceForge, 78% of our downloads in
> 2010 came from Windows users.
>
> >From our web traffice for 2009 - nearly 45% of visitors came through IE
>
> browser (with the majority of those being on IE7.
>
> Ed
>
> On Tue, May 25, 2010 at 7:30 AM, Angshuman Sarkar

> <angs...@thoughtworks.com>wrote:


>
>
>
> > Does IE support HTML5?
> > AFAIK,  IE8 doesnt support all aspects of HTML5. Also whether HTML5 code
> > reliant on IE will run on other browsers is questionable.
> > regards
> > ~angshu
>

> > On Tue, May 25, 2010 at 6:52 PM, Adam Monsen <hair...@gmail.com> wrote:
>
> >> > 1. Prototype: This is to technically prove out the offline
> >> > functionality using HTML5.
>
> >> The business need is to show that the following can be done:
> >> * entering collection sheet data offline
> >> * syncing that data into Mifos when internet connectivity resumes
>
> >> HTML5 is a suggestion. If it's easier to enter data in a spreadsheet
> >> program like OpenOffice.org Calc or Microsoft Excel, you and Eric
> >> Schultz might make a case for that. People who actually deploy and use
> >> Mifos can (and should) also pipe up in this thread with suggestions on
> >> how they'd like the feature to work.
>

> >>http://www.mifos.org/developers/wiki/OfflineCollectionSheetEntryProto...


> >> mentions a Firefox plugin and XML--this should be changed to reflect
> >> whatever technology feels right. In general, we use Java Web-based
> >> technologies, which is why we are considering HTML5. The code must of
> >> course also be maintainable and follow our coding standards.
>
> >> Eric's code proves HTML5 on the client side. Much more work is
> >> required to implement code in Mifos (or in a plugin / separate module)
> >> that can accept and sync collection sheet data created while offline.
>
> >> I'm not going to be able to provide hands-on mentoring for this
> >> project. Others may be able to help--but I'm hoping you'll be able to
> >> work more closely with Eric.
>
> >> The OfflineCollectionSheetEntryPrototype wiki page is a good place to
> >> continue to refine requirements.
>
> >> --------------------------------------------------------------------------- ---
>
> > --------------------------------------------------------------------------- ---
>
>
>

> --------------------------------------------------------------------------- ---


>
> --
> You received this message because you are subscribed to the Google Groups "Mifos Developer" group.
> To post to this group, send email to mifosde...@googlegroups.com.
> To unsubscribe from this group, send email to mifosdevelope...@googlegroups.com.
> For more options, visit this group athttp://groups.google.com/group/mifosdeveloper?hl=en.

------------------------------------------------------------------------------

Angshuman Sarkar

unread,
May 28, 2010, 3:48:07 AM5/28/10
to Mifos software development
Just wanted to share this excellent comparison of different layout engines' support for HTML5. This maybe useful, while thinking of incorporating HTML5 features. http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5%29.

Trident is the layout engine for IE. Apparently, IE8 onwards they have support for web storage. Although in other aspects of HTML5 support, Trident (including IE9) is yet to support most of HTML5 support.

thanks and regards
~angshu

virender

unread,
Jun 2, 2010, 1:42:56 AM6/2/10
to mifos-d...@lists.sourceforge.net
Hi Adam et al.,

Based on the discussions on thread "Points for functional use of
mifos", I can visualize these different use cases in Collection Sheet
Entry use case:

1.Field Operator collects data from field using text sheets and then
goes to a
a) branch having electricity but not internet (Here the data is
transferred from text sheets to xls sheet. The data in xls sheet is
passed to a nearby branch having electricity and internet through pen
drive and/or cds)
b) branch having electricity and internet

2.Field Operator collects data from field using a laptop/desktop
a) Has internet connectivity during field operation
b) Does not have internet connectivity during field operation

3.Field Operator collects data from field using a mobile phone
a) Has only mobile connectivity during field operation
b) Has both mobile and internet connectivity during field operation

Talking only of 1 and 2 cases, 1 seems to be a practical use case and
2 an impractical one. I cant visualize a MFI rich enough to provide a
laptop to a field operator for collection purpose and a desktop does
not seem to be practical either.

I am not considering 3 case, which will take the discussion in an
altogether different path of providing another channel for the mifos
application. And should be considered separately.

The mechanisms for alternate (offline) collection sheet entry that I
can see are:
1. Using xls sheet to fill in the data and provide xls sheet upload
functionality in mifos web application
2. Provide HTML5 offline web application support in mifos web
application

I believe the xls sheet mechanism would be better because it will be
able to provide support for 1 a use case. HTML5 offline web app
support will not be helpful for 1 a use case. For 1 b the web
interface would suffice. Also using the xls sheet mechanism we can
upload the collection sheet data in bulk i.e. having different
combinations of branch, loan officer and center.

>From a code perspective we can use provide xls sheet upload field on
the "Bulk entry - Select Center" page. The user could either use xls
sheet upload mechanism or use the form to fill in the data. If xls
sheet is uploaded, we can show a page with errors to rectify if there
are errors in the data in xls sheet or the "preview and submit" page
if there is no error. We will have to add the code to parse xls sheet
using (Apache POI) but I believe we can reuse to a large extent the
code base for the currently implemented use case.

On the thread "Points for functional use of mifos" the support for xls
sheet is being requested by a client of ours not simply for this use
case but for others as well. I am not sure if this support is good for
all the use cases or not. But we can always implement on similar lines
for other use cases as well.

Please let me know your views.

Thanks,
Virender

On May 27, 1:26 am, virender <virendersin...@gmail.com> wrote:
> Thanks Adam for your guidance.
>
> Hi Eric, I want to discuss in detail about the use case, possible
> technologies and pros and cons of different technologies for this
> module, and come up with our proposal. Currently I can visualize two
> possible implementations forofflineCollectionSheetEntry:
>

> 1. UsingOfflineweb application support of HTML5: The user would use


> the application (whenoffline) to enterCollectionSheetEntrydata.
> After an initial look on the use case on test server, I think in the
> prototype we will have to also prove out how to provide contextual
> drop downs for Branch Office, Loan Office and Center.
>
> 2. Providing xls sheet upload in the web application: The user could
> upload an xls sheet through the web application, which will validate
> thedataand provide pages to correct thedataif invalid and review

> thedatabefore submission. Although option 1 seems to be more user
> friendly, one advantage I see using xls sheet upload is thatCollectionSheetEntrydatacan be uploaded in bulk. Currently using
> web application, at a time we can enterdataonly for a particular


> combination of branch, loan officer and center.
>
> We can possibly think of providing only one of the above support or
> both kinds of support in the application.
>
> I would prefer IRC chat room discussion. Please let me know a time
> when we can discuss in detail in the chat room. I am available after
> 7.00 PM till 1.00 AM PST on weekdays and almost through out the day on
> weekends.
>
> Thanks,
> Virender
>
> On May 25, 8:46 am, Ed Cable <edca...@gmail.com> wrote:
>
>
>
>
>
> > Angshu,
>
> > This is a very good point. Many of our customers are using IE as their

> > browser and Windows as their OS so whateverofflinesolution we develop it


> > must be compliant with their needs.
>
> > These stats are rough but according to SourceForge, 78% of our downloads in
> > 2010 came from Windows users.
>
> > >From our web traffice for 2009 - nearly 45% of visitors came through IE
>
> > browser (with the majority of those being on IE7.
>
> > Ed
>
> > On Tue, May 25, 2010 at 7:30 AM, Angshuman Sarkar
> > <angs...@thoughtworks.com>wrote:
>
> > > Does IE support HTML5?
> > > AFAIK,  IE8 doesnt support all aspects of HTML5. Also whether HTML5 code
> > > reliant on IE will run on other browsers is questionable.
> > > regards
> > > ~angshu
>
> > > On Tue, May 25, 2010 at 6:52 PM, Adam Monsen <hair...@gmail.com> wrote:
>
> > >> > 1. Prototype: This is to technically prove out theoffline
> > >> > functionality using HTML5.
>
> > >> The business need is to show that the following can be done:
> > >> * enteringcollectionsheetdataoffline

> > >> * syncing thatdatainto Mifos when internet connectivity resumes
>
> > >> HTML5 is a suggestion. If it's easier to enterdatain a spreadsheet

------------------------------------------------------------------------------

Udai Gupta

unread,
Jun 16, 2010, 9:53:54 AM6/16/10
to Mifos software development
Hi Virender,

I think scenario 2 is very much out of picture and scenario 3 is not
in scope. Here is my thoughts on scenario 1.

> 1.Field Operator collects data from field using text sheets and then
> goes to a
>  a) branch having electricity but not internet (Here the data is
> transferred from text sheets to xls sheet. The data in xls sheet is
> passed to a nearby branch having electricity and internet through pen
> drive and/or cds)
>  b) branch having electricity and internet

I think this is possible using anyone out of HTML5 and XLS.

HOW?

HTML5 : Stand alone desktop application like CollectionSheet forms
- Stores data locally when offline
- Sync/Upload the local data to remote service (Mifos Server) when online.
- Stored state can be exported in xml format and can be used at
online branch which would have same stand alone form allowing to
import those xml data and then sync/upload that to server.
- Forms will upgrade themselves on upgrade of Mifos on Server.

First thing would be creating Service at Mifos server side, may be
REST/JSON or a Service listening (using Mifos API as other plugins) to
handle calls of HTML5 forms.


XLS: Import/Export interface
- Export, download Collectionsheet as xls, could be created using a
report engine or using Apache POI
- Import, upload Collectionsheet and transaction gets imported as
other plugins
- There xls should have maintain versions as of plugin API


In both the cases most important thing is handling calls at server (plugin API),

You may want to start with finding out "what need to be done" for
extending API to support Collectionsheet import export in any of these
two scenario.

We should keep the approach as generic as possible also.
- Less code in core Mifos
- Add as much as good things you want to add in plugin service to handle things
- Less overhead to setup things (or upgrade)

You can start with

Bottom-to-top i.e. create prototype and create APIs as needed
or
Top-to-Bottom i.e. design API first and the create the prototype


git://mifos.git.sourceforge.net/gitroot/mifos/plugins
http://www.mifos.org/developers/wiki/PluginManagement

Cheers,
Udai

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

Reply all
Reply to author
Forward
0 new messages