Melita Mihaljevic
<melita.mihaljevic AT gmail DOT com>
Homepage/blog/wiki URL::http://fly.srk.fer.hr/~gizmo/ ; http://mihaljevicmelita.blogspot.com/
- Country (born / living in)
- Croatia/Zagreb
- Academic experience
-
For the Automata, Formal Languages and Compilers I worked with a group of people on implementing a compiler for the part of C programming languages. I designed and implemented Lexical analysis. The documentation (written in Croatian ) is provided on: http://fly.srk.fer.hr/~gizmo/faks/3.godina/AFJJP2/Doku3.pdf
- studying
- doing seminary on Selenium
- Software projects you have already participated in
- I didn't have a chance to participate any opensourced or non opensourced project
- Other stuff you like to tell here
-
As a member of Crotian Linux user group I worked on a localization of open source code and translating a book about Linux: http://lokalizacija.linux.hr/perl/main.cgi?choice=stats&username=&rand= , http://www.linux.hr/modules/phpwiki/index.php/PrijevodKnjige
Experience Level
- Experience in coding in general
- started 1996,
- Experience in Python coding
- started 2005, 400 hours
- Experience in HTML
- started 2002, 300 hours
- Experience in CSS
- started 2007, 40 hours
- Experience in Javascript
- started 2006, 150 hours
- Your favourite programming language(s), best first
Python,JavaScript, C, HTML, SQL, C#, Prolog,
- Tools you use for development
- (up to 5, most used first)
- vim editor
- firebug
- gcc
- dddd
- web developer
- Did you already do full day work (8h/5d) over some weeks on some software project yet?
- N
- If not, is your motivation good enough that you think you can do that for MoinMoin?
- Y, I'm ready to work hard just to complete my desirable project.
Project pages
Project(s) you apply for and your ideas for them
Project (2 - Extending moin's groups to LDAP and other external sources.)
The goal of the project is to extend group support inside MoinMoin project. I've chosen this particular project because there is still no LDAP or any other kind of centralized ACL management support in the project. I think it's very useful project Adding this would make user, group and ACL management much easier and less error prone. Currently grouping is done only by wiki pages with use of page_group_regex.
At the beginning of development I'm planning to spend 2 weeks for discussion with assigned mentor about possible implementation and gathering additional materials. During that period I'm planning to get familiar with currently moin groupping and start designing a solution for LDAP support. During the project my focus will be on extending moin's groups to LDAP/AD and to database. I plan to discuss with assigned mentor about extending moin's groups to configuration file and possibly implement that. After getting familiar with moin grouping I will start designing and implementing.
As a result of the project I plan to implement api for mapping "read users" from LDAP to moin, and to implement the same for database. Databases that will be supported are MYSQL, Postgress, Sqlite and Oracle. Also my job will be to refactor all the group/dicts/lists code to a more generic approach. My zero task will be refactor and clean-up that code (wikidicts.py). I will write unit tests for every stage of my project -py.tests and fix bugs (http://codespeak.net/py/dist/test.html).
I divided the project in 2 stages (stage zero and stage one) and every stage into several tasks.Also I add a possibility of stage two, maybe not as a gsoc part of project but as a part of my project generally. Tasks and brief description what I plan to do and how long will it take to implement and test is listed hereafter:
STAGE ZERO: refactor wikidicts
- refactoring all the groups/dicts/lists code to a more generic approach
- have some api to some generic groups/dicts/lists code that has another backend api to more simple backend plugins for misc group sources
- refactor all groups and other user data to make the storing user data to a new backend storage easier when it will be implemented
- have some api to some generic groups/dicts/lists code that has another backend api to more simple backend plugins for misc group sources
- implement more generic auth plugin authenticating a user again a db server (similar as ldap does)
- deal with performance problem - doing sql/LDAP queries take time
- for the initial solve the problem without caching, but if that wouldn't be fast enough implement caching and the way how to detect when authoritative source changes groups (periodically checking is one idea)
- test with py.tests
- TOTAL : 3-4 weeks
STAGE ONE: Implement api for mapping "read users" from LDAP to moin and to implement the same for DBs
1. Extend moin's groups to LDAP/AD
- design and implement support for LDAP/AD
- With this task I plan to make a support to permit only members of certain LDAP groups to log on or edit content
- develop and implement API for LDAP access, reading LDAP settings , managing groups, etc - consider of extending existing LDAP support
- the api (plugin) will provide mapping LDAP user settings to regex for group definitions in MM
- define rules for mapping - how to map in which cases
check if SomeGroup has an equivalent in ldap and read users form ldap directory (enable requests in form of : request.user.may_read or may_write for example)
- TOTAL: 2,5 weeks
- write unit tests and test support for LDAP/AD groups
- I'm planning to spend a lot of time for testing and fixing bugs
- for testing I will need to set up a LDAP/AD server
- testing done by using py.tests
- TOTAL 3 weeks
2. Extend moin's groups to database
- design database - user to group mapping in database table
- extend database with two tables
- users (UID, username, hashed password)
- groups (GID, group name)
- extend existing objects in database for ACL support
- ACL set: read, write, revert, admin and delete
- like in LDAP support use the same format of reading users from groups (as named before: request.user.may_write)
- database access by using psycopg
- testing done by using py.tests
- set up all supported databases
- TOTAL: 3 weeks
I wouldn't include the stage to into my proposal project for gsoc because it depends on another gsoc project (implementing a new storrage backend), but I will leave a possibility to finish complete project and to make a complete api mapper after the new storage backend project is finished.
STAGE TWO: adding support for storing complete user data to a new storage backend
- use generic groups/dicts/lists code from the zero stage
- currently no ideas in which format should the user data be or how to implement- think about that when the new storage project id done
- if the new storage backend will e done during gsoc I will probably add to my generic model new methods for exporting user data.
The result of my project will be groups/dicts/user -wikidicts.py code and authentication of users in a more generic apprioach and api for storing all reading users from LDAP and databases. The api (plugin) will provide mapping moin - LDAP/databases ACL rules without renaming LDAP definitions or database relations and changing MM regexp definitions. If I got one of the proposal projects I would like to continue doing on them after GSOC. And I'm prepared for sometimes more than 8h/5d work on this project just to me it work properly and not disappoint my assigned mentor. Also , I would like to finish stage two after the gsoc.
Discussion
Just a question. Does ldap support utf-8? can one use e.g. chinese names?
- As specified for the LDAP Version 3 protocol, all character data that is passed between an LDAP client and a server is in UTF-8.
Messages to me
Hi Melita,
I did an example and the config of my ldap wiki setup on my homepage (and some useful links). -- ReimarBauer 2008-05-18 10:11:56
- related