Hi Fitz,
Great to see so much motivation from you :)
Just don't forget that GSOC coding period is not started yet and that
we still have no idea how many slots Google will give us and who we
will select this year (this will be 22nd April).
On Tue, Apr 12, 2016 at 10:03 AM, fitz <leefits(a)gmail.com> wrote:
Hello Dear devs,
I am Fitz Lee, a CS Master's student from the University of Chinese Academy
of Sciences. I'm very interested in this project, XWiki authenticator
Android. I have submitted the final application for Gsoc2016
(
https://drive.google.com/file/d/0ByNx4jI3PEaNaGRxMkt0cUU3SjA/view?usp=shari…
).
In order to furtherly understand the authenticator project, I have developed
this android demo (
https://github.com/fitzlee/SampleSyncAdapter), which is
based on SampleSyncAdapter Google Android Sample. By deeply Analyzing the
SampleSyncAdapter source, I have implemented the material design(>=4.4) ui,
the synchronization of contacts and the access of other apps . But some
functions in google
server(https://samplesyncadapter2.appspot.com/sync)
can't work well so that the client-to-server Synchronization function can't
be tested and verified, and it needs to cooperate with server. In my github
repository(https://github.com/fitzlee/SampleSyncAdapter), I also show my
analysis about the authenticator, synchronization, contactmanager, sign-in,
sign-up and the whole process of the app. And now I am trying to develop the
XWiki android authenticator project.
Please consider my application, and I am eager to join this project and make
a contribution. It's my first time to join the open source organization for
enhancing my teamwork and technical skills. Please give me a chance, and I
will try my best. If there is anything I can do for this project , I will be
very happy.
Here, i also have some questions which confuse me during my development:
1. contact synchronization
(1)Situation:
Now I have implemented the server-to-app synchronization with the modified
SampleSyncAdapter (
https://github.com/fitzlee/SampleSyncAdapter), and this
demo can download contacts from server to local sqlite3 database. Also I can
edit and modify the local contact and from logcat I have seen the dirty
contacts being sent to the server. But the synchronization of server can't
work so that I can't test this function.
(2)Problem:
Moreover, by analyzing the XWiki android authenticator in the repository
(
https://github.com/xwiki-contrib/android-authenticator). I have seen that
some function has not been implemented, like getDirtyContacts and
getRawContact in ContactManager. And the process of synchronisation in
SynAdapter_onPerformSync also confuse me, like "ensureXWikiGroupExists>>
XWikiConnector.getUsers>> ContactManager.updateContacts>>
ContactManager.updateStatusMessages". I think it should be this process,
like "ContactManager.getDirtyContacts>> NetworkUtilities.syncContacts>>
ContactManager.updateContacts". Therefore, I don't know whether there is
something wrong with me. Could you give me some advice?
Yes contact synchronization in
https://github.com/xwiki-contrib/android-authenticator is not the
beginning or an experiment I never had time to finish so it's more
pseudo code that never worked yet.
2. A test xwiki server and test user which may help me a lot to develop this
project for testing.
I have analysed the sampleSynAdapter and implemented some function, for
example material design(>=4.4), version support(2.3 with v7 library) and the
synchronisation from server to the android local sqlite3
database(contacts2.db) using ContactManager.But when client sends some dirty
contact data to server, the synchronisation of server in google appengine
can't work well so that I can't test my app's synchronisation. And the
SampleSyncAdapter server also can't provide me more apis,like signing up and
other necessary function.I have tried to upload a python server to google
appengine,but failed because of the incompatibility between the source code
by python version 2.5 and the cloud platform by 2.7 version.
Question: Please if possible, could i have a test user and some server apis
in xwiki server, or maybe i should write a test server by myself?
I see two main possibility for this:
* the first thing you should do I think is download the jetty/hsqld
all in one distribution on
http://www.xwiki.org/xwiki/bin/view/Main/Download and use that as test
server (you have admin right in it and can create as many test users
or groups as you want)
* as soon as you want to test volume and compatibility with existing
instance of XWiki you can register on
http://www.xwiki.org which
contains 1519 users right now
3. requirement
I think this project mainly has the following requirements.
(1) sign in
it is easy,just like my analysis of android SampleSyncAdapter, including the
server connection with XWikiconnector and the account added by
AccountManager
Don't reduce too quickly the level of difficulty on this side, one
thing you will have to work around is that standard XWiki instance
have no token based authentication so you will have to hack an as safe
as possible BASIC auth based implementation of Android authenticator
(which mean users of the authenticator can't just ask for the token
and connect to XWiki server).
(2) sign up
may also need some other api, like getting a list of xwiki user, adding
friends which can be synchronized in the local phone contacts. Also other
activitie may be possibly added, therefor the authenticator app will be very
complex.
(3) synchronization of contacts
(4) edit the contact
(5) access by other apps
Question: Are there more other requirements in this app, like adding
friends(general person) and creating new xwiki account(administrator)?
maybe it will cause more demands and be more complex.
There is no real "friends" system in standard XWiki and anyway the
main use case for this application being intranets you usually want to
simply synchronize all users of the wiki since those are your
coworkers. An improvement would be to allow the user to select a list
of XWiki groups to synchronize if you don't want the whole wiki in a
big company or public wiki like
xwiki.org for example.
4. support version and ui
(1) ui design
* material design >=4.4 with the support library support-v7
(2) support version
* The ui design can support the lowest 2.3 version and the android
sampleSynAdapter can also support 2.3 version. So I think our authenticator
app can support the lowest 2.3 version if needed.
Question: Maybe there are somethings I have not noticed, so this conclusion
is wrong, please give me some advice? Is that OK?
Supporting the lowest possible version is always nicer for users but
according to
http://developer.android.com/about/dashboards/index.html
no need to go beyond 4.1.
4.4 seems to still be a bit too recent and might left behind too many users.
5. account permission
In AccountGeneral.java there are two permissions , like
AUTHTOKEN_TYPE_READ_ONLY, AUTHTOKEN_TYPE_FULL_ACCESS. Could you tell me
what the permissions main? other xwiki instance access limits ? Account
manager? And where should I use them?
You have many right on XWiki (and any extension can add more) plus it
depend what part of the wiki you are accessing.
But since you don't have any concept of token associated to an
application in standard XWiki the application will have whatever right
the user have so I guess you can return AUTHTOKEN_TYPE_FULL_ACCESS all
the time in the Android authenticator (then the application will have
to deal with 403 errors).
I am looking forward to hearing from you. Thank you very much.
Best Regards
Fitz Lee | UCAS Master
Email&Skype: fitz.lee(a)outlook.com
Github&Homepage:
https://github.com/fitzlee
University of Chinese Academy of Sciences(UCAS)
Shijingshan District, Beijing, China
--
View this message in context:
http://xwiki.475771.n2.nabble.com/Questions-Gsoc2016-XWiki-Android-authenti…
Sent from the XWiki- Dev mailing list archive at
Nabble.com.
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Thomas Mortagne